4

WCF ベンチマークを実行するには、交換されたデータのサイズを取得する方法が必要です (すべてのヘッダー (TCP も含む)/圧縮/...)。

それはより大きなベンチマーク(異なるバインディング、エンコーディングなども試します)にあるので、 wiresharkのようなものではなく、プログラムで行う必要があります。

これを行うためのフックはどこかにありますか?

一部のテストを自動化するために、すべてのチャネル/バインディング/エンコーダーがプログラムで作成されます。

私はいくつかの方法を見つけました( http://devlicio.us/blogs/derik_whittaker/archive/2011/02/03/how-to-intercept-a-wcf-message-to-track-message-size.aspx )が、私はテキスト以外のデータで機能するかどうかはわかりません。またはhttp://zamd.net/2008/08/15/calculating-wcf-message-size/ですが、開始方法がわかりません(カスタムエンコーダーで動作するかどうかはわかりません

4

2 に答える 2

2

MessageInspectorを作成します。これにより、すべてのメッセージのイベントが表示されます。 http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.clientruntime.messageinspectors.aspx

WMIパフォーマンスカウンターを使用できる場合があります http://msdn.microsoft.com/en-us/library/ms735098.aspx

于 2012-06-19T13:43:06.053 に答える
0

2つのオプションがあります:

  • WCF拡張性を使用します。これは通常、より多くの作業になり、さまざまなwcfの状況を考慮する必要があります。
  • Wiresharkのような帯域外ソリューションを使用する

前者を好む理由はわかりません。wiresharkを試してみることをお勧めします。自動化できると確信しています。とにかく、wcf内でこれを実行したい場合は、カスタムメッセージエンコーダーを実装して、ネットワーク上にあるバイトのサイズを計算する必要があります。これは、他のエンコーダーをその中にラップする汎用エンコーダーである必要があります。これは一般的なエンコーダーの例です。エンコーダーアプローチはメッセージサイズのみを考慮し、その上にあるフレーミング(HTTPヘッダーなど)は考慮しないことに注意してください。これが、wiresharkがあなたのケースに適していると思う理由です。

于 2012-06-19T13:40:16.213 に答える