【发布时间】:2010-10-03 08:57:06
【问题描述】:
有没有一种方法可以在不使用 codedom 的情况下即时创建 WCF 代理对象?即时我的意思是在运行时。因此,假设我有一个正在访问 WCF 服务的智能客户端应用程序。 WCF 服务的数据协定在客户端运行时更改。我想动态创建一个新的代理对象来反映更改的数据协定。
【问题讨论】:
有没有一种方法可以在不使用 codedom 的情况下即时创建 WCF 代理对象?即时我的意思是在运行时。因此,假设我有一个正在访问 WCF 服务的智能客户端应用程序。 WCF 服务的数据协定在客户端运行时更改。我想动态创建一个新的代理对象来反映更改的数据协定。
【问题讨论】:
我想出了一个解决方案,将共享程序集用于合同和端点接口。
所以项目会是
带代理的客户端
公共类 YourProxy : ClientBase {}
【讨论】:
您应该阅读这篇文章:WCF the Manual Way… the Right Way
并考虑使用 ChannelFactory 类。如果合同即时更改,您将有很多反思来创建和调用成员,但我想不出您不应该这样做的任何原因。
【讨论】:
小心不要在飞行中做太多事情。即使使用反射,将您的客户端/代理/服务/合同过多地耦合在一起也可能变得太容易了。
创建手动代理并将其添加为您的客户的参考是一个绝妙的主意。
【讨论】: