SOAP(Simple Object Access Protocol)
更新日:
用語解説
SOAPは、分散環境で構造化情報を交換するためのXMLベースのメッセージング枠組みです。SOAP Envelope内に任意のHeaderと必須のBodyを持ち、処理モデル、拡張方法及び下位プロトコルへのbindingを定めます。HTTPで使われることが多いものの、SOAP自体はHTTPだけに限定されません。
■ 試験で押さえるポイント
EnvelopeはSOAPメッセージ全体の境界、Headerは認証・トランザクション・経路等の拡張情報、Bodyはアプリケーションデータを格納します。処理失敗はBody内のFaultで、コード、理由、詳細等を表します。
SOAP名前空間によって版と要素の意味を識別します。XML名前空間、文字コード、スキーマ及びSOAP 1.1/1.2のContent-Type等が一致しないと、見た目が似たXMLでも相互運用できません。
Header blockはroleで処理対象ノードを指定でき、mustUnderstandにより対象ノードが理解できない場合の失敗を要求できます。送信者から最終受信者までの途中にSOAP intermediaryを置く処理モデルもあります。
SOAP bindingはメッセージをHTTP等で運ぶ規則です。HTTP request/responseとの組合せが一般的ですが、基盤仕様は別の下位プロトコルへのbindingも許し、「SOAP=HTTP上のXML RPC」とだけ覚えません。
WSDLはサービスの操作、メッセージ、型、エンドポイント等を機械可読に記述する別仕様です。SOAPメッセージそのものとサービス契約を区別し、WSDLなしのSOAP利用も概念上可能です。
SOAPの中核仕様だけで機密性、認証、信頼性又はトランザクションが自動的に得られるわけではありません。通信路にはTLS、メッセージ単位にはWS-Security等を要件に応じて使い、XML署名・暗号化の対象範囲を検証します。
RESTはアーキテクチャスタイル、SOAPはメッセージングプロトコルであり単純な新旧関係ではありません。厳密な契約、既存WS-*機能、相互運用要件ではSOAPが適する場合があり、XML処理負荷や複雑性とのトレードオフで選びます。
■ 過去問での着眼点
SOAPメッセージはEnvelope、任意のHeader、必須のBodyから成り、エラーはFaultで表します。SOAPはXMLメッセージの処理規約で、HTTPは代表的な運搬手段、WSDLはサービス契約、TLSやWS-Securityは保護機能という違いを押さえます。SOAPはHTTP専用でも、SOAPだけで安全になるわけでもない点が重要です。
例: 受注サービスではBodyへ注文内容、Headerへ認証やトランザクション識別子を入れてHTTPSで送れます。形式違反をSOAP Faultで返しても、業務上の在庫不足を通常応答で返す設計もあり、通信エラーと業務結果を区別します。