2011-09-26 94 views
1

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

會有問題嗎?

處理消息合約更改的最佳方法是什麼?

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

回答

4

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

有時,您可能需要更改消息的合同。例如,您的應用程序的新版本可能會爲郵件添加額外的標頭。 然後,當從新版本發送到舊版本時,系統必須處理一個額外的頭文件,以及在另一個方向進入 時丟失的頭文件。

以下規則適用的版本標題:

  • WCF不反對失蹤頭,對應 成員的默認值離開。

  • WCF還會忽略意外的額外標題。 此規則的一個例外是,如果額外的頭部在傳入的SOAP消息中的MustUnderstand屬性設置爲 true,則在此情況下拋出異常 ,因爲必須理解的頭部無法處理。

消息體也有類似的版本控制規則,雙雙失蹤和 附加消息正文部分被忽略。

因此,這意味着您可以添加和刪除MessageBodyMembers,而不會破壞兼容性。請注意更改成員類型。確保它們被序列化以保持兼容。