.NET Core 使用MediatR CQRS模式
2021-03-15 11:29
标签:hub 情况 防止 读取数据 reg 事件 第一个 hue 代码片段 CQRS(Command Query Responsibility Segregation)命令查询职责分离模式,它主要从我们业务系统中进行分离出我们(Command 增、删、改)和(Query 查), CQRS模式通过使用不同的接口来分离读取数据和更新数据的操作。CQRS模式可以最大化性能,扩展性以及安全性, 还会为系统的持续演化提供更多的弹性,防止Update命令在域模型Level发生冲突。 如下图所示: MediatR他为我们解决将消息发送与消息处理进行了解耦,他同时支持异步和同步来发送和监听消息. Install MediatR 创建处理程序,所有的处理程序都通过IRequestHandler接口来实现,该接口有两个参数,第一个是请求内容,第二个是响应内容. 正如下代码片段,处理程序实现了IRequestHandler带有输入和输出类型定义的接口 Install MediatR.Extensions.Microsoft.DependencyInjection 在Startup.cs中注册MediatR 我们只需要注入IMediator接口,通过如下代码我们来使用他们 CQRS 主要包含两大概念,一个是读写分离,一个是事件源。事件源不是必须项 https://github.com/hueifeng/BlogSample/tree/master/src/CQRSMediatR .NET Core 使用MediatR CQRS模式 标签:hub 情况 防止 读取数据 reg 事件 第一个 hue 代码片段 原文地址:https://www.cnblogs.com/yyfh/p/12797600.html前言
同时他可以明确的区分我们每一个动作向我们的请求模型和响应模型.从而降低了我们系统的复杂性.
通常情况我们使用同一数据模型进行我们数据的查询和修改,这是一个非常简单的CURD,在一些复杂的应用程序中,这种方法会变的难以操作,例如在读取方面应用程序可能会存在大量的查询,
返回具有不同的数据传输对象(DTO),对象映射可能会变的非常复杂,在写入方面,模型可能实施复杂的验证和业务逻辑.结果导致模型太多操作,整体变的相当得复杂.MediatR
PM> Install-Package MediatR
public class CreateOrderRequestModel:
IRequest
public class GetOrderByIdRequestModel:IRequest
//返回值
public interface IRequest
public class CreateOrderCommandHandler
: IRequestHandler
public interface IRequestHandler
public class GetOrderByIdQueryHandler :
IRequestHandler
PM> MediatR.Extensions.Microsoft.DependencyInjection
services.AddMediatR(Assembly.GetExecutingAssembly());
[Route("api/[controller]")]
[ApiController]
public class OrderController : ControllerBase
{
private readonly IMediator _mediator;
public OrderController(IMediator mediator)
{
_mediator = mediator;
}
[HttpPost]
public async Task
Reference
下一篇:雷林鹏分享:jsp 隐式对象