シンプルオブジェクトアクセスプロトコル(SOAP)入門 - TechRepublic

シンプルオブジェクトアクセスプロトコル(SOAP)入門 - TechRepublic

ブライアン・ムーア

Electronic Business XML(ebXML)標準化団体は3月、メッセージング仕様にSimple Object Access Protocol(SOAP)を組み込むことを発表しました。ガートナーによると、この動きは、メッセージング仕様としてSOAPとMIMEのどちらを採用すべきか検討していた企業にとって、より明確な選択肢となることを示しています。(TechRepublicはガートナーの独立子会社です。)

SOAPは主に、マシンやネットワークの境界を越えてリモートプロシージャコールを行うために使用されます。SOAPには主に以下の利点があります。

  • HTTP プロトコルを介してデータを投稿することは、配信メカニズムが広く利用可能であるだけでなく、SOAP が他の方法では問題となるファイアウォールを通過できることも意味します。
  • SOAP はオープン スタンダードの XML を使用してデータをフォーマットするため、簡単に拡張でき、適切にサポートされます。
  • SOAP は XML と HTTP に基づいたワイヤ プロトコルであるため、おそらく現在までに最も広く相互運用可能なプロトコルです。

SOAP によりシステムの設計方法が変わり、Web サービス経由でサードパーティのソフトウェアを利用しやすくなります。

この記事では、SOAP の仕組みとこのプロトコルをサポートするシステムの概要を示し、SOAP がどのように「Web サービス」の増加につながっているかを説明します。

仕組み
SOAP は主に標準の HTTP 要求/応答モデルを使用します (図 Aを参照)。

クライアントはメソッド呼び出しをSOAP/XMLでラップし、HTTP経由でサーバーに送信します。XMLリクエストは解析され、メソッド名と渡されたパラメータ、および処理のために委譲されたパラメータが読み取られます。その後、メソッド呼び出しの戻り値(またはフォルトデータ)を含むXMLレスポンスがクライアントに返されます。最後に、クライアントはレスポンスXMLを解析し、戻り値を利用します。

図A
SOAP は標準の HTTP 要求/応答モデルを使用します。

サーバーはSOAPリクエストを処理するために「リスナー」を使用します。リスナーとは、指定されたURLにあるサーバーコードであり、XMLリクエストを解析し、プロシージャを呼び出し、結果をXMLでラップしてレスポンスとして送信します(図Bを参照)。

図B
SOAP呼び出しのデータフロー

しかし、SOAPがサポートする転送プロトコルはHTTPだけではありません。SOAPバージョン1.1では、仕様が拡張され、SMTP(Simple Mail Transfer Protocol)、FTP(File Transfer Protocol)、その他テキスト転送が可能なプロトコルなど、他の転送プロトコルもサポートされるようになりました。これらのプロトコルは非同期SOAP呼び出しに使用できるため、クライアントアプリケーションはSOAPサービスを呼び出す際にサーバーからの応答を待つ必要がなくなります。

SOAP の用途
SOAP は、インターネット アプリケーション開発のあり方を一変させる可能性を秘めた「Web サービス」の急速な普及を促進しています。

Webサービスは、特定のビジネスタスクを実行するインターネットベースのモジュールです。サービスは、Webサービス記述言語(WSDL)でインターフェースを公開し、他のアプリケーションはSOAP呼び出しによってサービスを呼び出すことができます。

例えば、郵便番号ごとに最新の天気情報を提供するアプリケーションがあるとします。この情報を、新しい顧客層、つまり他のWebアプリケーションにサービスとして提供したいとします。SOAP呼び出しのインターフェースを定義するだけで、呼び出し側は要求された郵便番号をSOAPエンベロープで渡すだけで済みます。アプリケーションは最新の天気データをSOAPでパッケージ化し、HTTPレスポンスとして送信します。

Web サービスは ActiveX コントロールや ActiveX オブジェクトに似ていますが、SOAP 呼び出しを行える人なら誰でも Web サービスを利用できます。UDDI (Universal Description, Discovery and Integration) などのプロジェクトでは、Web 上で利用可能なサービスのカタログを作成しようとしています。
貴社では SOAP をご利用ですか?ご利用の場合は、どのような用途でこのツールをご利用になっているかお聞かせください。下記にコメントを投稿するか、メールでお問い合わせください。SOAP を
使用できるシステムとは?XML と HTTP の両方をサポートするシステムであれば、SOAP をサポートできます。主要なプラットフォームのほとんどには、SOAP 機能をクラスライブラリにラップしたソフトウェア開発キット (SDK) や、リスナーコードを生成するウィザードが用意されています (SDK の一覧は SoapWare.org でご覧いただけます)。

これらのSDKは必須ではありませんが、SOAPの実装を容易にすることができます。SOAPはクロスプラットフォームのリモートプロシージャコールの標準として急速に普及しており、SOAP実装は急速にリリースされています。

SOAPは、他のリモートプロトコルが対処する一部の問題(例:ガベージコレクションや参照によるマーシャリング)には対応していません。これらの機能は、すべてのクライアントとサーバーがサポートしているわけではないため、必要に応じて実装者に委ねられています。

例えば、COM+は参照カウントを使用するのに対し、Javaはガベージコレクションを使用します。もしこれら2つの技術が相互に通信する必要がある場合、プロトコルはどのようにしてオブジェクト参照を追跡し、クリーンアップを実行するのでしょうか?実装は可能ではありますが、プロトコルはクライアントとサーバーのシステムの詳細に縛られてしまうでしょう。SOAPは、すべてのユーザーにとって万能な機能を提供しようとするのではなく、必要に応じてこれらの機能を個々の実装者に委ねています。

SOAP:リモート処理標準である
SOAPは、HTTPまたはXMLテキスト転送が可能なその他のプロトコルを介して、シンプルなテキストとして転送可能なXML形式を提供することで相互運用性を実現します。HTTPとXMLの広範なサポートにより、SOAPはほぼあらゆるソリューションのリモート処理プロトコルとして利用できます。SOAPはXML/RPCなどの類似ソリューションを凌駕する勢いを誇り、急速にリモート処理の標準となりつつあります。

  • Microsoft の SOAP ページ
  • XMLカバーページ
  • SOAPに関するよくある質問
  • TechRepublic の Simple Object Access Protocol (SOAP) デモ

ブライアン・ムーアは、1991年にミネソタ州セントピーターのグスタフス・アドルフス大学で数学の理学士号を取得して以来、ITプロフェッショナルとして活躍しています。開発者およびシステムアーキテクトとして、様々なシステムに携わってきました。最近ではMicrosoftプラットフォームに携わり、Webアプリケーション向けのCOM+コンポーネント開発に注力しています。ドイツで4年間、医療ソフトウェアの開発に携わった後、1998年に米国に戻りました。現在はTechRepublic.comでアプリケーション開発ディレクターを務め、チームと共にベンダーサービスアプリケーションの開発に注力しています。

Tagged: