0

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

  • 现有的操作合同或数据合同没有被修改
  • 我们只会添加新的 OperationContracts 和一些新的 DataContracts

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

    2. 如果所有客户都必须更新他们的服务参考,有没有办法解决?(我希望只有想要使用新 operationContract 的客户才应该更新服务参考)

我们有 netTcp 和 basichttp 绑定

4

2 回答 2

0

现有客户无需更改。在底层,客户端和服务器之间的契约是根据特定操作模式的肥皂消息。由于这些操作没有改变,soap 是一样的,所以客户端会工作。

于 2013-07-25T22:16:07.030 回答
0

WCF 在版本控制方面非常灵活,如这篇优秀的 MSDN 文章所示。如果您更改通过 MEX 端点自动公开的服务合同,那么所有客户端都可以访问新的更改。

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

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

于 2013-07-24T14:24:13.940 回答