2012-02-29 11 views
2

WCFを介して送信する(複合化された)オブジェクト(dataContract)のサイズを計算することは可能ですか?私が必要とするのは、要求と応答オブジェクトの両方のサイズを計算することです。これをwinformアプリケーションで行う必要があります。WCFを超えるパッケージ(datacontract)のサイズを計算しますか?

多分オブジェクトをセリ化してから合計サイズを取得できますか?

答えて

0

オブジェクトを手動でシリアル化/逆シリアル化できます。シリアライズと長さの取得の簡単な例を次に示します。これを自動的に実行する点で(コンソールアプリで)コードを呼び出す

[DataContract(Name = "Person", Namespace = "http://www.woo.com")] 
    class Person 
    { 
     [DataMember()] 
     public string Name; 
     [DataMember()] 
     public int Age;   
    } 

 Person p = new Person(); 
     p.Name = "Sean Cocteau"; 
     p.Age = 99; 

     DataContractSerializer ds = new DataContractSerializer(p.GetType()); 

     using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) 
     { 
      ds.WriteObject(ms, p);     
      // Spit out 

      Console.WriteLine("Output: " + System.Text.Encoding.UTF8.GetString(ms.ToArray())); 
      Console.WriteLine("Message length: " + ms.Length.ToString()); 
     } 

     Console.ReadKey(); 

は、あなたがメッセージにこれを追加し、独自のCustom Bindingを作成する必要が伴うことが各WCF呼び出しに言います。

+0

これは、メッセージのサイズを取得しません。なぜなら、WCFはDataContractをエンベロープ内にラップして、ワイヤを通過するからです。場合によっては、エンベロープはメッセージより大きくなることがあります。 –

+0

私は完全に同意しました。上記は、最初に要求された「オブジェクト」のサイズを計算するだけです:) – SeanCocteau

+0

はい、私はこれを考えましたが、あなたが言ったように、正しいサイズではありません。 – Banshee

0

私はメッセージのインターセプタが役立つと思います。このエンドポイントの動作をエンドポイントに追加し、httpwebrequest/responseを処理できます。

詳細については、Google WCF Message Interceptorをご覧ください。役立つ情報がたくさんあります。

希望すると、これが役立ちます。

+0

私はメッセージ傍受者について知っていますが、配線を通過するパッケージの実際のサイズを計算する方法は見つかりませんでした。 – Banshee

+0

こうして......あなたはWCFフレームワークをハックする必要があると思われますか?私が知る限り、WCFは実際のネットワークトラフィックを監視する方法を提供していません。独自のバインディング要素を作成するのはどうですか?そして、あなたがsslを使用する場合、データは暗号化されるでしょう...だから、あなたはWCFから解決策を見つけようとします。Windows Hook?私はWCF(そしてすべての.netソケット)がIOCP下層レイヤを使用することを心がけています。ここでいくつかのハックを試みることができます。 –

0

svctraceviewerを使用してactivity and the messageの両方をトレースすると、実際のメッセージがWCFを介して流れることがわかります。しかし、このツールはあなたに全体のサイズを取得しない可能性があります。

This postが参考になる場合があります。

+0

はい、私はそれについて知っていますが、他の多くの情報がそこに記録されており、その流れに従うことは難しいです。 – Banshee

+0

私はconfig [here](http://www.davintryon.com/)についてブログしました。メッセージで何が起きているのかを簡単に確認できるはずです。 –

関連する問題