WS-Addressingとは
WS-Addressing(Web Services Addressing)は、
Webサービスがメッセージを送受信する際に、アドレス指定情報をやり取りするための、転送プロトコルに依存しないメカニズムを提供する仕様です。この仕様により、SOAPメッセージのルーティングに必要な情報が、XML形式でメッセージ自体に組み込まれるため、HTTPなどの特定のプロトコルに依存せずに、柔軟なメッセージングが可能になります。
概要
従来のSOAPメッセージは、HTTP/
HTTPS上で転送される際、メッセージの宛先を特定するために、HTTPヘッダなどのメッセージ外の情報に依存していました。WS-Addressingは、このメッセージ外の情報をXMLメッセージ内に埋め込むことで、下位層のプロトコルに依存せずに、メッセージのルーティングを可能にします。
具体的には、SOAPヘッダにディスパッチメタデータを格納し、メッセージがディスパッチャーに到達すれば、ネットワークレベルでの転送処理は完了します。これにより、HTTPに依存しないメッセージングが可能になります。また、WS-Addressingは、応答を送信すべきエンドポイントを示すエンドポイントリファレンス(EPR)をSOAPヘッダに含めることで、非同期なやり取りを実現します。これにより、SOAPリクエスト/レスポンスの持続時間と、HTTPリクエスト/レスポンスの持続時間を切り離し、任意の期間持続するやり取りが可能になります。
エンドポイント・リファレンス (EPR)
エンドポイント・リファレンス(EPR)は、メッセージを
Webサービスにアドレス指定するために必要な情報をカプセル化したXML構造です。これには、メッセージの送信先アドレス、メッセージの転送経路を指定するリファレンス・パラメータ、オプションでサービスに関するメタデータ(WSDLやWS-Policyなど)が含まれます。
メッセージアドレス指定情報
メッセージアドレス指定属性は、
Webサービスにメッセージを伝達する際のアドレス指定情報をやり取りします。具体的には、以下の情報が含まれます。
メッセージ送付先 URI: メッセージの宛先を示すURI。
ソース・エンドポイント: メッセージを送信したサービスのエンドポイントを示すEPR。
リプライ・エンドポイント: 応答メッセージを送信すべきエンドポイントを示すEPR。
フォールト・エンドポイント: エラーメッセージを送信すべきエンドポイントを示すEPR。
アクション: メッセージの意味を示すURI。メッセージのルーティングを補助します。
ユニークなメッセージID URI: メッセージを一意に識別するためのURI。
前のメッセージとの関係: 前のメッセージとの関係を示すURI。
歴史と標準化
WS-Addressingは、マイクロソフト、IBM、BEA、サン・マイクロシステムズ、SAPが共同で開発し、その後W3Cに提出されました。W3C WS-Addressing Working Groupによって標準化が進められ、改良と拡張が行われました。
WS-Addressingは現在、以下の3部構成で構成されています。
1. 中核仕様: エンドポイント・リファレンスとメッセージアドレス指定属性に関する基本仕様。
2. SOAPバインディング: 上記の属性をSOAPでどのようにバインドするかを定義。
3. メタデータ仕様: 抽象属性のWSDLによる表現、WSDLメタデータをエンドポイント・リファレンスに含める方法、WS-Policyを使ってWebサービスがWS-Addressingをサポートすることを示す方法などを規定。
また、WS-PAEPR(Web Services Policy Attachment for Endpoint Reference)では、エンドポイント・リファレンスにWS-Policyを含めるメカニズムと意味について解説しています。
WS-Addressingの利点
WS-Addressingを利用することで、以下のような利点が得られます。
プロトコル独立性: HTTPなどの特定のプロトコルに依存せず、様々な転送プロトコル上でメッセージングが可能になります。
非同期通信: リクエストとレスポンスが分離した非同期な通信が容易になります。
柔軟なルーティング: メッセージの内容に基づいて柔軟なルーティングが可能になります。
*
メッセージの追跡性: メッセージのIDや関連情報を追跡しやすくなります。
WS-Addressingは、複雑な
Webサービス連携を支える重要な技術であり、現代の
Webサービスアーキテクチャにおいて広く採用されています。