現在、階層化アーキテクチャについて学んでおり、そのような設計にロギング システムを追加する方法を考えています。
ここで、3 つのレイヤーがあるとします。
- プレゼンテーション層
- ビジネスレイヤー
- データ アクセス層
そして、上位層のみが 1 レベル下の層を認識していると仮定します。たとえば、プレゼンテーション層はビジネス層を認識していますが、その逆は認識していません。
一般的なロガー クラスはどこに実装する必要がありますか?
- 別のプロジェクトに実装すると、すべてのレイヤーが共通のアセンブリに依存することになり、それが良い場合とそうでない場合があります。これは依存性注入で克服できますが。
- 最上位レベル (この場合はプレゼンテーション層) に実装すると、単一責任の原則に反することになります。
ロギング メカニズムを実装するのに適した場所はどこですか?
そして、それを実装した後、そのようなシステムを使用する方法は何ですか?
- キャッチされていない例外をキャッチし、例外の説明をどこかに保存できることが理想的です。
- どこで例外をキャッチする必要がありますか? 最上位レイヤー (プレゼンテーション レイヤー) でキャッチする必要がありますか? それとも別の場所で捕まえるべきですか?
- そして、ロガーをクラスに渡すために使用する方法は何ですか? のようなインターフェイスを受け入れるプロジェクト内のすべてにメソッド/コンストラクターのオーバーロードを追加することは理にかなっています
ILogger
か?
ご覧のとおり、私はこのテーマについてかなり混乱しています。現在の仕事では、エンタープライズ アプリケーションを設計しているにもかかわらず、エンタープライズ アプリケーション設計/レイヤード デザインに関する知識を持っている人は誰もいません。したがって、正しい方向性を示す助けがあれば幸いです。