WCF版本控制 - 添加新的operationContract会导致问题吗?

时间:2013-07-24 12:55:32

标签: wcf datacontract

我有一个WCF网络服务,有四个不同的客户端,我们的一个客户想要更多的功能,所以我们要添加新的OperationContract,它将使用新的DataContracts和一些现有的

  • 未修改现有操作合同或DataContracts
  • 我们将添加新的OperationContracts和一些新的DataContracts

    1. 我们所有的客户都必须更新服务参考吗? (或者不想要新方法的附加功能的客户可以继续使用该服务)

    2. 如果所有客户都必须更新其服务参考,是否有办法绕过它? (我希望只有想要使用新的operationContract的客户才应该更新服务参考)

我们有netTcp和basichttp绑定

2 个答案:

答案 0 :(得分:0)

WCF在进行版本控制时非常灵活,如good MSDN article所示。如果您更改通过MEX端点自动公开的服务合同,则所有客户端都可以访问新的更改。

如果要严格控制服务公开的合同,则可以关闭MEX端点并将编辑后的WSDL(以及适当的XSD,如果不使用singlefile)文件分发给特定客户端。 不要认为这是一项安全措施,因为您所做的只是“模糊”服务支持您所展示的更多操作这一事实。

如果您确实需要保护不同的合同,那么您将需要创建单独的服务以向授权客户公开适当的合同。

答案 1 :(得分:0)

现有客户无需更改。根据具体操作的模式,客户端和服务器之间的合同是肥皂消息。由于这些操作没有改变,所以肥皂是相同的,所以客户可以工作。