WCF:为什么合约在端点上而不是在服务上?

标签 wcf wcf-endpoint

尝试真正“获取”端点合约:

我理解提供不同的端点来支持不同的绑定(bind),但是什么时候可以为一项服务定义 n 个端点,并使用不同的合约?似乎在大多数情况下(除了 IMetadataExchange),无论协议(protocol)如何,端点契约(Contract)都是相同的,不是吗?

如果大多数时候所有端点上的契约都是相同的,那么在父服务而不是每个端点上定义服务契约会不会太简单了(为什么?)(看起来很麻烦/重复),同时允许在需要时覆盖端点(例如:IMetadataExchange)。

感谢您帮助解决让我彻夜难眠的小问题;-)

最佳答案

好的,好吧 - 您在 <service> 中定义的服务标记是实际的实现代码 - 构成服务的实际 C# 或 VB.NET 行。因此,它是一个具体类(甚至可能实现多个服务契约)。这只是服务器端的。

然而,端点是服务器和客户端之间的通信 channel ,在这两者之间,您希望共享合约 - 从不单个服务合约 - 如果您的具体服务实现多个合约,您需要向客户端公开多个端点以提供所有这些功能。

这是否让事情变得更清晰了一些?

关于WCF:为什么合约在端点上而不是在服务上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894450/

相关文章:

.net - 使用 WebServiceHostFactory 的优缺点

c# - WCF 性能问题

c# - WCF 终结点错误 : Could not find default endpoint element

c# - 无法在 WCF ServiceModel 客户端配置部分中找到元素

wcf - 在 ServiceModel 客户端配置部分找不到名称为 ' and contract ' I' 的端点元素。

.net - WCF异步回调

c# - 无法返回类型 IQueryable 或 IEnumerable

c# - 如何从 List<B> = IQueryable<A> 转换

c# - 具有多个服务契约(Contract)的单个端点