文章目录
- 项目地址
- 一、CQRS
-
- 1.1 统一DI注册
-
- 1.2 Mediat Pattern
-
- 1. 创建command和handler
- 2. Controller 使用CQRS
- 3. MediaR的补充
- 二、Result Pattern
-
- 2.1 为什么使用
-
- 1. 消除过度使用异常
- 2. 统一错误处理
- 3. 更清晰的API
- 4. 便于全局错误处理
- 三、Unit of Work
-
- 3.1 创建UnitOfWork
-
- 1. Application层创建接口
- 2. 在Infrustracture层实现接口
- 3.2 使用
- 四、Rich Domain Model
-
- 4.1 遵循法则
-
- 1. 封装领域状态禁止外部访问
- 2. 用值对象表示无身份概念
- 3. 聚合根(Aggregate Root)管理内部一致性
- 4. 不能在领域对象里直接调用外部服务
- 5. 创建Domain不依赖数据库
- 6. 使用领域服务处理跨对象逻辑
- 4.2 改造实体
-
- 1. 创建空私有构造器
- 2. DB Configuration
-
- 4.3 使用RichDomain
-
- 1.CreateGymCommandHandler创建gym
项目地址
https://www.bilibili.com/video/BV1yT42117pM?spm_id_from=333.788.videopod.episodes&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=3
dbt
airflow
一、CQRS
1.1 统一DI注册
1. 各个层注册自己服务
- MediaR主要在Application层,所以在这里注册

2. Program里统一调用
- program里调用各个层的DI方法

1.2 Mediat Pattern
1. 创建command和handler
- 创建Command的时候,继承接口
IRequest<返回值>
- 创建Handler的时候,继承接口
IRequestHandler<Command, 返回值>

2. Controller 使用CQRS
- 从DI里获取MediaR的服务
- 创建Command
- 通过MediaR发送命令
- 由于handler订阅里Command的处理,所以在handler里处理

3. MediaR的补充
_mediator.Send(command)
一对一 - 如果想一对多的话需要使用