COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约

WCF服务的WSDL契约调用
本文介绍如何通过WSDL契约在COM环境中调用WCF服务,无需类型注册,通过动态方式获取信息,并提供了一个VBS脚本示例。

COM(VB/VBA/Script)利用服务标记调用WCF服务

之三使用WSDL契约

LazyBeehttp://lazybee.cnblogs.com

前面我们介绍了使用MEX契约的服务标记在COM中调用WCF服务,这种方式是通过MEX终结点动态取得元数据,使用起来是比较方便;但是有时服务的元数据中可能包含恶意用户可以利用的关于应用程序的敏感信息,也就是说为了安全考虑有些服务可能不会通过MEX公布元数据信息。如果哦某些服务没有公布元数据信息,用类型化有比较麻烦,针对这种情况我们该如何在COM中调用WCF服务呢?这时我们可以使用WSDL契约来进行WCF服务的调用,使用这种方式和使用MEX类似,同样不需要进行类型的注册,信息都是通过动态得到,不过有一个不好的地方就是需要使用其他手段来取得服务的WSDL描述。好了,下面就让我们开始

 

第一步:创建WCF服务

    这个和上一篇的完全一样,具体请参见COM(VB/VBA/Script)利用服务标记调用WCF服务之一使用类型化契约的第一步,如果您曾经按照上一篇文章做过相应的测试,你就可以直接使用已经建好的服务了。

 

第二步:在Script中调用WCF服务

1:下面就是创建我们的Script文件了,我们起名为CallWCFService_wsdl.vbs,内容如下:

 1 ' ---------------------------------------------------------------
 2 '  WSDL service moniker example
 3 ' ---------------------------------------------------------------
 4
 5   Set  xmlhttp = CreateObject ( " Msxml2.XMLHTTP " )
 6   call  xmlhttp.open( " GET " , " http://localhost/WCFServiceMoniker/Service1.svc?wsdl " , false )
 7  xmlhttp.send
 8   ' MsgBox message will be truncated, but wscript.echo will not.
 9   ' wscript.echo xmlhttp.responseText
10  wsdlstr = xmlhttp.responseText
11
12 mexMonikerString  =   " service:address='http://localhost/WCFServiceMoniker/Service1.svc' "
13 mexMonikerString  =  mexMonikerString  +   " , wsdl=' "   &  wsdlstr  &   " ' "
14 mexMonikerString  =  mexMonikerString  +   " , binding=WSHttpBinding_IService1, bindingNamespace='http://tempuri.org/' "
15 mexMonikerString  =  mexMonikerString  +   " , contract=IService1, contractNamespace='http://tempuri.org/' "
16
17 '  Create the service moniker object
18 Set  mexServiceMoniker  =   GetObject (mexMonikerString)
19
20 '  Call the service operations using the moniker object
21 WScript.Echo  mexServiceMoniker.SayHello( " I am LazyBee, My blog is http://lazybee.cnblogs.com/  " )
22
23 Set  mexServiceMoniker  =   nothing
24 Set  xmlhttp = nothing
25

 

注意:在我们服务标记字符串中,包含服务地址、WSDL、绑定及命名空间、服务契约及命名空间四部分内容。关于如何获得服务地址、绑定及命名空间、服务契约及命名空间请参见前一篇文章COM(VB/VBA/Script)利用服务标记调用WCF服务之使用MEX契约的第二步

4 保存之后,直接双击运行,你就可以看到运行结果了:


本文的源代码下载地址为:http://files.cnblogs.com/LazyBee/CallWCFService_wsdl.zip

(转载请注明出处:http://lazybee.cnblogs.com

转载于:https://www.cnblogs.com/LazyBee/archive/2008/07/30/1256679.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值