何时通过服务引用使用WCF ChannelFactory



我正在学习WCF教程,发现这些教程让我可以使用mex端点来隐式地向客户端添加服务引用。我想这允许VS在使用生成的WSDL文件时创建代理类?

然而,我试图熟悉的代码库并没有使用隐式服务引用。相反,客户端可以访问DuplexChannelFactory通过显式ChannelFactories与隐式服务引用进行服务通信的好处是什么

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

何时通过服务引用使用ChannelFactories

除非没有其他选项,否则始终使用ChannelFactory。我再怎么强调也不为过。服务参考是

  • 复合体
  • 不可预测
  • 间接的,以及
  • 通常不起作用,尤其是在更新时

您可能想要使用服务引用的唯一原因:

  1. 您不能以二进制方式访问代码中的服务定义和约定类型。例如,你在互联网上呼叫一项公共服务,而该服务的开发者不可能将其提供给你
  2. 就是这样,这是唯一的原因

如果您有权访问服务定义和契约类型,则可以认为您应该使用服务引用,但它们是在某个uber程序集中定义的,还有一大堆其他您不使用的东西。然而,我发现这是有问题的,因为在这种情况下,您可以重新创建服务定义和类型,并利用WCF对合同等价性的尊重。

最新更新