2009-10-07 71 views
3

ON我們應該決定是否必須爲我的WCF服務創建dataContract或MessageContract。什麼時候應該使用datacontract和WCF中的消息合同

我知道的是,當我們需要更多地控制SOAP時,我們使用MessageContract。

其次我已經看到了DataContract通過MessageContract公開的一些代碼,它是如何使用它的。

請提供一些現實生活中的scenerios。

回答

4

這不是一個「非此即彼」的問題 - 如果您處理複合數據(不僅僅是int,string等的基本類型),您將始終擁有數據協定。這是一個給定的。

如果您需要非常密切和非常特別地控制SOAP消息的佈局,您將只需要消息協定。在大多數情況下,超過90%的時間 - 你沒有。

消息協定允許您具體說明哪些元素(標量類型或複合類型爲DataContracts)將位於SOAP標頭中,哪些位於SOAP正文中。

如果您的通信夥伴需要非常特定的格式,並且您必須調整SOAP消息以完全匹配給定的佈局,那麼您可能需要此選項。這只是當你需要並且應該使用消息合約的唯一有效方案。因此,長話短說:總是使用數據契約,實際上從來沒有使用消息契約(除非你絕對,肯定不得不)。

Marc

3

如果您需要明確接管SOAP標頭和主體,則可以使用MessageContracts。例如,如果您需要確保信用卡號碼與您的其他類型分開加密,則需要對線路上的消息進行控制。

下面是對一些例子(特別是加密的例子)的更多信息:http://msdn.microsoft.com/en-us/library/ms730255.aspx

如果你只是想單純的DTO,並不在乎他們對佈線形狀,去DataContracts。

相關問題