使用WCF时处理客户端的版本控制
桌面客户端将使用WCF将数据推送到中央服务器 当模式发生变化时,比如说,100台计算机拥有旧版本的桌面客户端,而其他计算机则使用最新版本 我必须在服务器端做什么才能处理这两个版本? 我是在WCF中创建两个端点,还是创建一个智能端点来确定版本并采取相应的行动 注意:我将从客户端传递版本信息(如果需要)您可以选择: 首先,无论如何,您都应该使用服务契约的名称空间对其进行版本控制;例如,使用WCF时处理客户端的版本控制,wcf,Wcf,桌面客户端将使用WCF将数据推送到中央服务器 当模式发生变化时,比如说,100台计算机拥有旧版本的桌面客户端,而其他计算机则使用最新版本 我必须在服务器端做什么才能处理这两个版本? 我是在WCF中创建两个端点,还是创建一个智能端点来确定版本并采取相应的行动 注意:我将从客户端传递版本信息(如果需要)您可以选择: 首先,无论如何,您都应该使用服务契约的名称空间对其进行版本控制;例如,http://idunno.org/2008/10/numpty将更改为http://idunno.org/2008
http://idunno.org/2008/10/numpty
将更改为http://idunno.org/2008/11/numpty
如果维修操作有重大变化
数据契约也是如此;但是,如果您对数据契约所做的一切都是加法的,那么您可以将新字段标记为可选字段
[DataMember(IsRequired="false")]
老客户也会工作。因此,这应该向您表明,输入服务的参数和输出的参数也应该是数据契约;它给了你这种灵活性
MSDN有这是一个很好的答案,但对于未来的搜索者,我只想指出IsRequired在默认情况下实际上是false,因此您不需要显式设置它。要记住的一点是,永远不要将现有成员的IsRequired标志从false更改为true,也不要将新成员设置为true!最重要的是阅读MSDN链接:)