2011-03-03 74 views
3

在ASP.Net MVC 2.0的上下文中,是否有人可以解釋爲什麼我們需要使用DTO(數據傳輸對象),如果已經有模型?我曾見過一個例子,其中一個Web服務將DTO返回到asp.net,然後使用一些工廠類將其轉換爲Model。此Web服務與數據庫進行交談並以DTO的形式返回數據。在ASP.NET MVC中使用DTO

在我以前的項目中,我曾使用數據上下文和存儲庫與DB進行通信,該數據上下文和存儲庫用於將模型對象返回給我的控制器。然後我用這個模型傳遞給相應的視圖。這不簡單嗎?我找不到DTO pattren的確切用途。

回答

5

模型表示您的視圖編碼的邏輯數據模型。這可能或可能不會映射1:1與數據的來源。在模型== DTO的情況下,我同意,DTO有點多餘。

在我使用MVC的大多數情況下,擁有單一數據源非常罕見,或者缺乏將邏輯視圖與物理源分離的願望。例如,我經常進行多個服務和數據庫調用來構建單個邏輯模型。

+0

感謝您的解釋! 那麼在那種情況下,當DTO由多個來源創建時,我們可以使用這個dto本身來綁定我們的視圖?或者我們只需要將1:1的數據複製到我們的模型中就可以達到這個目的? – 2011-03-03 04:58:16

+0

我們發現了一些明顯的模式出現 - 複合模型結構的字段指向DTO實例,複合模型指向DTOs周圍的包裝。將數組轉換爲字典以及使用多個DTO生成對象以放入模型的複雜工廠。我們認爲該模型是我們想要爲視圖開發人員公開並記錄的豐富的編程API。 – stephbu 2011-03-03 05:03:41