2011-09-26 54 views
1

我想添加一个新的MessageBodyMemberMessageContract是指一个新的DatacontractWCF消息契约版本

会有问题吗?

处理消息合约更改的最佳方法是什么?

如何知道添加一个新的MessageBodyMember是否是一个突破或非破坏性更改?

回答

4

消息契约版本在http://msdn.microsoft.com/en-us/library/ms730255.aspx处理:

有时,您可能需要更改消息的合同。例如,您的应用程序的新版本可能会为邮件添加额外的标头。 然后,当从新版本发送到旧版本时,系统必须处理一个额外的头文件,以及在另一个方向进入 时丢失的头文件。

以下规则适用的版本标题:

  • WCF不反对失踪头,对应 成员的默认值离开。

  • WCF还会忽略意外的额外标题。 此规则的一个例外是,如果额外的头部在传入的SOAP消息中的MustUnderstand属性设置为 true,则在此情况下抛出异常 ,因为必须理解的头部无法处理。

消息体也有类似的版本控制规则,双双失踪和 附加消息正文部分被忽略。

因此,这意味着您可以添加和删除MessageBodyMembers,而不会破坏兼容性。请注意更改成员类型。确保它们被序列化以保持兼容。