コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「SOAP (プロトコル)」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
カテゴリの追加・削除
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
71行目: 71行目:
== SOAPメッセージの例 ==
== SOAPメッセージの例 ==
一例として、あるクライアントが、ショッピングサイト(例示のための架空のものである)のサービスに商品IDを提示して商品の詳細を求めるリクエストメッセージはおおよそ以下のようになる。
一例として、あるクライアントが、ショッピングサイト(例示のための架空のものである)のサービスに商品IDを提示して商品の詳細を求めるリクエストメッセージはおおよそ以下のようになる。
<source lang="xml"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<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></source>
</SOAP-ENV:Envelope></syntaxhighlight>
これに対し、ショッピングサイトのサービス側の、要求に基づく商品データを含むレスポンスメッセージはおおよそ以下のようになる。
これに対し、ショッピングサイトのサービス側の、要求に基づく商品データを含むレスポンスメッセージはおおよそ以下のようになる。
<source lang="xml"><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<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></source>
</SOAP-ENV:Envelope></syntaxhighlight>


== 関連項目 ==
== 関連項目 ==

2020年7月5日 (日) 22:38時点における版

SOAP(ソープ)は、コンピュータネットワーク内のWebサービスの実装において、構造化された情報を交換するための通信プロトコルの仕様である。拡張性中立性、独立性を導入することを目的とする。XML-RPCから発展した、XML Webサービスのための、XMLベースのRPCプロトコルである。

メッセージ形式としてXMLインフォメーションセットを使用する。また、メッセージのネゴシエーションおよび伝送はアプリケーション層のプロトコル(多くの場合HTTPまたはSMTP)に依存する。

SOAPにより、全く異なるオペレーティングシステム(例えばWindowsLinux)上で走っているプロセス間でも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には三つの大きな特徴がある:

  1. 拡張性 (セキュリティやWS-Addressingなどは開発中の拡張機能である)
  2. 中立性 (SOAPはHTTP, SMTP, TCP, UDP,JMSなどのいかなるプロトコル上でも運用できる)
  3. 独立性 (SOAPはいかなるプログラミングモデルでも使える)

SOAPで出来ることの一例を挙げると、たとえば或るアプリケーションが、ウェブサービス(例えば不動産価格データベース)を利用可能なサーバに、検索条件パラメータを入れたSOAPリクエストを送ったとする。すると、そのサーバーはSOAPレスポンス(価格、場所、特徴などの検索結果データを書き込んだXML形式文書)を返してくる。返ってきたデータは標準化された機械処理可能な書式で来るので、それを受け取ったアプリケーションはそのデータを直接処理できる。

SOAPアーキテクチャには、次の幾つかのレイヤーのための仕様がある:

  • メッセージ形式
  • メッセージ交換パターン(Message Exchange Pattern : MEP)
  • 下層のトランスポートプロトコルとの結合
  • メッセージ処理モデル
  • プロトコル拡張性

仕様

SOAP structure

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>

関連項目

外部リンク

脚注

  1. ^ 「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)より引用)。
  2. ^ Hirsch, Frederick; Kemp, John; Ilkka, Jani (2007-01-11). Mobile Web Services: Architecture and Implementation. John Wiley & Sons (2007発行). p. 27. ISBN 9780470032596. https://books.google.com/books?id=v5f0ORBgd5IC 2014年9月15日閲覧. "Simple Object Access Protocol (SOAP) はメッセージの小包の構造を定義している。小包は、アプリケーション用の荷物(メッセージ・ボディ)と、管理情報(メッセージ・ヘッダ)の二つの部分で構成される。"