大規模な範囲で再利用できるように設計されたエンタープライズライブラリを作成する場合、クロスカッティングの設計上の懸案事項を凍結することがよくあります。今日私は、再利用可能なエンタープライズライブラリ内でトレースと診断を行うための最善の方法の分析に取り組んでいます。.NETでSOLID方式でライブラリレベルのトレースと診断を実装するにはどうすればよいですか?
.NETのBCLを見てみると、ロギングと診断はフレームワークのほんの一部ではないようです。
たSystem.Diagnosticsは、実行トレースのために使用されるタイプのトレース・ファミリを、持っている、とのapp.configフレンドリーソーシングおよびサブスクリプションを持つ(リスナーのために。)それは言われて、私は一般的にapp.configを憎む傾向にありますむしろ、魔法の設定文字列に付属する緩やかに型付けされた呪文を避けてください。
System.Diagnostics.Tracingには、イベントベースの診断に使用されるEventSourceタイプファミリーがあります。これは私のタイプですが、ロギングポリシーはドメインライブラリよりもアプリケーションの関心事なので、ライブラリで使用するかどうか、またどのように使用するべきかはわかりません。
私には理にかなっている一つの可能性は、単に私の基礎ドメインライブラリーでは、いくつかの共通ロギング・インターフェースを定義し、アプリケーションが周囲の文脈パターンのいくつかの並べ替えを経由しての実装を注入できるようにすることです
が、これのために私自身のロギングタイプを定義します不要です。
これは私の考えをエコーします。私は工場を過度に使うのは好きではありませんが、コンポーネントの縫い目を交差させることは、しばしば望ましい使用法を実施するのに便利です。 –
消費者がロガーの実装を提供していなければ、ライブラリは動作するはずですので、ロギングは依存性であってはなりません。今、あなたはこの状況をどのように処理するか考えることができます。 – vendettamit