COM+ SOAP 服務概觀

HTTP 徹底改變的電腦使用方式是讓使用者使用網頁瀏覽器,以便透過網路輕鬆存取遠端伺服器上的資訊。 XML Web 服務現在已徹底改變應用程式開發,讓用戶端應用程式能夠透過網路輕鬆呼叫遠端方法。

用戶端應用程式通常很適合呼叫在遠端伺服器上實作的方法。 有時候,方法會使用儲存在遠端伺服器上的揮發性資訊(例如,傳回對應至指定刻度符號之股票目前價格的方法)。 在其他時候,開發人員想要升級方法實作的能力,而不需要重新部署使用該實作的所有應用程式。

就像網頁一樣,XML Web 服務是透過使用 HTTP 的 Web 伺服器存取的,例如 IIS。 不過,這些 HTTP 封包不是以 HTML 編碼的網頁,而是包含呼叫伺服器上實作之方法的輸入和輸出參數,並以 SOAP 編碼。

若要使用 XML Web 服務,您必須知道公開服務的 URL,以及您想要呼叫的方法名稱,而且您必須提供方法的輸入參數。 SOAP 1.1 標準 提供下列 HTTP 封包範例,其中包含 XML Web 服務的 https://www.stockquoteserver.com/StockQuote遠端呼叫,它會傳回對應至指定刻度符號的股票目前價格。

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進行通訊。 如需使用 COM+ SOAP 服務建立 XML Web 服務的詳細指示,請參閱 建立 XML Web 服務

當您將 COM+ 應用程式公開為 XML Web 服務時,會使用 Web 服務描述語言 (WSDL) 自動發佈 XML Web 服務中所有可用方法語法的詳細資訊。 使用 XML Web 服務的用戶端會使用此資訊。

COM+ 提供兩種方式讓您存取及使用遠端 XML Web 服務,如下所示:

  • 已知物件 (WKO) 模式可用來存取任何使用 WSDL 發佈其語法的 XML Web 服務,即使該 XML Web 服務不是使用 COM+ 或甚至是 Microsoft Windows 建立也一樣。
  • 用戶端啟動的物件 (CAO) 模式只能用來存取透過公開 COM+ 應用程式所建立的 XML Web 服務。 CAO 模式會使用持續性連線來提升效能,這是目前SOAP標準不支援的功能。

這兩種方法都允許用戶端應用程式以直接的方式遠端呼叫 XML Web 服務的方法,而不需要撰寫程式代碼,即可透過網路介面或剖析 SOAP 進行通訊。 如需如何在任一模式中存取 XML Web 服務的詳細資訊,請參閱 在 CAO 模式 中存取 XML Web 服務,以及在 WKO 模式中存取 XML Web 服務。

注意

COM+ 僅支援 SOAP-RPC 規格,不支援 SOAP-Document 規格。

 

COM+ 可讓您以完全透明的方式,在 CAO 模式中使用現有的 COM+ 應用程式做為 XML Web 服務,讓使用 XML Web 服務變得特別容易。 如果您從伺服器匯出已公開為 XML Web 服務的 COM+ 應用程式,則每當使用匯入的應用程式時,任何匯入應用程式的用戶端都可以以透明方式使用伺服器的 XML Web 服務。 這項功能可讓您將現有的 COM+ 應用程式轉換成 XML Web 服務,以及透過網路部署這些服務非常簡單。

使用 XML Web 服務比遠端過程調用的替代實作有數個獨特的優點,包括下列各項:

  • SOAP 是真正的跨平臺 RPC 實作,可提升互操作性。
  • XML Web 服務同時支援輸入和輸出參數的方法。
  • XML Web 服務會透過 HTTP 執行,這通常可以穿透可能會封鎖其他 RPC 實作的防火牆。
  • 使用 COM+ 實作 XML Web 服務時,開發人員不需要撰寫任何特製化程序代碼;這是優於替代 RPC 機制的巨大優勢。

注意

XML Web 服務不支援異步或透明交易式呼叫。 當您需要這項功能時, 請使用 COM+ 佇列元件 服務。

 

COM+ SOAP 服務安全性考慮