ASP.NET MVC的Model、DTO、Command的區別

來源:互聯網
上載者:User

最近在用CQRS架構模式做項目,有些感悟,記錄下來。

問題的描述(大家是否也存在過類似的情況呢?):

從剛開始時項目中沒有區分這3種對象,所以導致了很多職責公用,然後就亂了,比如Command一部分職責 需要用到ASP.NET MVC中,所以定義在了底層dll中,並且貼了一堆一堆的DataAnnotation的tag到屬性上,其 中包括了很多remote驗證、前端js validation組件的驗證tag,很宏偉。後端CommandHandler那邊傳入 DomainService的dll中,由於對資料轉換還存在誤解,所以也用得一塌糊塗。

我目前的理解:

ASP.NET MVC的Model層不能少,這個是細粒度的對象,和UI有很強的聯絡,在這些對象定義上需要貼一堆 驗證tag以及UIHint

Command對象,是牽涉到具體業務行為的對象定義,和UI沒有很大關係(但不代表沒有關係),Command的 名稱、屬性的定義會根據項目的進展而變化,實際上就是看需求變動以及對業務的理解深入而變化,在 Command對象上定義的都是些server端驗證的屬性(順便說一下,A2D架構的CommandBus會在每次 CommandBus.Send後驗證這些Command的合法性)。

DTO,是data transfer object的意思,它所能描述的範圍太寬了,後來發現在CQRS中,DTO主要是指Query DTO。

下面再貼一張CQRS的圖(大家看看能否把上面3種對象對應起來):

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/webkf/aspx/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.