日期:2011-10-17  浏览次数:20391 次

COM+ Web 服务:通过复选框路由到 XML Web Services
John Noss 和 Jonathan Hawkins
Microsoft Corporation
2001年11月

摘要:COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活。本文通过几个示例介绍基本的互操作性、配置以及托管和非托管 COM+ 组件(在 Microsoft Windows .NET Server 和 Microsoft Windows XP Professional 上作为 XML Web Services 发布)的部署。

目录

  • 简介
  • 简单的已知对象 (WKO) 示例
  • 简单的客户端激活对象 (CAO) 示例
  • 事务性组件示例
  • 一切才刚刚开始

简介


COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活。本文通过几个示例介绍基本的互操作性、配置以及托管和非托管 COM+ 组件(在 Microsoft Windows .NET Server 和 Microsoft® Windows® XP Professional 上作为 XML Web Services 发布)的部署。还通过示例介绍了几个新功能,使运行 Windows XP 的客户端能够访问远程服务器上的 XML Web Services。
当开发人员使用 .NET Remoting 和托管代码来完善现有的非托管 COM+ 服务器和客户端代码时,这些功能可以帮助他们利用和简化迁移过程。在 .NET 框架的测试阶段,有许多用户问及如何配置 .NET Remoting 来进行简单的跨计算机激活操作。COM+ Web 服务的解决方案是同时自动配置服务器 (Microsoft Windows .NET Server) 和客户端 (Microsoft Windows XP Professional) 计算机,使用 .NET Remoting 来提供 SOAP 以替代 DCOM。
Microsoft Windows XP 和 Microsoft .NET 框架是本年度发布的两个最重要的软件。二者的目的都是为了简化过程并提高软件开发人员的能力,因此利用这两种产品并发挥各自优势来提供一套集成的、易于使用的解决方案就成为自然之选。COM+ Web 服务提供了一种简单的方法,可以将 COM+ 组件发布为 XML Web Services ;还提供了新的集成功能,用于从客户端计算机访问 XML Web Services。从以下 Microsoft Visual Basic Scripting Edition (VBScript) 示例中可以了解其易于使用的特点,该示例用于确定 Alaska 的 Fairbanks 的当前气温。请在 Windows XP(已安装 .NET 框架)或 Windows .NET Server 上运行此示例:
set SoapObj = GetObject   ("soap:wsdl=http://www.xmethods.net/sd/TemperatureService.wsdl")WScript.Echo "Fairbanks 气温 = " & SoapObj.getTemp("99707")

在上面的示例中,服务器是在 Linux 上运行的 Apache SOAP Server,但也可以使用任何具有标准 Web 服务说明语言 (WSDL) 描述功能的 SOAP V1.1 服务器。
注意: 如果出现“未找到服务器”错误,您需要在控制面板的 Internet 选项中手动配置防火墙设置。

使用 SOAP 作为计算机之间通信协议的优点之一,在于它增加了可以交互操作的计算机的种类。.NET Remoting 具有以下两种基本操作模型:
  • 已知对象 (WKO): WKO 是 SOAP V1.1 所支持的最常见的 XML Web Services 模型。它允许与其他运行 SOAP V1.1 兼容堆栈的计算机协同工作。服务器和客户端可以是运行 Apache SOAP 的非 Windows 服务器和运行 pocketSOAP 的 Pocket PC,也可以是基于 Windows 的服务器和客户端。唯一的要求是服务器上必须安装了与 WSDL 1.1 版本兼容的描述功能,以便生成相应的代理。此代理是在运行时生成的,并且第一次使用 WSDL 名字对象时没有用户介入。
  • 客户端激活的对象 (CAO): CAO 提供了更丰富的开发环境,包括稳定持久的连接。较之典型的 XML Web Services 模型,它更类似于 DCOM 模型,但要求在服务器和客户端上都安装有某一版本的 .NET 框架。

COM+ Web 服务可以使用 WKO 和 CAO 两种激活模型,而且所有的服务器应用程序都可以提供 WKO 和 CAO 端点。通过组合使用激活模型、XML Web Services 和 .NET Remoting,开发人员可以轻松地组合和匹配托管及非托管的客户端和服务器。下表所示为两种激活模型所支持方案的示例。
表 1:WKO 模型支持的方案WKO 客户端WKO 服务器VB 6.0 或非托管 C++VB 6.0 或非托管 C++VB 6.0 或非托管 C++VB .NET 或 C#VB 6.0 或非托管 C++SOAP V1.1(在 WSDL 中描述)VB 6.0 或非托管 C++Microsoft SOAP(ATL Server,SOAP TK)C# 或 VB .NETSOAP V1.1(在 WSDL 中描述)C# 或 VB .NETVB 6.0 或非托管 C++C# 或 VB .NETVB .NET 或 C#C# 或 VB .NETMicrosoft SOAP(ATL Server,SOAP TK)Microsoft SOAP Toolkit V2.0VB 6.0 或非托管 C++Microsoft SOAP Toolkit V2.0C# 或 VB .NETSOAP v1.1VB 6.0 或非托管 C++SOAP v1.1C# 或 VB .NET
表 2:CAO 模型支持的方案CAO 客户端CAO 服务器C# 或 VB .NET(早期绑定)VB 6.0 或非托管 C++VB 6.0 或非托管 C++VB 6.0 或非托管 C++VB 6.0 或非托管 C++C# 或 VB .NETC# 或 VB .NET[TD]C# 或 VB .NET
这种新的 COM+ Web 服务适用于以下用户:
  1. 当前安装有 Microsoft® Visual Basic® 6.0 或者非托管 Microsoft Visual C++® COM+ 应用程序(需要通过防火墙才能进行某些激活操作)的 COM+ 用户。(使用 SOAP 并不排斥通过 DCOM 访问服务器上的相同组件,客户端计算机可以选择协议。)对于这些客户来说,如果要使用 SOAP 而不是 DCOM,则使用客户端代理导出和 CAO 模型都不需要更改客户端和服务器应用程序。只需要在服务器应用程序上启用 SOAP,将其作为客户端代理导出,然后将代理安装在要用作 SOAP 客户端的 Windows XP 计算机上。
  2. 完全迁移到 Windows XP 和 Windows .NET Server 上的托管代码的公司。COM+ Web 服务有助于在连接的两端设置远程端点。
  3. 需要在上述两种方案中组合和匹配各种服务的开发人员,以及编写托管服务器组件、或带有非托管服务器组件的托管客户端应用程序的开发人员。在第二种情况中,开发人员可以利用 COM+ Web 服务,在用托管代码替换之前充分利用早期的非托管组件。

简单的已知对象 (WKO) 示例


除了对 Linux 和 ApacheIn 提供 SOAP 支持外,将 COM+ Web 服务应用于其他 Microsoft 产品(例如 ATL Server Web 服务)也非常简单。只需使用 Microsoft Visual Studio® .NET 在服务器上生成、编译和部署默认的 ATL Web 服务即可。对它进行访问的客户端代码如下(请用驻留 ATL Server 应用程序的 Web 服务器名称替换 MyServer,用您的 ATL Server DLL 的名称替换 JALTServer):
mon="soap:wsdl=http://MyServer/JALTServer/JALTServe