TLDR:如何创建向后兼容的 WCF服务-也就是说,当我在服务器端部署服务的新版本时,旧版本上的所有客户端仍可以使用该服务。
我正在创建一个Web服务,该服务将允许客户端应用程序获取插件列表。我至少要有一个像FindPlugins(string nameOrDescription)
这样的操作,它将在服务器上进行搜索并返回对象列表。
不幸的是,我不能保证我的客户都会随着我的服务的每个新版本而更新;不,我确信其中许多将跟踪最新版本,并且将具有旧版本-不确定多大,但我知道它们将是旧的:)
如果我创建一个新的服务操作,更改架构或在服务器端进行某种中断操作,我就完成了。我需要始终设计向后兼容性。
这是一个例子。假设我返回了一个Plugin
列表,每个列表都有一个名称和描述,并且部署了服务的v0.1版本。然后,我添加一个下载链接,并将其部署为我的服务v0.2。
我看到的一些选项是:
FindPluginsV1
,FindPluginsV2
)-对于多个操作最佳答案
WCF默认情况下向后兼容。
以下MSDN链接包含WCF契约(Contract)的所有可能更改的列表,并描述了它们对旧客户端的影响:
最重要的是,以下操作不会导致旧客户端中断:
服务契约(Contract)(方法)
数据契约(Contract)(用于传递数据的自定义类)
因此,除非您将新的
DownloadLink
字段标记为IsRequired(默认为false),否则所做的更改应该没有问题。
关于wcf - 提供向后兼容的WCF服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826017/