XOP/MTOM について

XOP/MTOM についてちょっと調べたのでメモで残しておく。
情報はちょっと古いけどだいたい以下のような感じ。

XOP と MTOM は、SOAP メッセージの中に添付として含まれる
バイナリー・データの伝送をサポートするための標準。

これまで Microsoft は、DIME (Direct Internet Message Encapsulation)
と呼ばれる添付技術しかサポートしておらず、一方大部分のフレームワークでは、
それ以前に Microsoft が提案した SwA (SOAP Messages with Attachments)
と呼ばれるものしかサポートしていなかった。

XOP/MTOM は連携し、XML バイナリー最適化パッケージ
(XOP: XML-binary Optimized Packaging) で XML 文書が論理的に任意の
バイナリー・データの塊を組み込めるようにし、
MTOM (SOAP Message Transmission Optimization Mechanism) で XOP 手法を
SOAP メッセージに適用している。

XOP は base64 エンコード方式の文字データ・コンテンツを処理する。
XOP は実際の base64 テキストを XOP 名前空間の特殊な「Include」要素に置き換える。
Include 要素は、個別エンティティー (XML 文書の外部にあって、XML 文書に組み込まれる
実際のデータ) を識別する URI を指定する。

<xop:Include href="cid:1.urn:uuid:966CA4565647BEBA3D115028348657315@apache.org"
            xmlns:xop="http://www.w3.org/2004/08/xop/include" />


MTOM は XOP に基づき、まず SOAP メッセージで可能な XOP 使用方法の
抽象モデルを定義し、次にそのモデルを MIME Multipart/Related パッケージ用に
特殊化して、最後に HTTP トランスポートにモデルを適用する。


このメカニズム全体が、広く使用されている HTTP トランスポートで
XOP を SOAP メッセージに適用する標準方法となっている。