SOAP 仕様 インデックス
解説
SOAP は、非集中 / 分散環境において情報交換を行うための軽量プロトコルです。これは、メッセージの内容とその処理方法を記述するためのフレームワークを定義するエンベロープ、アプリケーション定義のデータ型のインスタンスを表現するためのエンコーディング規則のセット、およびリモート プロシージャ呼び出しと応答を表現するための規約の 3 つの部分から構成される XML ベースのプロトコルです。SOAP は、他のさまざまなプロトコルと組み合わせて使用することができます。ただし、このドキュメントに定義されているバインディングは、SOAP を HTTP および HTTP Extension Framework と組み合わせて使用する方法のみを記述しています。
SOAP 1.1 W3C Note
仕様
原文: http://www.w3.org/tr/soap/
日本語訳: https://www.microsoft.com/japan/developer/workshop/xml/general/soapspec.asp
スキーマ
https://schemas.xmlsoap.org/soap/envelope
https://schemas.xmlsoap.org/soap/encoding
SOAP Version 1.2 W3C Working Draft
仕様
Part 1: http://www.w3.org/TR/soap12-part1/
Part 2: http://www.w3.org/TR/soap12-part2/
スキーマ
SOAP Envelope: http://www.w3.org/2001/09/soap-envelope
SOAP Encoding: http://www.w3.org/2001/09/soap-encoding
ステータス
SOAP 1.1 は W3C に提出され、2000 年 5 月 8 日に W3C Note となりました。最新の SOAP 実装は SOAP 1.1 をサポートしています。W3C の XML Protocol ワーキング グループでは、SOAP バージョン 1.2 の作業が進められています。
ノート
概要
SOAP は、非集中 / 分散環境において情報交換を行うための、軽量で拡張性のある XML ベースのプロトコルです。SOAP は、主にメッセージ構造とメッセージ処理モデルのためのフレームワークを定義しています。また、SOAP はデータをシリアル化するためのエンコーディング規則のセットと、リモート プロシージャ呼び出しを行うための規約も定義しています。SOAP 拡張性モデルは、HTTP などの多様な下位プロトコル上で動作する幅広い組み合わせ可能なプロトコルのための基盤を提供しています。
目標
SOAP は単純さと拡張性を指向して設計されています。これはメッセージ処理モデルを定義していますが、それ自体ではプログラミング モデルや実装固有のセマンティクスなどのアプリケーション セマンティクスは定義していません。SOAP は複雑なシステムを構築するための基盤として使用することができますが、従来のメッセージ システムや分散型オブジェクト システムの機能のほとんどは、コアの SOAP 仕様には含まれていません。
詳細
SOAP メッセージは XML をベースにしており、以下の部分を含んでいます。
エンベロープ
。メッセージを表すトップレベル コンテナです。ヘッダ
。SOAP メッセージに脱集中的な形で機能を追加するための総称コンテナです。SOAP は、特定の機能を誰が処理するのかを、またその機能を理解することがオプションなのか必須なのかを指定するための属性を定義しています。本体
。最終的なメッセージ受信者を宛先とする必須情報のためのコンテナです。SOAP は、本体用に、エラーを報告するための要素を 1 つ定義しています。
次の図 1 に示すように、SOAP メッセージはヘッダー
および本体
コンテナの中に、複数のアプリケーション定義のブロックを持つことができます。
図 1. SOAP メッセージの構造
次のリストは、Web サービスへのアラート メッセージであるサンプルの SOAP メッセージを示しています。要求には (本体
内に) テキスト メッセージが含まれ、(ヘッダー
内には) そのメッセージが一定の時間が経過した後には意味を持たなくなることを示すマークが付けられています。
<?xml version="1.0" encoding="UTF-8" ?>
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope">
<env:Header>
<n:alertcontrol xmlns:n="http://example.org/alertcontrol">
<n:priority>1</n:priority>
<n:expires>2001-06-22T14:00:00-05:00</n:expires>
</n:alertcontrol>
</env:Header>
<env:Body>
<m:alert xmlns:m="http://example.org/alert">
<m:msg>Pick up Mary at school at 2pm</m:msg>
</m:alert>
</env:Body>
</env:Envelope>
SOAP メッセージは、HTTP、SMTP、TCP などのプロトコルを使って送信することができます。たとえば、WS-Routing は SOAP メッセージのために DIME、TCP、および UDP へのバインディングを定義しています。
関連事項
SOAP は、セキュアで信頼の置けるメッセージング環境に必要な完全なサービス セットを提供する他のプロトコルを構築するための基盤です。たとえば、WS-Security と WS-License を使用すると、SOAP メッセージの完全性や秘匿性を保証することができます。これらのプロトコルは、同じメッセージに複数の SOAP ベースのプロトコルが論理的に共存できる、SOAP メッセージ構造のモジュール的なパッケージングを利用します。このように組み合わせ可能なため、SOAP は小さなデバイスからグローバルな Web サービスまで、幅広いシステムで利用できるようになっています。
関連する仕様
SOAP はメッセージ構造のためのフレームワークを定義していますが、SOAP フォールトを除いて、メッセージ タイプは定義していません。Web サービスが送受信できるメッセージ タイプの記述には WSDL を使用することができます。SOAP は XML ベースのプロトコルです。DIME は、SOAP メッセージの下位にある XML とバイナリ データの両方の格納に使用できます。