WCF接口的COM调用
2011-04-11 10:12
148 查看
服务接口往往会被跨平台、跨技术调用。使用非.NET技术(如asp, vb6)调用WCF服务接口时只能使用COM方式,通常有三种方法
1、使用SOAP SDK中的Soap对象
2、使用HTTPRequest对象
3、使用WCF的COM接口
其中第三种调用相对简单,个人推荐使用。下面讲一下第三种调用方式
为了满足COM对象调用,.NET Framework3.5SP1把WCF代理接口注册了COM组件对象,它就是Moniker对象,我们可以使用OLE Com Viewer工具来找到它
![](http://pic002.cnblogs.com/images/2011/17382/2011041109514676.jpg)
获取这个对象可以使用GetObject方法。如下面的ASP代码演示了如何获取Moniker对象,并调用它
调用GetObject方法时使用的参数包含了:
1、元数据交换地址。
指的是WCF接口的WSDL文件地址
2、服务地址
指的是WCF接口的服务地址,即svc文件的URI。
3、绑定名
WSDL文件中的 wsdl:binding 配置节, name 属性
4、服务契约名
WSDL文件中的 wsdl:portType 配置节, name属性
如果以上配置都正确,调用时还是出错的话,很可能是你的服务接口中包含了对象类型的参数或返回值,这些数据无法在非.net环境中被包装。所以如果你的WCF接口需要被跨技术调用, 请一定要使用简间数据类型的接口参数和返回值。
1、使用SOAP SDK中的Soap对象
2、使用HTTPRequest对象
3、使用WCF的COM接口
其中第三种调用相对简单,个人推荐使用。下面讲一下第三种调用方式
为了满足COM对象调用,.NET Framework3.5SP1把WCF代理接口注册了COM组件对象,它就是Moniker对象,我们可以使用OLE Com Viewer工具来找到它
![](http://pic002.cnblogs.com/images/2011/17382/2011041109514676.jpg)
获取这个对象可以使用GetObject方法。如下面的ASP代码演示了如何获取Moniker对象,并调用它
<% Response.write "Coding started!" Response.write"</br>" Dim mexMonikerString Dim mexServiceMoniker mexMonikerString = "service:mexAddress=http://xxxxx.aaaa.com:81/WcfService1/Service1.svc?wsdl" mexMonikerString = mexMonikerString + ", address=http://xxxx.aaaa.com:81/WcfService1/Service1.svc/" mexMonikerString = mexMonikerString + ", binding=WSHttpBinding_IService1,bindingNamespace=http://tempuri.org/" mexMonikerString = mexMonikerString + ", contract=IService1, contractNamespace=http://tempuri.org/" Set mexServiceMoniker=GetObject(mexMonikerString) mexServiceMoniker.ChannelCredentials.SetUserNameCredential "WCFCaller", "WCFCaller" Response.write mexServiceMoniker.Echo("sss") Set mexServiceMoniker = Nothing %>
调用GetObject方法时使用的参数包含了:
1、元数据交换地址。
指的是WCF接口的WSDL文件地址
2、服务地址
指的是WCF接口的服务地址,即svc文件的URI。
3、绑定名
WSDL文件中的 wsdl:binding 配置节, name 属性
4、服务契约名
WSDL文件中的 wsdl:portType 配置节, name属性
如果以上配置都正确,调用时还是出错的话,很可能是你的服务接口中包含了对象类型的参数或返回值,这些数据无法在非.net环境中被包装。所以如果你的WCF接口需要被跨技术调用, 请一定要使用简间数据类型的接口参数和返回值。
相关文章推荐
- COM 组件设计与应用(十一)——IDispatch 及双接口的调用
- C#动态调用WCF接口
- COM入门(学习笔记) - 简单接口调用
- 用VC++生成接口的COleDispatchDriver包装类来调用COM组件
- COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
- 【转载】COM 组件设计与应用(十一)—— IDispatch 及双接口的调用
- 错误处理(4)—— “{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败
- .net调用com接口打开已存在的图纸并给图纸中的块添加属性。
- 动态调用wcf接口服务
- WCF 动态调用(动态创建实例接口)
- 调用http://apistore.baidu.com网站的接口
- COM线程模型 - MTA接口 (STA套间调用MTA对象)
- 调用http://apistore.baidu.com网站的接口
- 此操作失败的原因是对 IID 为“{000208DA-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface
- COM 组件设计与应用(十一)---IDispatch 及双接口的调用
- 客户端调用COM, 实现接口调用和COM事件通知
- 调用http://apistore.baidu.com网站的接口
- 完全使用接口方式调用WCF 服务
- COM内部接口调用方式
- COM(VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约