2012-04-23 10 views
0

私たちはcで書かれたアプリとC++でいくつかの新しいモジュールを持っています。それはLinux上で動作します。アプリはすでに制作中です。アプリケーションの設定:あなたの意見が必要です

  1. アプリの共通設定はありません。今、私たちはアプリ全体の設定をするつもりです。だから、私たちはこれに少し時間を費やし、私たち自身(まだ実装されていない)を設計しました。 、write_Config、read_config:

  2. 基本的にXMLで設定を維持することを考えた私たち(app_config.xml)ファイルと、別のXMLファイルで、このためのポリシーを定義する(app_config_policy.xml)

  3. はいくつかのAPI(EXを書きますverify_config、notify_configなど)。これらのapiの名前は自明です。必要に応じてさらに情報を提供することができます。

  4. ポリシーXMLファイルは、特定の設定の制約を定義し、長さ、種類など

さて、質問は:同様の要件を持つアプリケーションがあるかもしれません。私はこれをさらに進める前に、いくつかのエキスパート・インプットを取り、彼らの見解を進めることを考えました。

  1. すでにこれを行うオープンソースライブラリはありますか?私はlibconfigが1つだと学びましたが、重くてスレッドセーフではありません(私たちに話しました)?

  2. 他の選択肢(オープンソース)あなたはすべて上記の共通の問題について提案していますか?

  3. 同じような雑多な考え方やデザインビューはありますか?

ありがとうございました! Santhosh

答えて

0

config xmlファイルを検証するには、スキーマを使用する必要があります。

0

昨年、XML以外の構成言語に関する情報を提供し、構成ファイルの内容のスキーマ検証を提供しました。あなたがこれに従うかどうかわかるように、不満足な反応しかありませんでした。link

したがって、スキーマの検証が必要な場合は、nfechnerにXMLのスキーマ言語を調べる必要があることに同意します。より有名なものへのリンクは、oneまたはtwoのウィキペディアの記事にあります。

あなたは既にXMLを使用することにコミットしていない場合は、あなたが(うち、私はメンテナ午前)Config4*をチェックアウトする場合があります。これは、Config4 *が少なくともXMLスキーマよりも使用しやすいスキーマ検証言語を提供するため、これについて言及します。 (私はスキーマ検証を持って発見しのみ他の非XML設定言語はYAMLであるが、その機能は、C/C++アプリケーションには不便である、唯一のJavaやRuby APIを経由して提供されています。)

Config4 *提供C APIではなくC++ APIを使用していますが、APIの便利なサブセットの周りにextern "C"ラッパーを配置するだけで十分だと思います。

スレッドセーフティについてあなたのアプリケーションがシングルスレッド初期化中にコンフィギュレーションファイルを読み込み、その後に複数のスレッドがコンフィギュレーションオブジェクトをクエリできるようにした場合、複数のスレッドが読み取り専用操作を呼び出すため、 。しかし、私はすでにそれを知っていると思うし、他のスレッドが同時に更新操作を呼び出している間に、構成オブジェクトに対してクエリ操作を呼び出すスレッドがあると予想しているため、スレッドの安全性について尋ねています。アプリケーションで使用すると予想されるいくつかのマルチスレッド・ユース・ケースの例を挙げることができれば、スレッド安全要件に関連するアドバイスを提供するのに役立つかもしれません。フォールバックの手法として、使用するコンフィグレーションライブラリのAPIの回りに同期デリゲートラッパーを実装することができます。例えば(擬似コード):

int config_lookup_int(const char * name) 
{ 
    int result; 

    get_mutex_lock(); 
    result = raw_api_lookup_int(name); 
    release_mutex_lock(); 
    return result; 
} 

最後に1つ。お探しの機能notify_configを詳しくご説明ください。

関連する問題