彼らは添付ファイルは、SOAPメッセージの外にあることを言うとき、それは正確に何を意味するのでしょうか?私は、おそらくattachementが別のTCPパッケージとして送信されると仮定しますが、私は間違っていると思いますか?
最初のオプションとは対照的に、添付ファイルは実際のSOAPメッセージペイロードの一部ではなく、代わりにSOAPドキュメント内で参照されます。 MTOMとSWAの違いは、参照ファイルがある場所です。 MTOMではレスポンスに埋め込まれていますが、SWAでは、たとえば、Web上のリソースへのリンクを得ることができます。
MTOM
Content-type: multipart/related;
type="application/xop+xml";
start-info="text/xml"
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include"
href="cid:[email protected]">
</xop:Include>
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
--uuid:c73c9ce8-6e02-40ce-9f68-064e18843428
Content-Id: <[email protected]>
Content-Type: image/png
Content-Transfer-Encoding: binary
SWA(参考)
Content-Type: application/xml;charset=utf-8;
<?xml version="1.0" ?>
<S:Envelope xmlns:S="...">
<S:Body>
<ns2:downloadImageResponse xmlns:ns2="...">
<return>
https://server.com/downloadImagehere.png
</return>
</ns2:downloadImageResponse>
</S:Body>
</S:Envelope>
インライン(タイプXOP + XMLの応答中のすべて):これは、3つの最小限の例を以下の
Content-Type: application/xml;charset=utf-8; <?xml version="1.0" ?> <S:Envelope xmlns:S="..."> <S:Body> <ns2:downloadImageResponse xmlns:ns2="..."> <return> YTM0NZomIz...potentiallyLargeBase64encodedFileGoesInHere...I2OTsmIzM0NTueYQ== </return> </ns2:downloadImageResponse> </S:Body> </S:Envelope>
上記のうち、SpringのSpring-WSフレームワークで最も効果的なものはどれですか?
これらはすべてサポートされており、使用するケースは使用ケースによって少し異なります。私の研究によれば、MTOMはデファクトスタンダードのようです。私によれば、大規模または複数ファイルの添付ファイルがある場合は特に便利です。論理的なコンポーネントにメッセージを分割するので、バイナリデータを効率的に処理するためのオプションがパーサに追加される可能性があります。
しかし、小さいデータの場合は、標準のSOAPプロトコルの一部であり、メッセージに直接埋め込まれたエンコードされたバイト配列を直接使用するだけなので、おそらくリソースの埋め込みに行くでしょう。移植性/互換性が重要な場合、これは選択する方法かもしれません。
最後のアプローチでは、参照を自分で処理する必要がありますが、これは必要な場合とそうでない場合があります。
上記のオプションのうち、どちらが送信中にバイナリコンテンツをエンコードするのか不明です。ここに記載されているバイナリMIMEとは何ですか - http://www.crosschecknet.com/intro_to_mtom.php?送信中にバイナリデータはテキストに変換されますか?
MTOMとインラインは、通常、ファイルをBase64エンコードされた文字列としてエンコードします。外部リンクについては、関連性はありません。
SWAを使用するときのデータの形式は何ですか?
Base64encodedバイト配列
カントはあなたに完全な答えを与えるが、このリンクは役立つはずます。http://wso2.org/library/1148。色分けされた図を途中で見てください。これは、SOAPテキストが1つの部分として表示され、その "Id"によってバイナリ部分を参照するMIMEマルチプルメッセージです。これは、バイナリのbase64エンコーディングを必要としません。このメソッドは非常に普及しており、HTTP標準なのでsoapもありません – davidfrancis
... Cont ...またはWebサービス固有のので、フレームワークがサポートしていない場合は驚きます。 GL HTH – davidfrancis
mtomのように見えるので、ベースの64エンコードデータがmimeマルチパートメッセージになってしまうので、テーマのバリエーションです! – davidfrancis