0

開発中の大規模な .NET アプリケーションの構造を作成しようとしています。次の 3 つのプロジェクトを作成する予定です。

DataAccessLayer
BusinessLogicLayer
UserInterfaceLayer

2 つの質問があります。

  1. エラーをテキスト ファイルに記録するなど、3 つの層すべてに共通の機能を使用するとどうなりますか。循環依存は .NET では許可されていません。Utilities という 4 番目のプロジェクトを作成するのが最善の方法だと思います。
  2. すべてのプロジェクトまたはユーザー インターフェイス レイヤーに .config ファイルがありますか (すべての構成パラメーターを引数として BLL および DLL のコンストラクターに渡します)。
4

4 に答える 4

2

エラーをテキスト ファイルに記録するなど、3 つの層すべてに共通の機能を使用するとどうなりますか。循環依存は .NET では許可されていません。Utilities という 4 番目のプロジェクトを作成するのが最善の方法だと思います。

横断的な懸念は、通常、4 番目のアセンブリに行き着きます。ただし、ロガーの場合は、開発者が慣れ親しんでいる既存のフレームワークの 1 つを使用してください。たとえば、nlog または log4net です。

循環依存は悪臭 (高い結合または低い結合) であり、どこでも許可されるべきではありません。

他の誰かが Dependency Injection を提案しました。これは、結合を減らして保守性を高める優れた方法です。ここに記事を書きました: http://www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

すべてのプロジェクトまたはユーザー インターフェイス レイヤーに .config ファイルがありますか (すべての構成パラメーターを引数として BLL および DLL のコンストラクターに渡します)。

構成の抽象化を作成したいと思います。のようなものIConfigurationRepository。次に、構成が web.config に保存されているか、他の場所に保存されているかは問題ではありません。

于 2012-11-12T12:20:27.667 に答える
0
  1. 単一のロギング プロジェクトを作成し、それを他のすべてのプロジェクトに追加することもできますが、私の意見では、3 層アーキテクチャをモデル化することは、最初に論理的に分離された 3 つの層をモデル化することを意味するため、それぞれにロガー構成ファイルを追加する必要があります。それぞれを個別に開発およびテストできます。
  2. 特定のレイヤー構成設定がある場合 (たとえば、1 つまたは複数のレイヤーを異なるサーバーに配置して、強力なパフォーマンスの制約が必要な場合)、レイヤーごとに異なる構成ファイルを使用します。同じ構成設定を使用している場合、ユーザー インターフェイスで 1 つの構成ファイルのみを使用できますが、ユーザー インターフェイスを変更するとすべての設定を置き換える必要があり、これは深刻な問題になる可能性があることに注意してください。
于 2012-11-12T11:45:54.427 に答える
0
  1. 4 つ目のプロジェクトを持つことは 1 つの解決策です。もう 1 つは、それをデータ レイヤーに配置し、UI レイヤーがそれらにアクセスできるようにするメソッドをビジネス レイヤーに配置することです。

  2. 各設定は 1 か所だけにする必要があるため、UI レイヤーが適しているようです。

于 2012-11-12T11:18:46.730 に答える
0
  1. はい、ロギング用に別のプロジェクトを作成します。その新しいプロジェクト内でLog4Netを使用することをお勧めします。

  2. 構成設定を最上位 (UI レイヤー) に保持し、必要なものを他のレイヤーに渡します。

あなたはDIについて言及していません。私は間違いなく DI を使用します - それが優先されるべきです。

于 2012-11-12T11:19:27.040 に答える