MediatR
MediatR 是什么
MediatR 是一个轻量级的库,用于实现命令查询职责分离(CQRS)模式和管道行为模式。它通过中介者模式将请求和处理程序解耦,使得代码更加模块化、可测试和易于维护。
核心概念
- 请求(Request):
请求是客户端发出的操作指令,可以是命令(Command)或查询(Query)。
请求通常包含必要的输入参数。 - 处理程序(Handler):
处理程序负责处理请求并返回结果。
每个请求类型对应一个处理程序。 - 通知(Notification):
通知是一种广播消息,可以被多个处理程序处理。
适用于事件驱动的场景。 - 管道行为(Pipeline Behaviors):
管道行为是在请求处理前后执行的中间件。
用于实现日志记录、事务管理、验证等横切关注点。
使用
-
安装包 MediatR
-
注册服务
builder.Services.AddMediatR(cfg=> cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()));
-
定义请求或通道数据
public class TestRequest:IRequest<Tuple<string, long>>, INotification { public string Code { get; set; } }
TestRequest中的属性为请求或通知的参数
IRequest 接口用于定义请求,后面的泛型用于定义返回的参数,请求必须实现此接口
INotification 接口用于定义通知,通知功能必须实现此接口 -
定义请求处理程序或定义管道行为
定义请求处理public class TestHandle : IRequestHandler<TestRequest, Tuple<string, long>> { public TestHandle() { Console.WriteLine("Create TestHandle"); } async Task<Tuple<string, long>> IRequestHandler<TestRequest, Tuple<