WCF开发之版本相容性
来源:互联网 发布:知乎 孔子姓什么 编辑:程序博客网 时间:2024/04/30 15:14
为我们会一直更新WCF服务或者扩展新的WCF服务,那么就不得不面对一个问题--WCF的版本控制问题。
• 一旦发布,WSDL契约就被确定
– 必须支持向后兼容
• 在理论上,策略可以发生变更
– 新的安全策略
– 附加的可靠性特性
– 策略使用元数据交换来发现
• 如果客户端能够动态地处理变化,那么仅仅改变策略是安全的
版本相容性
• WCF契约缺省是提供版本相容性支持的
• 所有的服务契约,数据契约与消息契约:
– 允许缺失,非必需(non-required)的数据存在
– 可以忽略多余的数据
• DataContractSerializer提供相容性支持
• 适当的变化并不会对现存的客户端或者服务端产生影响
下面的表格详细的说明了服务契约变化后对于客户端的各种影响:
服务契约的变化服务契约的变化对现存客户端的影响在操作签名上添加新的参数
- 客户端不会被影响
- 新的参数在服务中被初始化为缺省值
- 客户端不会被影响
- 客户端传递的多余参数将被忽略,这些数据在服务端被丢失
- 如果从客户端进入的类型无法转换为参数的数据类型,将会抛出异常
- 如果从服务端返回的值无法转换为在客户端操作签名中所期望的数据类型,那么将会抛出异常
- 客户端不会被影响
- 由于客户端不知道新加入操作的存在,因此其不会被调用
- 抛出异常
- 客户端发送给服务端的消息会被认为使用了未知的action头
- 客户端不会被影响
- 新的参数在服务中被初始化为缺省值
- 对于缺少的值,将会抛出异常
- 服务端数据丢失
- 无法将全部数据集返回给客户端
- 不会抛出异常
- 当客户端收到来自服务端带有缺失数据的响应时,将会抛出异常
- 如果类型兼容,那么不会产生异常,但是可能会导致未知的结果
现在描述一个场景比如说,我们在服务端添加一个required的DataMember成员,然后重新发布这个WCF服务,但是客户端不更新WCF的服务引用,在这种情况下当客户端调用WCF服务的时候WCF就会抛出一个缺少必要数据的异常。如果添加的是一个non-required的成员,那个就不会抛出异常,客户端可以正常使用。这就是所谓的版本相容性,当然实际开发中还有很多情况,只要多测试也就没有问题了。(完)
source:
http://www.cnblogs.com/CharlesLiu/archive/2010/02/09/1666360.html
- WCF开发之版本相容性
- WCF开发之服务契约
- WCF开发之服务契约
- WCF开发指南之构建服务
- WCF开发指南之构建服务
- WCF开发之异常与错误处理
- WCF开发之异常与错误处理
- WCF 之 什么是WCF
- 安卓官方开发文档API Guide翻译 Device Compatibility 设备相容性1.2
- WCF - 版本问题
- WCF开发框架形成之旅---WCF的几种寄宿方式
- WCF开发框架形成之旅---WCF的几种寄宿方式 (转帖)
- WCF开发框架形成之旅---WCF的几种寄宿方式
- WCF开发框架形成之旅---WCF的几种寄宿方式
- WCF开发框架形成之旅---WCF的几种寄宿方式
- WCF客户端开发的简化之旅 (二) -- Auto-attaching
- WCF开发框架之证书加密使用说明书
- WCF开发框架之插件化应用模式升级
- 迷失的错误:服务器能过户 'user_a' 不是数据库'database_b'中的有效用户
- Java调dll
- Java调用dll步骤
- 此系列当前共五篇 高级Linux程序设计
- 在MFC中使用DXUT(Direct3D)框架
- WCF开发之版本相容性
- Java调用dll步骤1
- 再谈magento搬家
- 工作室成立啦!!!
- 使用XFire+Spring构建Web Service(一)——helloWorld篇
- 很有用的面试知识---面试100问(不仅仅是面试)
- 一张表的某列值去更新另一张表的某列值。
- 五年经验跳槽历程
- 强悍的 Windows xp mode!!!