5

私はすでに .net プロジェクトに取り組んでいますが、この質問はどのプログラミング言語/フレームワークにも当てはまると思います。

問題は、クラス ライブラリの構成を読み取るための優れた方法は何かということです。次のオプションを考えることができます。

  1. アプリケーション ドメインの構成ファイルから読み取ります。たとえば、.net Web アプリの場合、web.config から読み取ります
  2. このクラス ライブラリ用に作成された特定のカスタム ファイルから読み取ります。クラス ライブラリの xml ファイルを作成し、そこに構成を配置します。
  3. 呼び出し元は、 (クラス コンストラクターを介して)クラス lib に必要な構成を渡す必要があります。したがって、この場合、class lib は構成ファイルから直接読み取るのではなく、呼び出し元が必要な情報を送信することを期待します。

アイデア/好みはありますか?

4

2 に答える 2

3

驚くべきことに (または当然のことながら?) 状況によって異なります。

開発者の観点からは、ライブラリ API を介して呼び出し元が構成を提供することは、ライブラリのホスト方法に依存せずに、さまざまなコンテキストでライブラリを使用できるため、望ましいことです。アプリ ドメインまたはプライベート ファイルからプルできる構成ローダーを提供することは大変なことであり、構成が実行されない場合に合理的に使用可能な既定値は、健全性を保つためのものです。

オペレーターの観点からは、開発者が提供した設定をオーバーライドできることも便利です。これは、環境では意味がないためです。ただし、開発者が意図的に環境の形を強制しようとしている場合、これがどのように機能するかはわかりません。

最良の妥協点は、 log4net が行うように、3 つの可能性すべてを許可することだと思います。

于 2012-09-27T19:28:14.223 に答える
2

標準的な慣行はこれのようです

アプリケーション ドメインの構成ファイルから読み取ります。たとえば、.net Web アプリの場合、web.config から読み取ります

通常、ライブラリに固有の構成セクションがある場合は、このプラクティスのサンプルがたくさんあります (nhibernate、log4net、spring.net など)。このセクションでは、ファイルをできるだけ短くするために別のファイルを指定できます。たとえば、次のようになります。

<log4net configSource="Config\log4net.config.xml" />

編集

@Jeffrey Hantinに同意しますが、実際には、実行しようとしている構成のタイプに依存します。

構成ファイルに「動的」設定を配置して、柔軟性と容易な変更を可能にする必要があります。nhibernate マッピングなどの他のいくつかは、「流暢な」方法で (コードによって) 適用するのにより適しています。

流暢な構成はタイプミスの可能性を減らしますが、常に適切であるとは限りません。

于 2012-09-27T19:21:39.310 に答える