SOAP バージョンの違い

SOAP バージョン 1.1 と SOAP バージョン 1.2 はどちらも World Wide Web Consortium (W3C) の標準です。 SOAP 1.1 だけでなく、SOAP 1.2 もサポートする Web サービスをデプロイできます。 SOAP 1.2 仕様に対して行われた SOAP 1.1 からの変更の一部は大きなものですが、その他の変更は小さなものです。

SOAP 1.2 の仕様は、SOAP 1.1 に対するいくつかの変更を導入しています。 この情報は、SOAP 1.1 および SOAP 1.2 のすべての新機能や変更された機能の詳しい説明をするためのものではありません。 そうではなく、この情報は現在の SOAP バージョン間のより重要な違いの一部にハイライトを当てています。

SOAP 1.2 仕様に対する変更で重要なものには、以下の更新情報が含まれています。
  • SOAP 1.1 は XML 1.0 に基づいています。 SOAP 1.2 は XML 情報セット (XML Infoset) に基づいています。

    XML 情報セット (infoset) は、XML 文書を XSD スキーマで記述する方法を提供します。 ただし、infoset は必ずしも SOAP 1.1 が基づいている XML 1.0 シリアライゼーションを使用して、文書をシリアライズするわけではありません。 XML 文書を記述するこの新しい方法は、バイナリー・プロトコル・フォーマットなどの他のシリアライゼーション・フォーマットを明らかにするうえで役に立ちます。 一部の詳細なタグ付け情報を必要としない場合は、バイナリー・プロトコル・フォーマットを使用して、メッセージをコンパクトなフォーマットに小型化することができます。

    SOAP 1.2 では、基本となるプロトコル・データ単位で、どの XML シリアライゼーションを使用するかを判別するために、基礎となるプロトコルのバインディングの仕様を使用できます。 SOAP 1.2 のパート 2 で指定される HTTP バインディングは、SOAP メッセージ infoset のシリアライゼーションとして、XML 1.0 を使用します。

  • ベンダーが SOAP 1.2 で定義されているバインディング・フレームワークに準拠している限り、HTTP 使用以外のトランスポート・プロトコルを正式に定義する機能を、SOAP 1.2 は提供します。 HTTP はユビキタスである一方、TCP/IP および MQ を含む他のトランスポートほど高信頼性ではありません。
  • SOAP 1.2 は SOAP 処理モデルのより具体的な定義を提供します。これにより、Web サービス・インターオペラビリティー (WS-I) プロファイルの欠如から発生するインターオペラビリティーのエラーにつながる場合がある、多くのあいまいさが取り除かれます。 その目標は、SOAP 1.2 実装を使用する、さまざまなベンダー間で、インターオペラビリティーの問題が発生する可能性を大幅に削減することです。
  • SOAP with Attachments API for Java™ (SAAJ) は、SOAP 要求を発行するための単純なメカニズムとしてスタンドアロンにすることもできます。 SAAJ 仕様に対する重要な変更点は、SOAP 1.1 メッセージと追加の SOAP 1.2 のフォーマット済みメッセージを表示する機能です。 例えば、SAAJ バージョン 1.3 は、SOAP ヘッダー・エレメント上の SOAP 1.2 (getRole()、getRelay() など) をより誘導しやすい、定数およびメソッドの新しいセットを導入しています。 ファクトリーに SAAJ が、適切な SOAP 1.1 および SOAP 1.2 メッセージを作成するための、追加のメソッドがあります。
  • SOAP 1.2 では、エンベロープおよびエンコード・スキーマ用の XML 名前空間が変更されました。 これらの変更は、既存の実装に影響を与えることなく、SOAP プロセッサーを SOAP 1.1 と SOAP 1.2 メッセージから区別し、SOAP スキーマの変更をサポートします。
  • Java Architecture for XML Web Services (JAX-WS) では、SOAP 1.1 と SOAP 1.2 の両方をサポートする機能が導入されました。 JAX-RPC は、SOAP メッセージがランタイムをトラバースする際に、それを操作できる要件を導入しているため、このメッセージを適切な SOAP コンテキストで表示する必要が出てきます。 JAX-WS では、SAAJ 1.3 のサポートの結果として、多くの追加機能拡張があります。
  • Web サービス記述言語 (WSDL) バージョン 1.1 仕様では SOAP 1.2 を扱っていません。 SOAP 1.2 は、WSDL 2.0 のドラフト・バージョンで検討されます。 WSDL バージョン 1.1 では、WSDL 1.1 文書で SOAP 1.1 ペイロードをレンダリングする方法のみを定義しています。 SOAP 1.2 ベースのサービスの表示方法を解決するには、WSDL 1.1 文書での SOAP 1.2 ペイロードの定義法を定義した、別の W3C 文書があります。 SOAP 1.2 については、WSDL 1.1 バインディング拡張機能を参照してください。
  • SOAP 1.1 は単一文書です。 SOAP 1.2 の仕様は以下のパートで構成されています。
    • パート 0 は、SOAP の非標準の概要です。
    • パート 1 は、SOAP メッセージの構造、SOAP 処理モデルおよび基礎をなすプロトコルに対する SOAP のバインディング用のフレームワークについて説明します。 順応 SOAP 実装は、パート 1 のすべてを実装する必要があります。
    • パート 2 は、データ・モデルおよびエンコード、RPC 規則および HTTP のバインディングを含む SOAP のコアへのオプションのアドインについて説明します。 準拠する SOAP 実装は、パート 2 のいずれかのアドインを実装する可能性があります。 ただし、アドインが実装されている場合は、それらのアドインが仕様の関連部分に準拠している必要があります。
    4 番目の文書は仕様のアサーションとテスト集です。

SOAP 1.2 では構文に多くの変更があり、SOAP 1.1 で記述されたセマンティクスから、追加の、明確にされたセマンティクスを提供します。 SOAP 1.2 Primer 文書では、これらの構文変更をリストして説明しています。