W3C規格解説
SOAP 1.2
(株)日本ユニテック
青木 秀起
SOAPとは、インターネット上にあるWeb サービスを利用する方法を定めたもので、2003年6月24日に勧告になりました。SOAPの概要については、弊社サイト(http://www.utj.co.jp/xml/dev/soap/soap1_1.html)をご覧ください。この解説では、SOAP開発の経緯やメリットなどを解説します。
SOAP 1.2仕様一覧
公開されているSOAP 1.2仕様は以下のとおりです。
<勧告>
●SOAP Version 1.2 Part 0: Primer - http://www.w3.org/TR/soap12-part0/
概説的な仕様解説、利用シナリオ
●SOAP Version 1.2 Part 1: Messaging Framework - http://www.w3.org/TR/soap12-part1/
メッセージフレームワーク、メッセージの処理モデル
●SOAP Version 1.2 Part 2: Adjuncts - http://www.w3.org/TR/soap12-part2/
付加情報
●SOAP Version 1.2 Specification Assertions and Test
Collection - http://www.w3.org/TR/soap12-testcollection/
テスト用のデータ集
<ワーキングドラフト>
●SOAP 1.2 Attachment Feature - http://www.w3.org/TR/soap12-af/
ファイル添付機能
●SOAP Version 1.2 Usage Scenarios - http://www.w3.org/TR/xmlp-scenarios/
利用シナリオ
<技術ノート>
●SOAP Version 1.2 Message Normalization - http://www.w3.org/TR/soap12-n11n/
意味的に等価なSOAPメッセージを同一にする変換アルゴリズムの定義
●SOAP Version 1.2 Email Binding - http://www.w3.org/TR/soap12-email
eメール向けプロトコル・バインディング・フレームワーク
SOAP開発の経緯
SOAPの開発は以下のような経緯をたどってきました。
1999年9月 |
DevelopMentor社、Microsoft社、Userland
Software社、SOAPバージョン0.9を公開 |
1999年11月 |
3社はSOAPバージョン1.0をIETFへ提出 |
2000年5月 |
SOAP 1.1をW3Cに技術ノートとして提出 |
2001年12月 |
W3C、SOAP 1.2をワーキングドラフトとして公開 |
2003年6月 |
W3C、SOAP 1.2を勧告として承認 |
SOAP 1.1が公開され、SOAPの実装が進むと、異なるツールで開発したシステムをSOAPで相互接続できないという事態が生じました。SOAP
1.1の仕様にあいまいな点があったため、仕様の解釈にゆらぎが生じたためです。そこで、SOAPの仕様からあいまいさを排除するため、W3CはSOAP
1.2の開発を始め、勧告として承認されるに至ったのです。
SOAP 1.2で変更された主な点は以下のとおりです。
<HTTPプロトコルバインディングヘッダ関連>
●SOAPActionヘッダフィールドを削除
●Content-Typeヘッダフィールドを" text/xml"から"
application/soap+xml"に変更
●HTTP拡張フレームワークを削除
<SOAPエンベロープ関連>
●接頭辞:env
●名前空間URL:http://www.w3.org/2002/06/soap-envelope
●Body要素の後にどんな要素も許可しない
<エンコーディングスタイル関連>
●env:encodingStyle属性は、ヘッダブロックおよびその子孫要素、Body要素の子孫要素、Detail要素の子孫要素でのみ可能
<SOAPヘッダ関連>
●env:NotUnderstood見出し要素を追加
●mustUnderstand属性値は"1"または"0"、あるいは"true"または"false"
●env:actor属性をenv:role属性に変更(属性値に"none"と"ultimateReceiver"を追加)
●env:relay属性を追加
<SOAPエンコーディング規則関連>
●接頭辞:enc
●名前空間URL:http://www.w3.org/2002/06/soap-encoding
●フォルトコードDataEncodingUnknownを追加
●href属性をenc:ref属性に変更
●enc:nodeType属性を追加
●itemType属性でデータ型を、arraySize属性でデータ数を指定
●エラー用フォルトサブコードenc:MissingID、enc:UntypedValueを追加
<RPC表現規則関連>
●接頭辞:rpc
●名前空間URL:http://www.w3.org/2002/06/soap-rpc
●rpc:result要素アクセサを追加
●フォルトコードを追加(rpc:ProcedureNotPresent、rpc:BadArguments)
<その他>
●フォルトコードで、"クライアント"と"サーバ"を"送信者"と"受信者"に変更
●faultcodeをenv:Codeに、faultstringをenvReasonに変更
●env:Reason要素は、xml:lang属性を持ち、複数のenv:Text子要素を持てる
●env:Node要素env:Roleと要素を追加
●env:Details要素の有無はエラーの発生場所と関係がない
●相対的URL参照の基底URIを判別するのにXML Baseを利用する
SOAPのメリット
SOAPのメリットとして、以下の点を挙げることができます。
①使用する通信プロトコルは、HTTPやSMTP、FTPである
SOAPは、ほとんど全てのプラットフォームで利用可能で、ファイアーウォールも容易に通過することができます。
②メッセージ形式は、XMLデータである
XMLは、要素名や属性名を手がかりにした自動処理が可能で、メッセージ仕様が変更されてもシステムの変更を少なくすることができます。
③メッセージの構造は封筒構造
SOAPメッセージは、SOAPヘッダとSOAPボディとに分かれています。SOAPボディには送信したいメッセージ自体を入れ、SOAPヘッダには、認証などのセキュリティ情報、トランザクション情報、セッション情報など、SOAPボディでは直接扱うことのできない情報を入れることができます。このヘッダ機能を使って、SOAPメッセージを処理するアプリケーションは機能を拡張することができるのです。
まとめ
SOAPは、Webサービス連携に欠かせない基本技術で、実装も進んでいます。現時点ではSOAP 1.1をサポートしているツールが多いですが、SOAP
1.2に移行してゆくことでしょう。
関連サービス
標準化仕様の動向調査
最新動向を伝えるDXメールニュース
(無料)
関連キーワード: SOAP
関連キーワード: XML関連規格
|