SOAP (プロトコル)
テンプレート:Infobox SOAP(ソープ)は、XML-RPCから発展した、XML Webサービスのための、XMLベースのRPCプロトコルである。元はSimple Object Access Protocolの頭字語とされていたが、さまざまな成り行きの結果Simpleとは言いかねる複雑怪奇なシロモノとなりはてた[1]といったこともあり、現在は「何かの頭字語ではない」とされている[2]。
概要
拡張可能で分散的なフレームワークであり、HTTP以外にも様々なコンピュータネットワークの通信プロトコルで利用することができると主張され、SMTPへのバインディングも示されているが、実際上TCP/IP上のHTTP(S)以外の使用は現実的ではない。主要な実装としてApache Axisがある。多くの実装の間で相互運用性に問題があるとしてWS-Iというコンソーシアムが作られたが、現在はOASISの一部となっている。
いくつかのSOAPメッセージを相互作用させることによってリモートプロシージャコールが実現できる、Webサービスに有効な手段の一つである、などと主張されている。
メッセージの表現にXMLを使用する。メッセージはヘッダとボディから成る。ヘッダはオプショナルであり、ルーティングやセキュリティ、そして トランザクションなどのための情報といったメタ情報を格納する。ボディは、主要な情報すなわちペイロードである。
相互運用性のためにはXML Schemaなどで、なんらかのスキーマを定義することが望ましいであろう。また、WSDLという記述言語がある。
「WS-*」と総称される関連プロトコルが多量にある。
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)
脚注
テンプレート:W3C標準- ↑ http://yohei-y.blogspot.jp/2007/01/s-s.html
- ↑ http://www.w3.org/TR/soap12-part1/ - Introduction のノートに「In previous versions of this specification the SOAP name was an acronym. This is no longer the case.」とある。