SOAP
ソフトウェア同士がネットワークを介して処理を呼び出し合うための、XMLに基づくメッセージのプロトコル。主にHTTPの上で使い、分散したアプリケーションを連携させる(Webサービス)。
イマシルちゃんの解説
違う会社が作ったプログラム同士でも、「この形の手紙で頼んでね」っていうルールを決めておけば、仕事を頼み合えるよね。
SOAPは、そのルールの1つなんだ。
XMLっていう、きっちりした書式で手紙(メッセージ)を書いて、HTTPで送るよ。
書式は少し重たいけど、決まりがしっかりしているから、大きな会社のシステム同士をつなぐのに使われてきたんだ!
より深い解説
定義
SOAPは、W3Cで標準化された、XMLで記述したメッセージを交換するためのプロトコルである。もとは Simple Object Access Protocol の略だったが、バージョン1.2からは略語ではなく固有の名前として扱われている。トランスポートには主にHTTPを使い、SMTPなどを使うこともできる。
メッセージの構成
| 要素 | 内容 |
|---|---|
| Envelope(封筒) | メッセージ全体を包む |
| Header(ヘッダー) | 認証、トランザクションなどの付加情報(省略可) |
| Body(本体) | 呼び出す処理と引数、または結果 |
| Fault | エラーの情報 |
サービスが提供する処理や、メッセージの形式は、WSDL(Web Services Description Language)というXMLの文書で記述する。
RESTとの比較
| SOAP | REST | |
|---|---|---|
| 性格 | 厳密に定められたプロトコル | 設計の考え方(アーキテクチャスタイル) |
| メッセージの形式 | XML(決まった構造) | JSON、XMLなど自由 |
| 操作の表し方 | メッセージの中で、呼び出す処理を指定する | URIで資源を指定し、HTTPのメソッド(GET、POST、PUT、DELETE)で操作を表す |
| 機能 | セキュリティ(WS-Security)やトランザクションなどの拡張仕様が豊富 | シンプルで軽い |
| 主な用途 | 企業の基幹システム同士の連携 | Web API、スマートフォンアプリ |
現在の多くのWeb APIは、より軽量なRESTの考え方で作られているが、金融機関や官公庁のシステムなどでは、SOAPも使われている。
ほかの技術との区別
| 技術 | 内容 |
|---|---|
| SOAP | HTTPの上でXMLのメッセージをやり取りし、ネットワーク上に分散したアプリケーションを連携させる |
| WebDAV | HTTPを拡張して、サーバ上のファイルの参照・作成・削除やバージョン管理を行う |
| CoAP | IoT機器向けに、UDPの上でRESTの考え方を実現する軽量なプロトコル |