CQRS

作者: 什么也不懂888 | 来源:发表于2021-06-22 11:35 被阅读0次

查询 (Query)

上图中,可以看到Query不是通过DB来查询,而是通过一个专门用于查询的Read DB(上图中的Cache,它不一定是数据库,但为方便起见,下面统称Read DB),Read DB中的表(方便起见,暂且认为这个Read DB是一个RDBMS)是专门针对UI优化过的,例如里面可能会有LatestProductListModel(ProductId, ProductName, Price, BrandName, AddedTime)、BestSoldProductListModel(ProductId, ProductName, TotalSold)这样的表,分别表示最新的产品列表,销量最好的产品列表(它们其实就相当于是View Model)。LatestProductListModel中有一个BrandName的字段,注意,不是BrandId,因此,对于界面中的查询,几乎全都可以通过SELECT * FROM [TABLE]这样的SQL语句来实现,可能有少数Where,但基本没有Join,这对于界面的加载速度绝对是有利无弊的(其实也是在用空间换时间)。

命令 (Command)

业务逻辑大部分都发生在写入的时候,例如用户购买商品提交订单时,我们要验证库存,用户信息订单数据是否有效等。如果从传统DDD的角度看,Command类似于Application Service,用户的命令(如提交订单)会以Command的形式得到执行,而Command中也不会带有业务逻辑,Command中做的事情基本上是:通过Repository得到相关的领域对象,调用某些领域服务(Domain Service)执行一些操作(业务逻辑都将保留在领域模型中),然后执行Commit或SaveChanges之类的方法提交改动,之后,相关的数据就会写入到Write DB中(图的DB,下文统称Write DB)。需要注意的是,UI上的查询都是查Read DB,而不是Write DB。

相关文章

  • 初识 - DDD-CQRS

    CQRS是什么? CQRS(Command and Query Responsibility Segregatio...

  • 团队开发框架实战—CQRS架构

    团队开发框架实战—CQRS架构 CQRS架构图 什么是CQRS? 这里只通过Udi Dahan的《Clarifie...

  • CQRS

    2018.04.22 command query responsibility segregation,命令查询责...

  • CQRS

    查询 (Query) 上图中,可以看到Query不是通过DB来查询,而是通过一个专门用于查询的Read DB(上图...

  • CQRS

    reference: a. 微软技术文档[https://docs.microsoft.com/en-us/azu...

  • CQRS没有成功的

    CQRS是一种架构风格。架构是一个系统的顶层结构那么出现这种情况是适合CQRS的:

  • CQRS模式应用Spring Boot+Scala框架集成开发

    今天的topic 比较难,Peter 老师一一道来。 1. 什么是CQRS CQRS最早来自于Betrand Me...

  • Sagas中的saga

    这个微软官方cqrs系列中讲saga的文章,个人觉得不错,分享给大家。 澄清术语 saga这个术语通常在CQRS中...

  • 软件架构模式

    CQRS架构 微服务架构 微核架构

  • 如何撸一个GO版本的基于CQRS的事件驱动框架

    CQRS架构和事件驱动思想用的越来越广泛,Java开发的同学在实践CQRS架构时,应该基本都用过axon-fram...

网友评论

      本文标题:CQRS

      本文链接:https://www.haomeiwen.com/subject/jqwpyltx.html