我有一个WCF网络服务,有四个不同的客户端,我们的一个客户想要更多的功能,所以我们要添加新的OperationContract,它将使用新的DataContracts和一些现有的
我们将添加新的OperationContracts和一些新的DataContracts
我们所有的客户都必须更新服务参考吗? (或者不想要新方法的附加功能的客户可以继续使用该服务)
如果所有客户都必须更新其服务参考,是否有办法绕过它? (我希望只有想要使用新的operationContract的客户才应该更新服务参考)
我们有netTcp和basichttp绑定
答案 0 :(得分:0)
WCF在进行版本控制时非常灵活,如good MSDN article所示。如果您更改通过MEX端点自动公开的服务合同,则所有客户端都可以访问新的更改。
如果要严格控制服务公开的合同,则可以关闭MEX端点并将编辑后的WSDL(以及适当的XSD,如果不使用singlefile)文件分发给特定客户端。 不要认为这是一项安全措施,因为您所做的只是“模糊”服务支持您所展示的更多操作这一事实。
如果您确实需要保护不同的合同,那么您将需要创建单独的服务以向授权客户公开适当的合同。
答案 1 :(得分:0)
现有客户无需更改。根据具体操作的模式,客户端和服务器之间的合同是肥皂消息。由于这些操作没有改变,所以肥皂是相同的,所以客户可以工作。