次のように、いくつかの小さなフィールドと 1 つの大きな Xml 文字列を含むオブジェクトを WCF 経由で送受信する必要があります。
[DataContract]
public class ServiceResponse
{
[DataMember]
public int Id { get; set;}
[DataMember]
public string Xml {get; set;}
}
HTTP ベースのバインドを使用する必要がありますが、サービスは内部であるため、コントラクト dll は共有されます。Xml 文字列は数 MB に達する可能性があります。このサービスでは、クライアント マシンを介してサーバー間でデータを転送できるため、最初のクライアント呼び出しで Xml の大きな塊を取得し、それをローカル ディスクに保存し、次に 2 回目の呼び出しでデータをディスクから別のボックスの別のサービス インスタンスに転送します。 . したがって、クライアントは文字通りデータを保存して転送し、ロジックや処理はまったくありません。
これらのオブジェクトを送信するための最も効率的なメカニズム、つまりペイロードが小さく高速なメカニズムが必要です。
いくつかの質問:
- ペイロードで Xml の大きなチャンクを送信する最も効率的な方法は何ですか?
MemoryStream
a を使用してネットワーク経由で送信する前にオブジェクトを a にシリアル化し、サービス操作で型をパラメーターとしてBinaryFormatter
使用する利点はありますか?Stream
- 数 MB のメッセージの場合、
Streamed
転送モードを使用すると違いはありますか?
Protobuf-net のようなサードパーティのライブラリは使用できません (残念ながら)。
アドバイスよろしくお願いします...