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

时间:2012-08-10 01:54:09

标签: wcf wcf-endpoint

尝试真正“获得”终点合同:

我理解提供不同的端点来支持不同的绑定,但何时会为服务定义n个端点,并使用不同的合同?似乎在大多数情况下(bar IMetadataExchange),无论协议如何,端点合同都是相同的,不是吗?

如果大多数时间合同在所有端点上都是相同的,那么在父服务上而不是在每个端点上定义服务合同是否过于简单(以及为什么?)(似乎很麻烦/重复),同时在需要时对端点进行覆盖(例如:IMetadataExchange)。

感谢您帮助解决让我夜不能寐的小问题;-)

1 个答案:

答案 0 :(得分:2)

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

端点然而是服务器和客户端之间的通信渠道,在这两者之间,您希望共享合同 - 永远不会该合同的任何具体实施。端点将仅用于单个服务合同 - 如果您的具体服务实现多个合同,则需要向客户端公开多个端点以提供所有功能。

这会让事情变得更清楚吗?