MTOM/XOP or Attachment Profile

昨日の日記はわかりずらかったので、もう一度まとめてみた。

Java の世界については Sun の Mark Hadley 氏の blog がわかりやすい。

3月26日の日記にも書いたとおり、Web サービス(SOAP)のアタッチメントの手法にはいくつかの方法がある。現時点では DIME or SwA が存在し、将来的には MTOM/XOP と WS-I Attachment Profileが有望である。MTOM/XOP と Attachment Profile はどちらも SwA を基にしている。

先週は MTOM の CR と、WS-I Attachment Profile の最終版が公開された。この両者は生成される SOAP メッセージの表現形式(serialized form)は MIME マルチパート形式と似通っているが、セマンティクスが異なる。

Attachment Profile は ref:swaRef 型または WSDLMIME バインディングを利用して SOAP メッセージに添付されたバイナリを参照する。

MTOM/XOP は SOAP メッセージ(XML)にバイナリデータを埋め込む方法とそれを(Base64 エンコードするのではなく) MIME マルチパートとしてシリアライズする方法を定義している。

二つの手法の最も異る部分はインフォセットの扱いである。MTOM/XOP の手法では添付されたバイナリは SOAP エンベロープのインフォセットの一部となる。これが大きな意味を持つのはSOAP エンベロープ電子署名をしたときである。MTOM/XOP の手法では添付されたバイナリデータを含めて電子署名することが可能である。一方で Attachment Profile の手法では添付されたバイナリデータはインフォセットに含まれない。その結果署名対象とはならないのである。つまり Attachment Profile 方式は添付のバイナリデータの改竄を検出できない。

以上が SOAP のアタッチメントの現状だ。

実装状況はというと、JWSDP 1.4 (JAX-RPC 1.1.2 SI) は Attachment Profile をサポートしている。Java 系のアプリケーションサーバは順次 Attachment Profile をサポートしてくると予想される。マイクロソフトは MTOM/XOP を WSE 3.0 で実装してくると予想される。

まとめると、MTOM/XOP と Attachment Profile では生成されるメッセージはほとんど同じであるが、セマンティクスは異なる。インフォセットをきちんと使って添付データまで電子署名したければ、MTOM/XOP を使うべきである。しかし、その必用がなければ現状では(特に Java では) Attachment Profile を使うのがよい(ツール類のサポートが相対的にあついので)。

将来的にはどうなるかはまたこんど(よっぱらったのですみません)。

しかしこんなことは別に僕が書かなくてもそのうち @IT あたりで誰かが解説を書くだろう。