区别:ASP.NET MVC的Model、DTO、Command
2013-11-06 17:07
246 查看
最近在用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种对象对应起来):
问题的描述(大家是否也存在过类似的情况呢?):
从刚开始时项目中没有区分这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种对象对应起来):
相关文章推荐
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别 转载自:http://blog.csdn.net/luoyeyu1989/article/details/8275866
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
- 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- ASP.Net MVC中 ViewBag, ViewData, TempData, ViewModel 的区别
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
- [备忘]ASP.NET MVC中RouteData.GetRequiredString("key")方法和RouteData.DataTokens["key"]方法使用上的区别
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
- Asp.net MVC 示例项目"Suteki.Shop"分析之---ModelBinder
- ASP.NET MVC中的ViewData和ViewBag的区别
- ASP.NET MVC几个版本的区别
- 通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型
- ASP.NET MVC Model绑定(五)
- MVC与ASP.NET的区别
- ASP.NET MVC Model验证(一)
- ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProvider
- ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProviders