System.Diagnostics でトレース機能を使用していて、ある種の問題に遭遇しました。問題なくアプリケーションにトレース自体を実装しましたが、いくつかのベスト プラクティスについて苦労しています。もっと簡単に言えば、方法は理解できますが、理由は理解できません。
クライアントがWebブラウザーであるRESTfulクライアント/サーバーアプリがあり、サーバーは他の場所で呼び出しを行いません(たとえば、他のサーバープロセスへのWCF呼び出しはありません)。
私が理解しようとしている概念は、アクティビティの概念です。トレースは概念的にグループ化されているため、特定のアクティビティのすべてのトレース メッセージを表示できます。1 回のページ読み込み中に、さまざまなクラスを多数呼び出して、データベースからデータを取得したり、データに対してビジネス ロジックを実行したりします。
アクティビティの粒度はどれくらいですか? 「ページの読み込みは単一のアクティビティ」または「各メソッド呼び出しは新しいサブ アクティビティ」の両極端ですか? それとも、おそらく中間にあるものでしょうか: 「データ アクセス呼び出しとページ読み込み時のビジネス ロジック呼び出しは両方ともサブ アクティビティであり、それ以外はすべてメイン ページ読み込みアクティビティの下にあります」?
もう 1 つの概念は、CorrelationManager.StartLogicalOperation
メソッドの概念です。繰り返しますが、これの実装はトリッキーではありませんが、それを使用する理由を理解するのは難しいです。これにより、一連のトレースを logicalOperation 名の下にグループ化できるようです。ただし、ここにはトレース アクティビティ グループの概念との重複があるようです。これら 2 つの概念を一緒に使用する必要がありますか? なぜ/どのような状況でどちらを使用しますか?