COM+ Web 服务:通过复选框路由到 XML Web Services (转)7

services|web|xml|复选框

此 C# 程序有两个类:Child 和 Parent。如果运行以下 VBScript 示例,WKO 与 CAO 模型的区别会更加明显:

set c1 = GetObject
   ("soap:wsdl=http://jnoss4/refpass/RefPass.Child.soap?wsdl")
set c2 = GetObject
   ("soap:wsdl=http://jnoss4/refpass/RefPass.Child.soap?wsdl")
c1.SetName("C1")
WScript.Echo c1.CountUp()
WScript.Echo c1.CountUp()
WScript.Echo c1.CountUp()
WScript.Echo c1.CountUp()
WScript.Echo c1.CountUp()
C2.SetName("C2")
WScript.Echo c2.CountUp()
WScript.Echo c2.CountUp()
WScript.Echo c2.CountUp()
WScript.Echo c2.CountUp()
WScript.Echo c2.CountUp()

运行时将显示以下输出内容:

C:\moniker>refpasswko
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

none 1
none 1
none 1
none 1
none 1
none 1
none 1
none 1
none 1
none 1

名称和值说明了单一调用已知对象的无状态性质,因为组件是使用不同的方法调用创建的,所以方法调用之间不保留名称或值。

如果导出客户端代理,然后导入到另一台客户端计算机上,并且运行了下面的 VBScript,则 SOAP 激活将是 CAO 而不是 WKO:

'直接创建两个对象
set c1=CreateObject("RefPass.Child")
set c2=CreateObject("RefPass.Child")
'设置第一个对象的名称,并调用数次
'以递增对象内部计数器
c1.SetName("C1")
WScript.Echo c1.CountUp()
WScript.Echo c1.CountUp()
WScript.Echo c1.Countup()
WScript.Echo c1.CountUp()
WScript.Echo c1.Countup()
'设置第一个对象的名称,并调用数次
'以递增对象内部计数器
c2.SetName("C2")
WScript.Echo c2.CountUp()
WScript.Echo c2.CountUp()
WScript.Echo c2.Countup()
WScript.Echo c2.CountUp()
WScript.Echo c2.Countup()
'创建父对象
set p=CreateObject("RefPass.Parent")
'将子对象传递到父对象,并从父对象调用子对象
WScript.Echo p.SetRef(c1)
WScript.Echo p.CountUp(c2)
WScript.Echo p.CountUp(c2)
WScript.Echo p.CountUp(c2)
WScript.Echo p.CountUp(c2)
'现在调用存储在父对象内部的子对象
dim c9
WScript.Echo p.CountUp(c9)
'从父对象获取该对象并直接调用
Set c3 = p.GetRef()
WScript.Echo c3.CountUp()

从命令行运行时,将显示以下输出内容:

C:\moniker>refpasscl
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

C1 1
C1 2
C1 3
C1 4
C1 5
C2 1
C2 2
C2 3
C2 4
C2 5
C1 5
C2 6
C2 7
C2 8
C2 9
C1 6
C1 7

即使在通过 SOAP 调用时,CAO 激活也会保留状态,并且允许通过 SOAP 来回传递对象引用。名称和值都保留在服务器上的类实例中,并且引用可以正确工作。这两种脚本都调用相同的编译 C# 组件,只是 .NET Remoting 激活模型不同。

时间: 2024-10-31 16:11:12

COM+ Web 服务:通过复选框路由到 XML Web Services (转)7的相关文章

COM+ Web 服务:通过复选框路由到 XML Web Services(1) (微软中国)

services|web|xml|复选框|微软 COM+ Web 服务:通过复选框路由到 XML Web Services John Noss 和 Jonathan HawkinsMicrosoft Corporation 2001年11月 摘要:COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活.本文通过几个示例介绍基本的互操作性.配置以及托管和非托管

COM+ Web 服务:通过复选框路由到 XML Web Services (转)

services|web|xml|复选框 COM+ Web 服务:通过复选框路由到 XML Web Services John Noss 和 Jonathan HawkinsMicrosoft Corporation 2001年11月 摘要:COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活.本文通过几个示例介绍基本的互操作性.配置以及托管和非托管 CO

COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

services|web|xml|复选框|微软 SOAP 与 DCOM 的局限性和区别 .NET Remoting 的目的之一是提供丰富的分布式环境,使开发人员能够在此环境中对序列化协议(格式化程序)和网络协议(频道)进行组合与匹配..NET 框架 1.0 版本中的 COM+ Web 服务仅支持一种格式化程序 (SOAP) 和一种频道 (HTTP).这并不是说其他频道和格式化程序不能使用 ServicedComponents 或 COM+,而是说没有自动配置为这些备用频道和格式化程序提供客户端和

COM+ Web 服务:通过复选框路由到 XML Web Services (转)10

services|web|xml|复选框 另一个可以自定义的区域包括客户端激活对象的生存期管理,如下例所示: <?xml version="1.0" encoding="utf-8"?><configuration> <system.runtime.remoting>  <application>   <service>    <wellknown mode="SingleCall"

COM+ Web 服务:通过复选框路由到 XML Web Services (转)5

services|web|xml|复选框 在图 3 所示的 COM+ 应用程序导出向导中,输入代理 .msi 文件的位置和名称. 在图 3 所示的 COM+ 应用程序导出向导中,输入代理 .msi 文件的位置和名称. 图 3:COM+ 应用程序导出向导 将代理 .msi 文件安装在单独的客户端计算机上,作为预先生成的 COM+ 应用程序. 安装时将对代理进行适当的配置,以便通过 SOAP 访问正确的服务器和虚拟根.对于客户端激活,可以不使用 WSDL 名字对象,而使用常规非托管的 COM+ 激活

COM+ Web 服务:通过复选框路由到 XML Web Services (转)2

services|web|xml|复选框 表 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 .NET SOAP V1.1(在 WSDL 中描述) C# 或 VB .NET

COM+ Web 服务:通过复选框路由到 XML Web Services (转)9

services|web|xml|复选框 编译并运行此 Visual Basic .NET 应用程序,将产生与前面两个 VBScript CAO 示例相同的输出内容. 因为服务器应用程序将组件发布为 CAO 和 WKO 两种形式,所以由远程客户端选择激活方法.虽然可能只对学术研究有意义,但是单一客户端计算机确实可以使用同一组件的两种远程激活方法,访问远程服务器上同一个 SOAP 发布的虚拟根. SOAP 与 DCOM 的局限性和区别.NET Remoting 的目的之一是提供丰富的分布式环境,使

COM+ Web 服务:通过复选框路由到 XML Web Services (转)8

services|web|xml|复选框 即使在通过 SOAP 调用时,CAO 激活也会保留状态,并且允许通过 SOAP 来回传递对象引用.名称和值都保留在服务器上的类实例中,并且引用可以正确工作.这两种脚本都调用相同的编译 C# 组件,只是 .NET Remoting 激活模型不同. 除了使用 CreateObject 调用 CAO 激活外,还可以使用带有 COM+ 的名字对象,它可以提供 CAO 激活来替代 WKO(类型名称和程序集名字对象).以下脚本: '直接创建两个对象set c1=Ge

COM+ Web 服务:通过复选框路由到 XML Web Services (转)4

services|web|xml|复选框 为简单起见,上述示例全部使用 VBScript 来访问 Web 服务.其实也可以通过 SOAP WSDL 名字对象使用 Visual C+.Visual Basic 6.0.Visual Basic .NET 或 C# 进行编写.例如,Visual Basic .NET 也可以使用编译的托管代码访问同一对象,如下例所示: Imports SystemImports System.Runtime.InteropServicesModule WKOClien

COM+ Web 服务:通过复选框路由到 XML Web Services(2) (微软中国)

services|web|xml|复选框|微软 事务性组件示例简单的计算器远算不上工作量繁重的业务应用程序,因此我们现在考虑带有对象池的适于 COM+ 事务性组件的应用程序.最容易管理和配置的组件是由 ServicedComponent 导出的托管代码组件,如以下 C# 示例所示: using System;using System.Reflection;using System.Runtime.InteropServices;using System.EnterpriseServices;us