2009-06-12 13 views
0

私は、大規模な.NETソリューションを持っていて、コンソールアプリケーションやWebアプリケーションのような他のいくつかのプロジェクトタイプで使用されるデータアクセスプロジェクトをいくつか持っているとします。私はそれらの両方にデータアクセスプロジェクトを使用できるようにしたいが、データアクセスアプリケーションは設定ファイルから設定を取得する必要があります... Webプロジェクトの場合はweb.config、コンソール/サービスアプリケーションの場合はapp.configです。これは、2つ以上の別々の設定ファイルで設定を維持する必要があります。 中央の場所に置くには、どのような方法が最適ですか?.NET:集中分割設定

私はそれがまだ軽量であることを望んでいます。そのため、構成データベースが過度に使用されている可能性があります。私はおそらく、それぞれのプロジェクトがビルドされたときに、ビルドプロセスによってweb.config/app.configにコピーされる集中設定ファイルを考えていますが、別のベストプラクティスをどこかで逃していないことを確認したかったのです。私もmachine.configについて考えましたが、可能な限り構成を分離して、特定のマシン上の他のアプリケーションを混乱させないようにしたいと思います。そして、machine.configを使って、ビルドスクリプトが自動的にそのファイルをリモートで更新する方法を見つけなければなりません。

答えて

1

私たちのより重要なアプリのほとんどは、同じ設定情報のいくつかを共有する必要のある複数のウェブとコマンドラインアプリを備えた多方面の獣です。 1つの良い方法は、コンフィグレーション要素のconfigSourceプロパティを乱用して、アプリケーション固有の部分から「中央」部分を取り除くことです。

2

可能な解決策のカップル:

  1. すべてのソリューションは、(例えば、Webサーバ/農場)、あなたは一般的なデータアクセスを保存するためにmachine.configファイルを使用することができ、同じ場所に展開されようとしている場合接続文字列などの設定。

  2. 共通の設定を別の設定ファイル(たとえばcommon.config)に分割し、メインの設定ファイルのconfigSource属性を使用して共通の設定ファイルを指定します。何らかの種類のソース管理を使用している場合は、プロジェクト間で共通ファイルを共有できるようにする必要があります。そのため、その変更を使用するすべての人がそれを選択します。これについて

0

方法:

  • データ・アクセス・プロジェクトの設定ファイルにあなたの "DEV /ステージング/生産" 設定を定義

  • クライアント(アプリ)何を定義してみましょう彼らが使用したい設定の種類、例えば

... = DataAccess.UserGateway.Create(DataAccess.Config.Dev);

と異なるコンフィグの名前の文字列定数は、一箇所だけで定義されている - DATAACCESSモジュール。

一方、私はbuild/deploy-timeでconfigsをコピーするためにたくさんあります。とてもきれいです。

関連する問題