COM+SOAPサービスの概要

HTTPは、Webブラウザーを使用してネットワーク経由でリモートサーバー上の情報に簡単にアクセスできるようにすることで、コンピューターの使用に革命をもたらしました。 XML Webサービスは、クライアントアプリケーションがネットワーク経由でリモートメソッドを簡単に呼び出せるようにすることで、アプリケーション開発に革命をもたらしました。

多くの場合、クライアントアプリケーションがリモートサーバーに実装されているメソッドを呼び出すことができると便利です。 メソッドは、リモートサーバーに格納されている揮発性の情報(例えば、与えられたティッカーシンボルに対応する株価を返すメソッド)を利用することがあります。 また、開発者は、メソッドを使用するすべてのアプリケーションを再配置することなく、メソッドの実装をアップグレードする機能を必要とすることもあります。

Webページと同様に、XML Webサービスには、HTTPを使用してIISなどのWebサーバー経由でアクセスします。 ただし、これらのHTTPパケットには、HTMLでエンコードされたWebページではなく、SOAPでエンコードされた、サーバーに実装されているメソッドの呼び出しの入力パラメーターと出力パラメーターが含まれています。

XML Webサービスを使用するには、サービスが公開されているURLと呼び出すメソッドの名前を知っている必要があり、メソッドに入力パラメーターを指定する必要があります。 SOAP 1.1標準では、https://www.stockquoteserver.com/StockQuoteのXML Webサービスへのリモート呼び出しを含む以下のHTTPパケットのサンプルが提供されています。このサービスは、与えられたティッカーシンボルに対応する現在の株価を返します。

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="https://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="https://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>

前の例で示したように、SOAPはHTTP要求に埋め込むことができるXMLインスタンスです。 同様に、次の例に示すように、結果はSOAPペイロードを含むHTTPパケットとして返されます。

HTTP/1.1 200 OK
Content-Type: text/xml; "charset=utf-8"
Content-Length: nnnn

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="https://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="https://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>

XML webサービスの基礎となるインフラストラクチャをある程度理解しておくと便利ですが、COM+を使用すると、XML webサービスを簡単に作成して使用できるため、このレベルを詳しく調べる必要はほとんどありません。

任意のCOM+アプリケーションで構成されているCOMコンポーネントの既定のインターフェイスのメソッドをXML webサービスとして公開できます。 コンポーネントを記述するときに、特別なプログラミングの考慮事項は必要ありません。ただし、公開するメソッドが既定のインターフェイスに含まれている必要があり、コンポーネントが (サーバーのCOM+カタログで) 構成されている必要があります。 ネットワークインターフェイスを介して通信したり、SOAPを解析したりするためのコードを記述する必要はありません。 XML Webサービスを作成するためにCOM+ SOAPサービスを使用する詳細な手順については、XML Webサービスの作成に関する記事を参照してください。

COM+アプリケーションをXML webサービスとして公開すると、XML webサービスから使用できるすべてのメソッドの構文に関する詳細情報が、Webサービス記述言語(WSDL)を使用して自動的に公開されます。 この情報は、XML webサービスを使用するクライアントによって使用されます。

COM+では、次の2つの方法でリモートXML webサービスにアクセスして使用できます。

  • 既知のオブジェクト(WKO)モードは、WSDLを使用する構文を発行するXML Webサービスへのアクセスに使用できます。当該のXML WebサービスがCOM+やMicrosoft Windowsを使用して作成されていない場合でも使用できます。
  • クライアントアクティブ化オブジェクト(CAO)モードは、COM+アプリケーションを公開して作成されたXML Webサービスへのアクセスにのみ使用できます。 CAOモードでは、現在のSOAP標準でサポートされていない機能である永続的な接続を使用することでパフォーマンスが向上します。

どちらの方法でも、クライアントアプリケーションは、ネットワークインターフェイスを介して通信するコードを記述したり、SOAPを解析したりすることなく、簡単な方法でXML webサービスのメソッドをリモートで呼び出すことができます。 それぞれのモードでXML Webサービスにアクセスする方法の詳細については、CAOモードでのXML WebサービスへのアクセスWKOモードでのXML Webサービスへのアクセスの各記事を参照してください。

メモ

COM+はSOAP-RPC仕様のみをサポートしており、SOAP-Document仕様はサポートしていません。

 

COM+を使用すると、既存のCOM+アプリケーションをCAOモードのXML Webサービスとして完全に透過的に使用できるため、XML Webサービスの使用が特に簡単になります。 サーバーからXML Webサービスとして公開されたCOM+アプリケーションをエクスポートする場合、アプリケーションをくインポートするすべてのクライアントは、インポートされたアプリケーションが使用される際は常に、サーバーのXML Webサービスを透過的に使用できます。 この機能により、既存のCOM+アプリケーションをXML Webサービスに変換し、それらのサービスをネットワーク経由で非常に簡単に配置できます。

XML Webサービスを使用すると、リモートプロシージャコール (RPC) の代替実装よりも、次のような独自の利点がいくつかあります。

  • SOAPは真のクロスプラットフォームRPC実装であり、相互運用性が向上します。
  • XML Webサービスは、入力パラメーターと出力パラメーターの両方を持つメソッドをサポートします。
  • XML Webサービスは、通常、他のRPC実装をブロックする可能性のあるファイアウォールを通過できるHTTP上で実行されます。
  • XML WebサービスがCOM+を使用して実装されている場合、開発者は特別なコードを記述する必要はありません。これは、他のRPCメカニズムよりも大きな利点です。

メモ

XML webサービスは、非同期または透過的なトランザクション呼び出しをサポートしていません。 この関数が必要な場合は、COM+キューコンポーネントを使用してください。

 

OM+SOAPサービスのセキュリティに関する考慮事項