首页 > 开发 > Xml > 正文

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

2020-02-03 15:11:51
字体:
来源:转载
供稿:网友

此 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 激活模型不同。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表