何时使用WCF ChannelFactory而不是服务引用

Zac*_*ith 2 wcf channelfactory service-reference

我正在阅读WCF教程并发现这些内容指出我可以使用mex端点来允许隐式地向客户端添加服务引用.我想这允许VS在使用生成的WSDL文件时创建代理类?

但是,我试图让自己熟悉的代码库不使用隐式服务引用.相反,客户可以访问DuplexChannelFactory.通过显式ChannelFactories与隐式服务引用进行服务通信有什么好处?

这里的SO问题(如何重写WCF客户端以使用ChannelFactory而不是服务引用)提到公司选择ChannelFactories而不是服务引用,但没有提到原因.

tom*_*ern 5

何时使用ChannelFactories而不是服务引用

始终使用ChannelFactory,除非没有其他选项.我不能强烈地说明这一点.服务参考是

  • 复杂,
  • 不可预知的,
  • 间接的,和
  • 经常 工作,更新时尤其如此.

您可能希望使用服务引用的唯一原因:

  1. 您没有代码中的服务定义和合同类型的二进制访问权限.例如,您正在通过互联网呼叫公共服务,并且该服务的开发人员无法将这些服务提供给您.
  2. 而已.这是唯一的原因.

可以说,如果您有权访问服务定义和合同类型,则应该使用服务引用,但是它们是在一些超级程序集中定义的,其中包含许多您没有用的其他内容.但是,我发现这有问题,因为在这种情况下,您可以重新创建服务定义和类型,并利用WCF对合同等效性的尊重.