第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共7页WCF面向服务应用程序系列之五:契约版本管理—版本相容性WCF版本相容性:指WCF的服务端在更新为新版本的情况下,客户端对服务端的引用不进行更新到最新的服务端,而继续引用旧的服务端但不发性异常
WCF契约缺省是提供版本相容性支持的,所有的服务契约,数据契约与消息契约,都允许缺失、非必需(non-required)的数据存在;且可以忽略多余的数据;DataContractSerializer提供相容性支持;适当的变化并不会对现存的客户端或者服务端产生影响
开发环境:VisualStudio2010+NetFramework4
服务契约的变化对客户端产生的影响如下:服务契约的变化对现存客户端的影响在操作签名上添加新的参数客户端不会被影响新的参数在服务中被初始化为缺省值从操作签名中删除参数客户端不会被影响客户端传递的多余参数将被忽略,这些数据在服务端被丢失修改参数类型如果从客户端进入的类型无法转换为参数的数据类型,将会抛出异常修改返回数值的类型如果从服务端返回的值无法转换为在客户端操作签名中所期望的数据类型,那么将会抛出异常添加新的操作客户端不会被影响由于客户端不知道新加入操作的存在,因此其不会被调用删除操作抛出异常客户端发送给服务端的消息会被认为使用了未知的action头数据契约为变化对客户端产生的影响如下:数据契约的变化对现存客户端的影响添加新的non-required成员客户端不会被影响缺少的数值将会被初始化为缺省值添加新的required成员对于缺少的值,将会抛出异常删除non-required成员服务端数据丢失无法将全部数据集返回给客户端不会抛出异常删除required成员当客户端收到来自服务端带有缺失数据的响应时,将会抛出异常修改已存的成员的数据类型如果类型兼容,那么不会产生