SOAP は、トランスポートに依存しませんが、最も一般的な方法としては、既存のインターネット・インフラストラクチャーを使用して実行できるように、HTTP を介して伝送されます。SOAP は、メッセージ・ルーティングのためのメッセージ・パスを定義することよって、ディスカバーされた Web サービスをバインディングしたり、使用したりできるようにします。SOAP は Web サービスの UDDI の照会に使用されます。
Java™ API for XML Web Services (JAX-WS) 標準は、SOAP 1.1 と SOAP 1.2 の両方をサポートする機能を導入しています。WebSphere® Application Server v6.1 Feature Pack for Web Services または WebSphere Application Server v7.0 または v8.0 がインストールされている場合は、ワークベンチで SOAP 1.1 と SOAP 1.2 がサポートされます。
SOAP 1.1 は、プロトコルに依存しないトランスポート・プロトコルであり、各種のプロトコルと組み合わせて使用することができます。WebSphere Application Server で開発および実装される Web サービスでは、SOAP は HTTP、HTTP 拡張フレームワーク、および Java Message Service (JMS) と組み合わせて使用されます。また、SOAP は、オペレーティング・システムにも依存せず、どのようなプログラム言語にもコンポーネント・テクノロジーにも縛られません。クライアントが XML メッセージを発行できる限り、どのようなテクノロジーを使用してそのクライアントを実装するかは問題になりません。同様に、サービスで SOAP メッセージを処理できる限り、任意の言語を使用してそのサービスを実装することができます。また、サーバー・サイドとクライアント・サイドの両方を任意の適切なプラットフォームに配置することができます。
SOAP は、各メッセージの以下の 3 つの部分を定義する XML ベースのプロトコルです。
SOAP は以下の 2 つの異なるコミュニケーション・スタイルをサポートします。
リモート・プロシージャー・コール (RPC): RPC は、結果を返す操作を呼び出します。RPC は、通常、SOAP エンコード (WS-I 非準拠) と一緒に使用されます。
文書スタイル: 文書スタイルは、文書指向のスタイルまたはメッセージ指向のスタイルとも呼ばれています。このスタイルは、抽象化の下位層を実現し、比較的多くのプログラミング作業を必要とします。
分散コンピューティング環境では、アプリケーションで定義されるデータ値と特定のプロトコル・フォーマットとの間で行われる変換の方法をエンコード・スタイルによって定義します。この変換プロセスを、シリアライゼーションおよびデシリアライゼーションといいます。SOAP 1.1 仕様では、SOAP エンコード・スタイルを次のように定義しています。
SOAP エンコード: SOAP エンコード・スタイルは、SOAP データ・モデルから得られるデータ型の値のシリアライゼーションおよびデシリアライゼーションを可能にします。このエンコード・スタイルは、SOAP 1.1 規格で規定され、WS-I には準拠していません。
WSDL では、リテラル XML エンコード・スタイルを次のように定義しています。
リテラル XML: リテラルとは、文書がそのまま、つまり、エンコードされずに、読み込まれることを表します。文書は XMI としてシリアライズされます。つまり、メッセージ XML は WSDL で記述されたスキーマに準拠します。リテラル・エンコードを使用した場合、各メッセージ・パーツは具体的なスキーマ定義を参照します。リテラル・エンコードは WS-I に準拠しています。
SOAP 1.2 は、SOAP 処理モデルについてより具体的な定義を示しています。そのため、Web Services-Interoperability (WS-I) プロファイルがない場合にインターオペラビリティーの問題を招く可能性がある、あいまいな表現の多くが解消されています。SOAP 1.2 を採用することで、異なるベンダー間での SOAP 1.2 の実装に伴うインターオペラビリティーの問題が発生する可能性が少なくなります。
SOAP 1.1 と 1.2 の違いの詳細な説明については、SOAP のバージョンによる違い (Differences in SOAP version) を参照してください。