C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2007/01/18 21:23
WCFによるWebサービスでは、バイナリデータのエンコーディング形式にBase64BinaryかMTOM ( SOAP Message Transmission Optimization Mechanism ) のどちらかを選択することができます。


[ Base64Binary と MTOM ]
Base64Binaryでは、バイナリデータを文字列へとエンコードしますが、エンコード・デコードに時間がかかる上にサイズも増加し、結果としてパフォーマンスダウンに繋がるという問題があります。
この問題を解消するために登場したのがMTOMです。MTOMを使用することで、エンコード・デコードの所要時間が短縮され、データサイズも抑えられます。


[ 設定方法 ]
WCFによるWebサービスでは、既定でBase64Binaryが使用されます。MTOMを使用する場合は、Web.configのバインディングセットの設定を次のように変更します。
WsHttpBindingの場合の設定例を以下に示します。

<system.serviceModel>
    <services>
        <service name="Service1">
            <endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IService1" contract="IService1" />
        </service>
    </services>
    <bindings>
        <wsHttpBinding>
            <binding name="wsHttpBinding_IService1" messageEncoding="Mtom" />
        </wsHttpBinding>
    </bindings>
</system.serviceModel>


[ ちなみに・・・ ]
以下の資料やページを見ると、BasicHttpBindingバインディングセットではMTOMエンコーディングを利用できないと書いてありますが、これは間違いですので注意してください。BasicHttpBindingバインディングセットでもMTOMエンコーディングを利用することは可能です。 ( 実際にSOAPメッセージを調べて確認しました。 )

[コース: C2] .NET Framework 3.0 WCF/WF アプリケーション開発 ( PowerPoint )
WCFの基本的な概念 - @IT
タグ: .NET C# WCF