WCFを介して送信する(複合化された)オブジェクト(dataContract)のサイズを計算することは可能ですか?私が必要とするのは、要求と応答オブジェクトの両方のサイズを計算することです。これをwinformアプリケーションで行う必要があります。WCFを超えるパッケージ(datacontract)のサイズを計算しますか?
多分オブジェクトをセリ化してから合計サイズを取得できますか?
WCFを介して送信する(複合化された)オブジェクト(dataContract)のサイズを計算することは可能ですか?私が必要とするのは、要求と応答オブジェクトの両方のサイズを計算することです。これをwinformアプリケーションで行う必要があります。WCFを超えるパッケージ(datacontract)のサイズを計算しますか?
多分オブジェクトをセリ化してから合計サイズを取得できますか?
オブジェクトを手動でシリアル化/逆シリアル化できます。シリアライズと長さの取得の簡単な例を次に示します。これを自動的に実行する点で(コンソールアプリで)コードを呼び出す
[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呼び出しに言います。
私はメッセージのインターセプタが役立つと思います。このエンドポイントの動作をエンドポイントに追加し、httpwebrequest/responseを処理できます。
詳細については、Google WCF Message Interceptorをご覧ください。役立つ情報がたくさんあります。
希望すると、これが役立ちます。
私はメッセージ傍受者について知っていますが、配線を通過するパッケージの実際のサイズを計算する方法は見つかりませんでした。 – Banshee
こうして......あなたはWCFフレームワークをハックする必要があると思われますか?私が知る限り、WCFは実際のネットワークトラフィックを監視する方法を提供していません。独自のバインディング要素を作成するのはどうですか?そして、あなたがsslを使用する場合、データは暗号化されるでしょう...だから、あなたはWCFから解決策を見つけようとします。Windows Hook?私はWCF(そしてすべての.netソケット)がIOCP下層レイヤを使用することを心がけています。ここでいくつかのハックを試みることができます。 –
svctraceviewerを使用してactivity and the messageの両方をトレースすると、実際のメッセージがWCFを介して流れることがわかります。しかし、このツールはあなたに全体のサイズを取得しない可能性があります。
This postが参考になる場合があります。
はい、私はそれについて知っていますが、他の多くの情報がそこに記録されており、その流れに従うことは難しいです。 – Banshee
私はconfig [here](http://www.davintryon.com/)についてブログしました。メッセージで何が起きているのかを簡単に確認できるはずです。 –
これは、メッセージのサイズを取得しません。なぜなら、WCFはDataContractをエンベロープ内にラップして、ワイヤを通過するからです。場合によっては、エンベロープはメッセージより大きくなることがあります。 –
私は完全に同意しました。上記は、最初に要求された「オブジェクト」のサイズを計算するだけです:) – SeanCocteau
はい、私はこれを考えましたが、あなたが言ったように、正しいサイズではありません。 – Banshee