「SOAP (プロトコル)」の版間の差分
カテゴリの追加・削除 |
|||
71行目: | 71行目: | ||
== SOAPメッセージの例 == |
== SOAPメッセージの例 == |
||
一例として、あるクライアントが、ショッピングサイト(例示のための架空のものである)のサービスに商品IDを提示して商品の詳細を求めるリクエストメッセージはおおよそ以下のようになる。 |
一例として、あるクライアントが、ショッピングサイト(例示のための架空のものである)のサービスに商品IDを提示して商品の詳細を求めるリクエストメッセージはおおよそ以下のようになる。 |
||
< |
<syntaxhighlight lang="xml"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> |
||
<SOAP-ENV:Body> |
<SOAP-ENV:Body> |
||
<getProductDetails xmlns="http://warehouse.example.com/ws"> |
<getProductDetails xmlns="http://warehouse.example.com/ws"> |
||
77行目: | 77行目: | ||
</getProductDetails> |
</getProductDetails> |
||
</SOAP-ENV:Body> |
</SOAP-ENV:Body> |
||
</SOAP-ENV:Envelope></ |
</SOAP-ENV:Envelope></syntaxhighlight> |
||
これに対し、ショッピングサイトのサービス側の、要求に基づく商品データを含むレスポンスメッセージはおおよそ以下のようになる。 |
これに対し、ショッピングサイトのサービス側の、要求に基づく商品データを含むレスポンスメッセージはおおよそ以下のようになる。 |
||
< |
<syntaxhighlight lang="xml"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> |
||
<SOAP-ENV:Body> |
<SOAP-ENV:Body> |
||
<getProductDetailsResponse xmlns="http://warehouse.example.com/ws"> |
<getProductDetailsResponse xmlns="http://warehouse.example.com/ws"> |
||
91行目: | 91行目: | ||
</getProductDetailsResponse> |
</getProductDetailsResponse> |
||
</SOAP-ENV:Body> |
</SOAP-ENV:Body> |
||
</SOAP-ENV:Envelope></ |
</SOAP-ENV:Envelope></syntaxhighlight> |
||
== 関連項目 == |
== 関連項目 == |
2020年7月5日 (日) 22:38時点における版
TCP/IP群 |
---|
アプリケーション層 |
|
トランスポート層 |
カテゴリ |
インターネット層 |
カテゴリ |
リンク層 |
カテゴリ |
SOAP(ソープ)は、コンピュータネットワーク内のWebサービスの実装において、構造化された情報を交換するための通信プロトコルの仕様である。拡張性、中立性、独立性を導入することを目的とする。XML-RPCから発展した、XML Webサービスのための、XMLベースのRPCプロトコルである。
メッセージ形式としてXMLインフォメーションセットを使用する。また、メッセージのネゴシエーションおよび伝送はアプリケーション層のプロトコル(多くの場合HTTPまたはSMTP)に依存する。
SOAPにより、全く異なるオペレーティングシステム(例えばWindowsとLinux)上で走っているプロセス間でもXMLを使って意思疎通が可能になる。HTTPのようなWebプロトコルは全てのオペレーティングシステムにインストールされて走っているので、SOAPの仕組みを使えば、クライアントはその言語やプラットフォームが何であれ、ウェブサービスを起動してレスポンスを受け取ることが出来る。
元はSimple Object Access Protocolの頭字語とされていたが、現在は「何かの頭字語ではない」とされている[1]。
概要
拡張可能で分散的なフレームワークであり、HTTP以外にも様々なコンピュータネットワークの通信プロトコルで利用することができると主張され、SMTPへのバインディングも示されているが、実際上TCP/IP上のHTTP(S)以外の使用は現実的ではない。主要な実装としてApache Axisがある。多くの実装の間で相互運用性に問題があるとしてWS-Iというコンソーシアムが作られたが、現在はOASISの一部となっている。
いくつかのSOAPメッセージを相互作用させることによってリモートプロシージャコールが実現できる、Webサービスに有効な手段の一つである、などと主張されている。
メッセージの表現にXMLを使用する。メッセージはヘッダとボディから成る。ヘッダはオプショナルであり、ルーティングやセキュリティ、そして トランザクションなどのための情報といったメタ情報を格納する。ボディは、主要な情報すなわちペイロードである。
相互運用性のためにはXML Schemaなどで、なんらかのスキーマを定義することが望ましいであろう。また、WSDLという記述言語がある。
「WS-*」と総称される関連プロトコルが多量にある。
特徴
SOAP はウェブサービスのための「Web services protocol stack」における「Messaging Protocol」層を提供する。SOAPはXMLを基盤とするプロトコルで、三つの部分で構成される:
- 「envelope」(小包)。これはメッセージ構造を定義する[2]。また、どのようにこれを処理すべきかを定義する:
- アプリケーションで定義されるデータ型のインスタンスを表現するためのエンコーディング規則
- プロシージャ呼出しとレスポンスを表すための約束事
SOAPには三つの大きな特徴がある:
- 拡張性 (セキュリティやWS-Addressingなどは開発中の拡張機能である)
- 中立性 (SOAPはHTTP, SMTP, TCP, UDP,JMSなどのいかなるプロトコル上でも運用できる)
- 独立性 (SOAPはいかなるプログラミングモデルでも使える)
SOAPで出来ることの一例を挙げると、たとえば或るアプリケーションが、ウェブサービス(例えば不動産価格データベース)を利用可能なサーバに、検索条件パラメータを入れたSOAPリクエストを送ったとする。すると、そのサーバーはSOAPレスポンス(価格、場所、特徴などの検索結果データを書き込んだXML形式文書)を返してくる。返ってきたデータは標準化された機械処理可能な書式で来るので、それを受け取ったアプリケーションはそのデータを直接処理できる。
SOAPアーキテクチャには、次の幾つかのレイヤーのための仕様がある:
- メッセージ形式
- メッセージ交換パターン(Message Exchange Pattern : MEP)
- 下層のトランスポートプロトコルとの結合
- メッセージ処理モデル
- プロトコル拡張性
仕様
SOAP仕様はメッセージングの枠組みを定義したもので、次の各部で構成される:
- SOAP processing model :SOAPメッセージを処理するための規約を定義する
- SOAP extensibility model :SOAP機能とSOAPモジュールの概念を定義する
- SOAP underlying protocol binding :SOAPノード間でSOAPメッセージを交換するために用いる下層プロトコルへの結合を定義するための規約を示したフレームワーク。
- SOAP message construct :SOAPメッセージの構造を定義する
SOAPメッセージの例
一例として、あるクライアントが、ショッピングサイト(例示のための架空のものである)のサービスに商品IDを提示して商品の詳細を求めるリクエストメッセージはおおよそ以下のようになる。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getProductDetails xmlns="http://warehouse.example.com/ws">
<productId>827635</productId>
</getProductDetails>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
これに対し、ショッピングサイトのサービス側の、要求に基づく商品データを含むレスポンスメッセージはおおよそ以下のようになる。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
<getProductDetailsResult>
<productName>Toptimate 3-Piece Set</productName>
<productId>827635</productId>
<description>3-Piece luggage set. Black Polyester.</description>
<price>100.50</price>
<inStock>true</inStock>
</getProductDetailsResult>
</getProductDetailsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
関連項目
外部リンク
- SOAP Version 1.2 (W3C)
脚注
- ^ 「In previous versions of this specification the SOAP name was an acronym. This is no longer the case.」(SOAP Version 1.2 Part 1 : Messaging Framework (Second Edition)より引用)。
- ^ Hirsch, Frederick; Kemp, John; Ilkka, Jani (2007-01-11). Mobile Web Services: Architecture and Implementation. John Wiley & Sons (2007発行). p. 27. ISBN 9780470032596 2014年9月15日閲覧. "Simple Object Access Protocol (SOAP) はメッセージの小包の構造を定義している。小包は、アプリケーション用の荷物(メッセージ・ボディ)と、管理情報(メッセージ・ヘッダ)の二つの部分で構成される。"