1

DDD/MVC描述保持damain實體和View層分離,以保持Views持久性無知,反之亦然。 DTO是這樣做的一種方式。我已經看過AutoMapper作爲一種方便他的方法。但是,由於我最近開始使用EF和純POCO類,在我看來,直接映射persist無知POCO的DTO實際上只是一個複製層,除了可以說你是使用DTO's。如果你的POCO是純粹的,堅持無知的話,簡單地跳過DTO層會出什麼問題?DDD/MVC純POCO類可以直接呈現給View?

感謝

JAMES你必須記住

回答

1

一件事是關於模型的粘合劑。它將綁定您的模型具有相同名稱屬性的任何發佈字段。

要弄清這個問題,想像你正在使用的用戶模型是這樣的:

public class User 
{ 
    public int UserId { get; set; } 
    public string login {get; set; } 
    ... 
    public bool admin { get; set; } 
} 

如果使用註冊頁面上這種模式,即使您尚未創建管理員字段和設置好的腳手架爲假,而惡意用戶可以創建一個名爲admin的表單域,並將其設置爲true(如複選框)在您的頁面上。發佈此表單會導致您收到的模型將此屬性設置爲true,從而使用戶成爲管理員。

這就是爲什麼你必須使用防僞造令牌和查看模型,以避免這種情況。

0

有DTO(或ViewModels)的原因是域對象不同於視圖。

對於每個視圖,您應該有一個適合它的單獨ViewModel。我只能包含數據和元數據,比如驗證屬性。

域對象不應該公開數據,而應該顯示業務規則的行爲。

如果您的查看模型只是複製域模型。如果您的域模型沒有任何方法,但只有公共屬性。如果你還沒有定義無處不在的語言,聚合,不變量......那麼你只是沒有做DDD,但CRUD應用程序。在這種情況下,的確,DTO可能毫無意義。

相關問題