CQRS——eShopOnContainers(2)

一、CQRS

在这里插入图片描述

二、MediatR

1.调用IdentifiedCommand处理类

通过从控制器开始,来进行梳理,取消订单流程的大致过程,串联MediatR在集成事件和领域事件的作用
这里验证了是否处理过这次请求操作
在这里插入图片描述
在这里插入图片描述

2.调用CancelOrderCommand的处理类

这里执行取消订单操作

在这里插入图片描述

在这里插入图片描述

2.1SetCancelledStatus方法

在保存前,先Entity里执行所有的集合里的事件,然后再保存

在这里插入图片描述
在这里插入图片描述

这里OrderCancelledDomainEvent事件,等会还要 图2.2.1 中执行,较为重要

2.2SaveEntitiesAsync

在这里插入图片描述

2.2.1 DispatchDomainEventsAsync

执行实体类里的所有领域事件
在这里插入图片描述
在执行所有方法后,承接上文的2.1方法,
在这里插入图片描述

2.2.1.1AddAndSaveEventAsync

订单状态改变的集成事件的持久化保存
在这里插入图片描述

2.2.2 SaveChangesAsync

执行这一行之后,所有更改(来自命令处理程序和域事件处理程序)
通过DbContext执行的操作将被提交
至此处理完毕
流程:请求—>处理程序—>保存处理结果日志–>—>添加领域事件—>处理领域事件—>持久化保存集成事件–>发布到事件总线

三、大致的流程图

请添加图片描述

posted @   有诗亦有远方  阅读(33)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示