COM+ SOAP 服务概述

通过允许用户使用 Web 浏览器轻松通过网络访问远程服务器上的信息,HTTP 彻底改变了计算机的使用。 XML Web 服务现在允许客户端应用程序通过网络轻松调用远程方法,彻底改变了应用程序开发。

对于让客户端应用程序能够调用在远程服务器上实现的方法,这通常也很有用。 有时,该方法使用存储在远程服务器上的易失性信息(例如,返回与给定时钟周期符号对应的股票的当前价格的方法)。 在其他情况下,开发人员希望能够升级方法实现,而无需重新部署使用该实现的所有应用程序。

与网页一样,可使用 HTTP 通过 Web 服务器(如 IIS)访问 XML Web 服务。 但是,这些 HTTP 数据包包含对服务器上实现的方法调用的 SOAP 编码输入和输出参数,而不是用 HTML 编码的网页。

若要使用 XML Web 服务,需要知道公开服务的 URL,以及要调用的方法的名称,并且必须向该方法提供输入参数。 SOAP 1.1 标准提供了以下 HTTP 数据包的示例,该数据包包含在 https://www.stockquoteserver.com/StockQuote 对 XML Web 服务的远程调用,这将返回对应于给定时钟周期符号的股票的当前价格。

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+ 使得使用 XML Web 服务变得特别容易,使您能够以完全透明的方式,在 CAO 模式下将现有的 COM+ 应用程序用作 XML Web 服务。 如果从服务器导出作为 XML Web 服务公开的 COM+ 应用程序,则只要使用导入的应用程序,任何导入应用程序的客户端都可以采用透明方式使用服务器的 XML Web 服务。 通过此功能,可以将现有 COM+ 应用程序转换为 XML Web 服务,并通过网络轻松部署这些服务。

使用 XML Web 服务在远程过程调用 (RPC) 的替代实现方面具有多种独特优势,具体包括:

  • SOAP 是真正的跨平台 RPC 实现,可提高互操作性。
  • XML Web 服务支持含输入和输出参数的方法。
  • XML Web 服务通过 HTTP 运行,这通常可以穿透可能阻止其他 RPC 实现的防火墙。
  • 使用 COM+ 实现 XML Web 服务时,开发人员无需编写任何专用代码;这相比替代 RPC 机制具有巨大的优势。

注意

XML Web 服务不支持异步或透明事务调用。 如果需要此功能,请使用 COM+ 排队组件服务。

 

COM+ SOAP 服务安全注意事项