何时在服务参考上使用 WCF ChannelFactory [重复]

Posted

技术标签:

【中文标题】何时在服务参考上使用 WCF ChannelFactory [重复]【英文标题】:When to use WCF ChannelFactory over service reference [duplicate] 【发布时间】:2017-06-15 17:02:07 【问题描述】:

我正在浏览 WCF 教程,并发现这些 tuts 指向我使 mex 端点可用,以允许隐式添加对客户端的服务引用。我猜这允许 VS 在使用生成的 WSDL 文件时创建代理类?

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

此处的这个 SO 问题 (How to re-write WCF client to use ChannelFactory instead of service reference) 提到了一家公司选择 ChannelFactories 而不是服务参考,但没有提及原因。

【问题讨论】:

【参考方案1】:

何时在服务引用上使用 ChannelFactories

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

复杂, 不可预测, 间接和 经常donotwork,尤其是在更新时。

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

    您没有对代码中的服务定义和合同类型的二进制访问权限。例如,您在互联网上调用一项公共服务,而该服务的开发者不可能将它们提供给您。 就是这样。这是唯一的原因。

如果您有权访问服务定义和合同类型,则可能有人认为您应该使用服务引用,但它们是在一些超级装配中定义的,其中包含一大堆您无用的其他东西。但是,我觉得这有问题,因为在这种情况下,您可以重新创建服务定义和类型,并利用 WCF 对合同等效性的尊重。

【讨论】:

我会在上面的(非常好的)列表中添加一点,如果您必须使用服务引用,您可以随时从生成的代码中提取合同并将该合同与ChannelFctory<T> 一起使用。我已经多次这样做了,因为我不喜欢服务参考以及它们带来的所有额外废话。

以上是关于何时在服务参考上使用 WCF ChannelFactory [重复]的主要内容,如果未能解决你的问题,请参考以下文章

何时应在 WCF 服务中使用 OperationContextScope?

WCF 何时使用 app.config 或 web.config?

何时使用 WCF/REST

Wcf 服务在 .NET Core 3.1 控制台应用程序中工作,但在 ASP.NET Core 3.1 Web API 中无法工作

jQuery 参考上的 jQuery 选择器

无法在 unblessed 参考上调用方法“capture2”