Welcome

首页 / 软件开发 / WCF / COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约2011-10-26 博客园 LazyBee前面我们介绍了使用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 example3"---------------------------------------------------------------45 Set xmlhttp=CreateObject("Msxml2.XMLHTTP")6 call xmlhttp.open("GET","http://localhost/WCFServiceMoniker/Service1.svc?wsdl",false)7 xmlhttp.send8 "MsgBox message will be truncated, but wscript.echo will not.9 "wscript.echo xmlhttp.responseText10 wsdlstr=xmlhttp.responseText1112mexMonikerString = "service:address="http://localhost/WCFServiceMoniker/Service1.svc""13mexMonikerString = mexMonikerString + ", wsdl="" & wsdlstr & """14mexMonikerString = mexMonikerString + ", binding=WSHttpBinding_IService1, bindingNamespace="http://tempuri.org/""15mexMonikerString = mexMonikerString + ", contract=IService1, contractNamespace="http://tempuri.org/""1617" Create the service moniker object18Set mexServiceMoniker = GetObject(mexMonikerString)1920" Call the service operations using the moniker object21WScript.Echo mexServiceMoniker.SayHello("I am LazyBee, My blog is http://lazybee.cnblogs.com/ ")2223Set mexServiceMoniker = nothing24Set xmlhttp=nothing25
注意:在我们服务标记字符串中,包含服务地址、WSDL、绑定及命名空间、服务契约及命名空间四部 分内容。关于如何获得服务地址、绑定及命名空间、服务契约及命名空间请参见前一篇文章COM (VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约的第二步

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

出处:http://lazybee.cnblogs.com

本文配套源码:http://www.bianceng.net/dotnet/201212/757.htm