WebサービスでSOAPメッセージをやり取りする際、画像やPDFなどの大きなバイナリデータを効率的に送信することは重要な課題です。そこで活用されるのがMTOM(Message Transmission Optimization Mechanism)です。多くの開発者はMTOMを単一の機能として捉えていますが、実際には3つの異なる仕様が組み合わさることで実現しています。

Key Facts

  • MTOMは、バイナリデータをXMLから切り離して送信する3つの機能で構成されている。
  • XOP(XML-binary Optimized Packaging)がXML内のバイナリデータの参照先として機能する。
  • MIMEコンテナを使用して、XML部分とバイナリデータをまとめて管理する。
  • 一般的にMTOMはHTTPプロトコル経由で利用される。

MTOMを構成する3つの階層的機能

MTOMの仕様は、抽象的な概念から具体的な実装まで、以下の3つのステップで定義されています。

1. 抽象的な送信最適化機能

まず基礎となるのが「抽象的なSOAP送信最適化機能」です。これは、バイナリデータを含むSOAPメッセージを扱う際の基本コンセプトを定義したものです。本来、バイナリデータはXML Infoset(XMLの論理的なデータモデル)の一部ですが、この機能によって「バイナリデータをシリアライズされたXMLとは別に送信する」という考え方が導入されました。ただし、この段階では具体的なデータ形式や送信方法は定義されていません。

2. MIMEとXOPによるシリアライズ

次に、具体的なデータ表現を定義するのが「最適化されたMIME Multipart/Relatedシリアライズ」です。ここでは、XML内のバイナリデータがあった場所にXOP(XML-binary Optimized Packaging)という参照用プレースホルダーを配置します。そして、このXOPを含むXMLと、実際のバイナリデータMIME(Multipurpose Internet Mail Extensions:多目的インターネットメール拡張)というコンテナにまとめて格納します。これにより、データの構造化が可能になります。

3. HTTPによる転送実装

最後に、構築されたMIMEおよびXOP形式のSOAPメッセージを、実際にどのようにネットワーク経由で送るかを定義するのが「HTTP SOAP送信最適化機能」です。これにより、標準的なHTTPプロトコルを用いて効率的にデータを転送することが可能になります。

MTOMとXOPの密接な関係

実務上の運用では、「MTOM」という言葉が「MTOM with XOP」を指す略称として使われることがほとんどです。理論上、MTOMの抽象モデルはXOP以外の参照メカニズムや、MIME以外のコンテナ形式、あるいはHTTP以外の転送プロトコルと組み合わせることも可能です。しかし、現実的な実装の多くは、XOP、MIME、そしてHTTPの組み合わせで構成されています。

MTOM構成要素の役割まとめ
構成要素 役割 性質
抽象的MTOM機能 バイナリデータの分離送信という概念の定義 論理的定義
XOP XML内でのバイナリデータへの参照(プレースホルダー) 参照メカニズム
MIME XMLとバイナリデータをひとまとめにする容器 コンテナ形式
HTTP 最適化されたメッセージを転送する手段 転送プロトコル

Frequently Asked Questions

MTOMとは具体的に何を最適化するものですか?

SOAPメッセージに含まれるバイナリデータをXMLの中に直接埋め込むのではなく、外部に切り出して送信することで、データのエンコード負荷を軽減し、通信効率を向上させます。

XOPとMTOMの違いは何ですか?

MTOMは送信最適化の全体的な仕組み(フレームワーク)であり、XOPはその中でXMLからバイナリデータへアクセスするための「参照方式」を指します。

MTOMは必ずHTTPでなければならないのでしょうか?

仕様上の抽象モデルとしては、HTTP以外の転送プロトコルを利用することも可能です。しかし、実際の実装ではほとんどの場合、HTTPが利用されています。

MIMEコンテナが使われる理由は何ですか?

異なる形式のデータ(テキストベースのXMLとバイナリデータ)を、一つのメッセージとして構造的にまとめて送信するために、MIMEのMultipart/Related形式が適しているためです。