程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC的Model、DTO、Command的區別

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

編輯:關於ASP.NET

最近在用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種對象對應起來):

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved