前面我们介绍了使用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 12mexMonikerString = "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/'" 16 17' Create the service moniker object 18Set mexServiceMoniker = GetObject(mexMonikerString) 19 20' Call the service operations using the moniker object 21WScript.Echo mexServiceMoniker.SayHello("I am LazyBee, My blog is http://lazybee.cnblogs.com/ ") 22 23Set mexServiceMoniker = nothing 24Set xmlhttp=nothing 25
注意:在我们服务标记字符串中,包含服务地址、WSDL、绑定及命名空间、服务契约及命名空间四部 分内容。关于如何获得服务地址、绑定及命名空间、服务契约及命名空间请参见前一篇文章COM (VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约的第二步
4 保存之后,直接双击运行,你就可以看到运行结果了:
出处:http://lazybee.cnblogs.com
本文配套源码:http://www.bianceng.net/dotnet/201212/757.htm
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索http
, wcf
, script
, 标记
, 服务
, vb script
, xmlhttp
, 动态调用wcf
, wcf动态调用
调用wsdl
wcf wsdl、wcf 生成wsdl、mtom wsdl wcf、wcf wsdl c、wcf 数据契约,以便于您获取更多的相关知识。