ON我們應該決定是否必須爲我的WCF服務創建dataContract或MessageContract。什麼時候應該使用datacontract和WCF中的消息合同
我知道的是,當我們需要更多地控制SOAP時,我們使用MessageContract。
其次我已經看到了DataContract通過MessageContract公開的一些代碼,它是如何使用它的。
請提供一些現實生活中的scenerios。
ON我們應該決定是否必須爲我的WCF服務創建dataContract或MessageContract。什麼時候應該使用datacontract和WCF中的消息合同
我知道的是,當我們需要更多地控制SOAP時,我們使用MessageContract。
其次我已經看到了DataContract通過MessageContract公開的一些代碼,它是如何使用它的。
請提供一些現實生活中的scenerios。
這不是一個「非此即彼」的問題 - 如果您處理複合數據(不僅僅是int,string等的基本類型),您將始終擁有數據協定。這是一個給定的。
如果您需要非常密切和非常特別地控制SOAP消息的佈局,您將只需要消息協定。在大多數情況下,超過90%的時間 - 你沒有。
消息協定允許您具體說明哪些元素(標量類型或複合類型爲DataContracts)將位於SOAP標頭中,哪些位於SOAP正文中。
如果您的通信夥伴需要非常特定的格式,並且您必須調整SOAP消息以完全匹配給定的佈局,那麼您可能需要此選項。這只是當你需要並且應該使用消息合約的唯一有效方案。因此,長話短說:總是使用數據契約,實際上從來沒有使用消息契約(除非你絕對,肯定不得不)。
Marc
如果您需要明確接管SOAP標頭和主體,則可以使用MessageContracts。例如,如果您需要確保信用卡號碼與您的其他類型分開加密,則需要對線路上的消息進行控制。
下面是對一些例子(特別是加密的例子)的更多信息:http://msdn.microsoft.com/en-us/library/ms730255.aspx
如果你只是想單純的DTO,並不在乎他們對佈線形狀,去DataContracts。