MTOM サンプルでは、WSHttpBinding でメッセージ転送最適化メカニズム (MTOM) メッセージ エンコードを使用する方法を示します。 MTOM は、SOAP メッセージを生バイトとして使用して大きなバイナリ添付ファイルを送信するメカニズムであり、メッセージを小さくできます。
既定では、WSHttpBinding は通常のテキスト XML としてメッセージを送受信します。 MTOM メッセージの送受信を有効にするには、バインドの構成 (次のコード例のように) に messageEncoding
属性を設定するか、 MessageEncoding
プロパティを使用してバインドに直接設定します。 サービスまたはクライアントは、MTOM メッセージを送受信できるようになりました。
<wsHttpBinding>
<binding name="WSHttpBinding_IUpload" messageEncoding="Mtom" />
</wsHttpBinding>
MTOM エンコーダーは、バイトとストリームの配列を最適化できます。 このサンプルでは、操作は Stream
パラメーターを使用するため、最適化できます。
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IUpload
{
[OperationContract]
int Upload(Stream data);
}
このサンプルで選択したコントラクトは、バイナリ データをサービスに送信し、戻り値としてアップロードされたバイト数を受け取ります。 サービスがインストールされ、クライアントが実行されると、1000 バイトすべてが受信されたことを示す番号 1000 が出力されます。 出力の残りの部分では、さまざまなペイロードに対して最適化されたメッセージ サイズと最適化されていないメッセージ サイズが一覧表示されます。
Output:
1000
Text encoding with a 100 byte payload: 433
MTOM encoding with a 100 byte payload: 912
Text encoding with a 1000 byte payload: 1633
MTOM encoding with a 1000 byte payload: 2080
Text encoding with a 10000 byte payload: 13633
MTOM encoding with a 10000 byte payload: 11080
Text encoding with a 100000 byte payload: 133633
MTOM encoding with a 100000 byte payload: 101080
Text encoding with a 1000000 byte payload: 1333633
MTOM encoding with a 1000000 byte payload: 1001080
Press <ENTER> to terminate client.
MTOM を使用する目的は、大きなバイナリ ペイロードの送信を最適化することです。 MTOM を使用して SOAP メッセージを送信すると、小さなバイナリ ペイロードのオーバーヘッドは顕著ですが、数千バイトを超えると大幅に節約されます。 その理由は、通常のテキスト XML が Base64 を使用してバイナリ データをエンコードし、3 バイトごとに 4 文字を必要とし、データのサイズを 3 分の 1 に増やすからです。 MTOM はバイナリ データを生バイトとして送信できるため、エンコード/デコード時間が節約され、結果としてメッセージが小さくなります。 今日のビジネス ドキュメントやデジタル写真と比較すると、数千バイトのしきい値は小さくなります。
サンプルを設定、ビルド、実行するには
次のコマンド ASP.NET 使用して 4.0 をインストールします。
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Windows Communication Foundation サンプル のOne-Time セットアップ手順を実行していることを確認します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一または複数のコンピューター間の構成でサンプルを実行するには、「Windows Communication Foundation Samplesの実行」の手順に従います。