SOAP (従来の Simple Object Access Protocol) は、 非集中分散環境における情報交換のための単純プロトコルです。 SOAP メッセージは、送信側から受信側への一種の情報伝送です。要求/応答パターン実行のために、SOAP メッセージを結合することができます。
SOAP はトランスポートから独立していますが、 最も一般的には既存のインターネット・インフラストラクチャーで実行するために HTTP 上で伝達されます。 SOAP では、メッセージ・ルーティングのためのメッセージ・パスを定義することで、 発見された Web サービスのバインディングと使用が可能になります。 SOAP は、Web サービスの UDDI を照会する場合に使用されます。ワークベンチは、SOAP 1.1 をサポートします。
SOAP は、すべてのメッセージに対して次の 3 つのパーツを定義する XML ベースのプロトコルです。
SOAP は、以下の 2 つの異なる通信スタイルをサポートします。
リモート・プロシージャー・コール (RPC): 結果を戻す操作の起動。通常、SOAP エンコード方式で使用され、WS-I 準拠ではありません。
文書体裁: 文書指向またはメッセージ指向スタイルとも呼ばれます。このスタイルはより低いレイヤーの抽象化を提供し、 より多くのプログラミング作業を必要とします。
分散コンピューティング環境において、エンコード・スタイルはアプリケーション内で定義されているデータ値が、特定のプロトコル・フォーマットとの間でどのように変換されるかについて定義します。変換プロセスは、シリアライゼーションおよびデシリアライゼーションと呼ばれます。
SOAP 仕様では、 次の SOAP エンコード・スタイルを定義します。
SOAP エンコード方式: SOAP エンコード・スタイルにより SOAP データ・モデルのデータ型の値をシリアライズ/デシリアライズできます。このエンコード・スタイルは、SOAP 1.1 標準で定義され、WS-I に準拠していません。
WSDL では、次のリテラル XML エンコード・スタイルを定義します。
リテラル XML: リテラルは、文書が現状のまま、つまりエンコードされていない状態で読み取られる必要があるということを意味します。文書は XMI としてシリアライズされ、それはメッセージ XML が WSDL のスキーマに準拠していることを意味します。リテラル・エンコードを使用する場合、各メッセージ部分は、具象スキーマ定義を参照します。リテラル・エンコード方式は、WS-I 準拠です。
SOAP データ・モデルの目的は、 共通プログラム言語で使用するデータ型に対して、言語に依存しない抽象化を提供することです。これは、次のもので構成されています。
SOAP データ・モデルを構成する要素および ID はすべて、ネームスペース URI で定義されます。 SOAP 標準では、データ型の構成方法を規定する規則を定義しています。プロジェクト固有の XML スキーマでは、実際のデータ型を定義する必要があります。 SOAP 仕様の要素は、http://schemas.xmlsoap.org/soap/envelope/ および http://schemas.xmlsoap.org/soap/encoding/ に定義されています。
現在は、SOAP プロトコルの各種の実装を使用できます。例えば Apache Foundation からは Apache SOAP が提供されています。これは IBM® プロジェクトの 1 つであった SOAP4J や、 Apache Axis および IBM WebSphere® ランタイム環境が元になったものです。提供された Web サービス・ツールは、Apache SOAP 2.3、Axis 1.0、および IBM WebSphere 実装をサポートします。
マッピングは、XML 要素の修飾名、Java™ クラス名、およびエンコード・スタイル間における関連を定義します。マッピングにより、所定のエンコード・スタイルにおいて、 完全修飾名を持つ着信 XML 要素を Java クラスに (またはその逆に) 変換する方法が指定されます。
Apache SOAP について詳しくは、xml.apache.org/soap を参照してください。 SOAP について詳しくは、www.w3.org/TR/SOAP を参照してください。