WCF合同更改会影响客户端

And*_*ite 9 wcf datacontract servicecontract operationcontract

我很好奇是否有人可以概述服务器端哪些类型的WCF合同(接口)更改会破坏尝试发送消息的客户端,以及原因.我相信WCF可以处理某些差异,但我不确定你可以安全地改变什么,以及你不能做什么.

  • 从OperationContract添加/删除参数?
  • 添加/删除/更改DataContract的序列化属性?
  • 从ServiceContract添加/删除OperationContracts?

一位朋友在这里问了一个类似的问题

向WCF ServiceContract添加方法是否会破坏现有客户端?

编辑:正如John Saunders所指出的那样,改变合同通常不是一个好主意,但是内置的东西允许一些版本容忍(ExtensionDataObject等?).我想知道版本容差的灵活性.

Jon*_*ker 16

查看有关dasBlonde的文章:版本化WCF服务合同

它列出了哪些更改将破坏现有客户端:

  1. 删除操作
  2. 更改操作名称
  3. 删除操作参数
  4. 添加操作参数
  5. 更改操作参数名称或数据类型
  6. 更改操作的返回值类型
  7. 通过显式使用.NET属性或自定义序列化代码更改参数类型(数据协定)或操作(消息协定)的序列化XML格式
  8. 修改服务操作编码格式(RPC编码与文档文字)

Michele的这篇文章更详细地解释了如何设计合同以使其更加灵活.