Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WCF时处理客户端的版本控制_Wcf - Fatal编程技术网

使用WCF时处理客户端的版本控制

使用WCF时处理客户端的版本控制,wcf,Wcf,桌面客户端将使用WCF将数据推送到中央服务器 当模式发生变化时,比如说,100台计算机拥有旧版本的桌面客户端,而其他计算机则使用最新版本 我必须在服务器端做什么才能处理这两个版本? 我是在WCF中创建两个端点,还是创建一个智能端点来确定版本并采取相应的行动 注意:我将从客户端传递版本信息(如果需要)您可以选择: 首先,无论如何,您都应该使用服务契约的名称空间对其进行版本控制;例如,http://idunno.org/2008/10/numpty将更改为http://idunno.org/2008

桌面客户端将使用WCF将数据推送到中央服务器

当模式发生变化时,比如说,100台计算机拥有旧版本的桌面客户端,而其他计算机则使用最新版本

我必须在服务器端做什么才能处理这两个版本? 我是在WCF中创建两个端点,还是创建一个智能端点来确定版本并采取相应的行动

注意:我将从客户端传递版本信息(如果需要)

您可以选择:

首先,无论如何,您都应该使用服务契约的名称空间对其进行版本控制;例如,
http://idunno.org/2008/10/numpty
将更改为
http://idunno.org/2008/11/numpty
如果维修操作有重大变化

数据契约也是如此;但是,如果您对数据契约所做的一切都是加法的,那么您可以将新字段标记为可选字段

[DataMember(IsRequired="false")] 
老客户也会工作。因此,这应该向您表明,输入服务的参数和输出的参数也应该是数据契约;它给了你这种灵活性


MSDN有

这是一个很好的答案,但对于未来的搜索者,我只想指出IsRequired在默认情况下实际上是false,因此您不需要显式设置它。要记住的一点是,永远不要将现有成员的IsRequired标志从false更改为true,也不要将新成员设置为true!最重要的是阅读MSDN链接:)