我想向我的MessageContract添加一个新的MessageBodyMember ,它指的是一个新的Datacontract。
会不会有问题。。
处理消息合同更改的最佳方法是什么?
如何知道添加新的 MessageBodyMember 是破坏性更改还是非破坏性更改?
我想向我的MessageContract添加一个新的MessageBodyMember ,它指的是一个新的Datacontract。
会不会有问题。。
处理消息合同更改的最佳方法是什么?
如何知道添加新的 MessageBodyMember 是破坏性更改还是非破坏性更改?
消息合同版本控制在http://msdn.microsoft.com/en-us/library/ms730255.aspx中处理:
有时,您可能需要更改消息合同。例如,您的应用程序的新版本可能会在消息中添加额外的标头。然后,当从新版本发送到旧版本时,系统必须处理一个额外的标头,以及在向另一个方向发送时缺少的标头。
以下规则适用于版本控制标头:
WCF 不反对缺少的标头——相应的成员保留其默认值。
WCF 还会忽略意外的额外标头。此规则的一个例外是,如果额外标头在传入的 SOAP 消息中将 MustUnderstand 属性设置为 true — 在这种情况下,由于无法处理必须理解的标头而引发异常。
消息体具有类似的版本控制规则——缺失和附加的消息体部分都被忽略。
这意味着您可以添加和删除 MessageBodyMembers,而不会破坏兼容性。更改成员类型时要小心。确保它们被同等地序列化以保持兼容。