我很好奇是否有人可以概述服务器端哪些类型的WCF合同(接口)更改会破坏尝试发送消息的客户端,以及原因.我相信WCF可以处理某些差异,但我不确定你可以安全地改变什么,以及你不能做什么.
从OperationContract添加/删除参数?
添加/删除/更改DataContract的序列化属性?
从ServiceContract添加/删除OperationContracts?
一位朋友在这里问了一个类似的问题
向WCF ServiceContract添加方法是否会破坏现有客户端?
编辑:正如John Saunders所指出的那样,改变合同通常不是一个好主意,但是内置的东西允许一些版本容忍(ExtensionDataObject等?).我想知道版本容差的灵活性.
查看有关dasBlonde的文章:版本化WCF服务合同
它列出了哪些更改将破坏现有客户端:
删除操作
更改操作名称
删除操作参数
添加操作参数
更改操作参数名称或数据类型
更改操作的返回值类型
通过显式使用.NET属性或自定义序列化代码更改参数类型(数据协定)或操作(消息协定)的序列化XML格式
修改服务操作编码格式(RPC编码与文档文字)
Michele的这篇文章更详细地解释了如何设计合同以使其更加灵活.