ホーム > 読んだ

倉光君郎
ビギナーのためのWebサービスを支えるXMLベースの新プロトコル
SOAP入門

ガイド

書誌

author倉光君郎
publisherCQ出版社
year『OPEN DESIGN 2001.3』p.84-87

目次

1要約

履歴

editor唯野
2001.1.16読了
2001.1.29公開
2002.4.29修正

要約

SOAP (Simple Object Access Protocol) は、CORBA や COM といった分散オブジェクトへのアクセスを XML によって統一的に表現しようという新しいプロトコル。インターネットビジネスの広がりに伴う異種システム間通信において、ファイアウォール越しにではなく一般的な Web サーバやメールサーバのポート越しに分散オブジェクトへアクセスし、そのためのデータ(テキストデータ)のシリアライズ・フォーマットとして XML を使おうというもの。

SOAP はマイクロソフトが提唱したプロトコルだが、マイクロソフトは SOAP の仕様を早い段階から W3C に提案しており、オープン性がある。そして、XML というテキストベースであることによって、IIOP や DCOM といった技術抜きでの記述(可搬性)を実現している。また、メソッドで使用されるデータ構造の定義は XML スキーマによって参照することができる。XML スキーマには実際のプログラミング言語に対するマッピング上の切り分けという問題もあるが、オブジェクト指向的な記述という点での共通点も存在している。

とはいえ、現在の SOAP には(XML のパースなどによる)パフォーマンスや具体的なセキュリティ対策といった面における不備も存在している。(ちなみに現在での最新の仕様は 1.1。)そのため現状での SOAP はインターネットアクセスにおけるソケットを意識させない、より上位のプロトコルのひとつとして捉えることができる。SOAP の本格的な普及には関連ツールの準備などが必要といえる。

SOAP メッセージのサンプル

これは http://www.w3.org/TR/SOAP/ にあるサンプルのコピー。雰囲気からも分かるようにメッセージはエンベロープ(必須)とヘッダ(省略可)、ボディ(必須)より構成される。

リクエスト
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV=
    "http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle=
    "http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
      <m:GetLastTradePrice xmlns:m="Some-URI">
        <symbol>DIS</symbol>
      </m:GetLastTradePrice>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
レスポンス
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope
  xmlns:SOAP-ENV=
    "http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle=
    "http://schemas.xmlsoap.org/soap/encoding/"/>
    <SOAP-ENV:Body>
      <m:GetLastTradePriceResponse xmlns:m="Some-URI">
        <Price>34.5</Price>
      </m:GetLastTradePriceResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP を用いた Web サービスに関しては 「Web サービスの本質に迫る」 をどうぞ。