2012-04-01 8 views
4

私はSOAPメッセージでバイナリデータを処理する方法を調査しています。私はクライアントとサービスの両方を開発していますので、どちらのフレームワークを選択するか選択できます。唯一の制約は、サービス終了が既に設計されており、Spring-WSに基づいていることです。 SOAPメッセージ(base64Binaryの)中にbase64として、インライン添付ファイルを送信SOAPでバイナリデータを処理する

  • はグーグルを見ると、それは3つの選択肢があるように見えます。

  • SOAPメッセージの外部で添付ファイルを送信しています。
  • 添付ファイルをメッセージの外側に送信しますが、メッセージ(MTOM)に埋め込まれているかのように表示されます。

質問

  • 彼らは添付ファイルは、SOAPメッセージの外にあることを言うとき、それは正確に何を意味するのでしょうか?私は、おそらくattachementが別のTCPパッケージとして送信されると仮定しますが、私は間違っていると思いますか?

  • 上記のうち、SpringのSpring-WSフレームワークで最も効果的なものはどれですか?

  • 上記のオプションのどれが、送信中にバイナリコンテンツをエンコードするのか不明です。ここに記載されているバイナリMIMEとは何ですか - http://www.crosschecknet.com/intro_to_mtom.php?送信中にバイナリデータはテキストに変換されますか?

  • SWAを使用するときのデータの形式は何ですか?

+0

カントはあなたに完全な答えを与えるが、このリンクは役立つはずます。http://wso2.org/library/1148。色分けされた図を途中で見てください。これは、SOAPテキストが1つの部分として表示され、その "Id"によってバイナリ部分を参照するMIMEマルチプルメッセージです。これは、バイナリのbase64エンコーディングを必要としません。このメソッドは非常に普及しており、HTTP標準な​​のでsoapもありません – davidfrancis

+0

... Cont ...またはWebサービス固有のので、フレームワークがサポートしていない場合は驚きます。 GL HTH – davidfrancis

+0

mtomのように見えるので、ベースの64エンコードデータがmimeマルチパートメッセージになってしまうので、テーマのバリエーションです! – davidfrancis

答えて

4

彼らは添付ファイルは、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バイト配列

関連する問題