SOAP (プロトコル)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ネットワーク・プロトコル
アプリケーション層
DHCP · DNS · FTP · Gopher · HTTP · IMAP4 · IRC · NNTP · XMPP · POP3 · SIP · SMTP · SNMP · SSH · TELNET · RPC · RTCP · RTSP · SSL/TLS · SDP · SOAP · CMIP · STUN · GTP · NTP · EHRP
トランスポート層
TCP · UDP · DCCP · SCTP · RTP · RSVP · IGMP · PPTP · RUDP · UDP-Lite
ネットワーク層
IP (IPv4 · IPv6) · OSPF · IS-IS · BGP · IPsec · ARP · RARP · RIP · ICMP · ICMPv6 · IGP
データリンク層
802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · トークンリング · イーサネット · FDDI · フレームリレー · GPRS · EVDO · HSPA · HDLC · PPP · SLIP · L2TP · ISDN · SMDS · アークネット
物理層
イーサネット物理層 · モデム · PLC · SONET/SDH · G.709 · OFDM · 光ファイバー · 同軸ケーブル · ツイストペアケーブル

SOAP(ソープ)は、ソフトウェア同士がメッセージ(オブジェクト)を交換する(リモートプロシージャコール - 遠隔手続呼び出し)ためのプロトコル。ここでいうオブジェクトとはオブジェクト指向のそれである。以前は Simple Object Access Protocol という名前だった。

SOAPは拡張可能で分散的なフレームワークであり、HTTPSMTPなど様々なコンピュータネットワーク通信プロトコルで利用することができる。

いくつかのSOAPメッセージを相互作用させることによってリモートプロシージャコールが実現できる。SOAPはWebサービスに有効な手段の一つである。

SOAPはXMLに基づいており、XMLの、ヘッダとボディを組み合わせるデザインパターンで設計されている。「ヘッダ」は、オプショナルであり、ルーティングセキュリティ、そして トランザクションなどのための情報といったメタ情報を格納できる。「ボディ」部分は、主要な情報、別の言い方をすればペイロードと呼ばれるものである。SOAPのペイロードはXML Schemaで規定することができる。

[編集] SOAPメッセージの例

一例として、あるSOAPクライアントが、架空のショッピングサイトのWebサービスから商品データを整形してSOAPメッセージとして要求する(SOAPリクエスト)際、SOAPメッセージはおおよそ以下のようになる。

 <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>

これに対し、ショッピングサイトのWebサービス側が、要求に基づいて商品データを返信する場合はこのようなSOAPメッセージとなる。

 <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>96.50</price>
         <inStock>true</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>

[編集] 関連項目

[編集] 外部リンク