2011-07-27 18 views
2

私はWCFでの知識が限られているだけでなく、WCF経由でバイナリデータを送信しているので、この質問はやや基本的かもしれません。WCF経由でバイナリデータを送信する:バイナリとMTOMのエンコーディング

BinaryMessageEncodingBindingElementMtomMessageEncodingBindingElementでデータを送信することの違いを知りたいと思います。 Large Data and StreamingのMSDNからこのページを読んだ後に、どのアプローチをいつ使用するのかはまだ分かりません。

また、小さな質問:添付ファイル付きのメッセージとMTOMメッセージは同じですか?

+2

ほとんどの場合、相互運用性についてです。相互運用可能なサービスをご希望ですか? Mtomを使用します。 WCFクライアントからのみサービスを呼び出したいですか?バイナリメッセージのエンコードを使用します。 –

答えて

8

MTOMは、マルチパートのMIMEエンコードされたメッセージを使用して、大きすぎて純粋なバイナリとしてBase64エンコードするには高価な部分を送信する標準です。 SOAPメッセージ自体は、メッセージの最初の部分として送信され、WCFのようなWebサービスソフトウェアスタックは、メッセージの単一表現を作成するために一緒に引き戻すことができるバイナリパーツへの参照を含みます。

バイナリエンコーディングはWCF独自のものであり、実際には大きなメッセージとは関係ありません。 XMLインフォセットのバイナリ表現を提供します。これは、ワイヤをはるかにコンパクトにし、テキストベースのフォーマットよりも高速に解析することができます。大量のバイナリデータを送信した場合、送信されている他のバイトとすぐにフィットします。

ストリーミングは、任意のメッセージ形式で使用できます。これは、データがネットワークを介して書き込まれる場合と、ネットワーク転送に提示される前にメモ帳に完全にバッファリングされる場合です。メッセージが小さくなると、送信前にバッファリングするのがより効果的になり、大きなメッセージ、特に大きなバイナリチャンクまたはストリームを含むメッセージは、ストリーミングを必要とするか、メモリリソースを使い果たします。

+0

詳細な回答ありがとうございます!だから、MTOMはSMTPメッセージの添付ファイルに似た、添付ファイル付きのSOAPメッセージですか? –

+0

それは正しいです。 –

+0

@Drew Marshしかし、どのようにしてバイナリデータを内部に組み込むことができますか(withougtは64を基にしてデコードします)、httpで送信しますか? –

関連する問題