使用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"接口。