使用WCF进行动态编程
时间:2020-03-05 18:46:56 来源:igfitidea点击:
有没有人有使用WCF进行动态编程的任何经验。通过动态编程,我的意思是WSDL的运行时消耗。
我找到了一个博客条目/工具:
http://blogs.msdn.com/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx
这里有人找到了很好的工具吗?
解决方案
回答
很久以前,我已经使用SOAP Web服务做到了这一点。我认为GotDotNet上有一个工具,它已成为Web Services Studio Express,该工具具有检查/解析WSDL文件并允许我们调用它的代码。
我认为,假设是在创建客户端时就知道WSDL,而无需在运行时进行连接。如果在运行时检查WSDL,我们仍然需要某种逻辑来决定如何生成代理。为什么在运行时之前不能使用WSDL? Web服务应该是相当静态的,其接口一旦发布就不会改变。
我们可以使用.NET CodeDom生成代码来执行和使用WSDL描述的Web服务。可以使用标准.NET XML类来解析WSDL。
回答
我实际上正在考虑制作一个小型ESB,用户可以在其中添加Web服务以在运行时路由到该ESB。
所以我不能静态添加WSDL
回答
这是WCF的怪异方面之一。我们可以动态创建一个channelfactory,但只能使用一个已知的类型。
我想出了一个并非完美的解决方案,但确实可行:
创建一个接口" IFoo",其中包含一个方法,即" Execute()"。在ESB中,为要连接的端点动态创建一个" ChannelFactory <IFoo>"。设置连接属性(URI等)。
现在,我们可以将服务动态地添加到ESB,前提是它们始终实现" IFoo"接口。