博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
区别:ASP.NET MVC的Model、DTO、Command
阅读量:6673 次
发布时间:2019-06-25

本文共 637 字,大约阅读时间需要 2 分钟。

最近在用CQRS架构模式做项目,有些感悟,记录下来。

问题的描述(大家是否也存在过类似的情况呢?)

从刚开始时项目中没有区分这3种对象,所以导致了很多职责公用,然后就乱了,比如Command一部分职责需要用到ASP.NET MVC中,所以定义在了底层dll中,并且贴了一堆一堆的DataAnnotation的tag到属性上,其中包括了很多remote验证、前端js validation组件的验证tag,很宏伟。后端CommandHandler那边传入DomainService的dll中,由于对数据转换还存在误解,所以也用得一塌糊涂。

我目前的理解

  1. ASP.NET MVC的Model层不能少,这个是细粒度的对象,和UI有很强的联系,在这些对象定义上需要贴一堆验证tag以及UIHint
  2. Command对象,是牵涉到具体业务行为的对象定义,和UI没有很大关系(但不代表没有关系),Command的名称、属性的定义会根据项目的进展而变化,实际上就是看需求变动以及对业务的理解深入而变化,在Command对象上定义的都是些server端验证的属性(顺便说一下,A2D框架的CommandBus会在每次CommandBus.Send后验证这些Command的合法性)。
  3. DTO,是data transfer object的意思,它所能描述的范围太宽了,后来发现在CQRS中,DTO主要是指Query DTO。

下面再贴一张CQRS的图(大家看看能否把上面3种对象对应起来):

 

 

转载地址:http://rtrxo.baihongyu.com/

你可能感兴趣的文章
获取n!的末尾有多少个0?
查看>>
使用递归遍历并转换树形数据(以 TypeScript 为例)
查看>>
PHP类推荐:QueryList|基于phpQuery的无比强大的PHP采集工具
查看>>
windows下实现wamp与tomcat环境整合
查看>>
我的友情链接
查看>>
Windows Server 2012 R2搭建IIS服务器
查看>>
SCVMM 2012 R2运维管理二之:安装域控制器
查看>>
[Fibre Channle 实战之三]FC 和iSCSI的使用差异
查看>>
c#winform选择文件,文件夹,打开指定目录方法
查看>>
traceroute
查看>>
如何划分man文档的章节
查看>>
微信公众号的分类
查看>>
分布式高可用存储(drbd+corosync+pacemaker+MooseFS)
查看>>
Nginx+Lua+Redis连接池
查看>>
MySQL python 数据迁移脚本
查看>>
我的友情链接
查看>>
网站运维常用小技巧,排错必备
查看>>
Python中MySQLdb模块的安装
查看>>
windows下的grep
查看>>
find 详解
查看>>