1. MediatR
MediatR 是一个轻量级的 .NET 库,用于实现 中介者模式 (Mediator Pattern)。它帮助解耦对象之间的交互,尤其是在实现 CQRS(命令查询责任分离)时非常有用。
核心功能
- 解耦对象:通过中介者避免对象之间直接依赖,简化代码结构。
- 命令和查询处理:允许开发者定义命令(Command)和查询(Query),并使用处理器(Handler)来处理这些请求。
- 支持事件发布:支持发布和处理领域事件或通知(Notification)。
主要用途
- 实现 CQRS(Command Query Responsibility Segregation)。
- 将请求的发送者和处理者解耦。
- 简化复杂应用程序的控制流。
- 处理领域事件。
工作原理
MediatR 的核心是 IMediator 接口,通过它可以发送命令、查询或通知,MediatR 会根据发送的请求类型自动找到对应的处理器(Handler)来执行逻辑。
使用场景
- 在应用层中定义命令和查询(例如创建用户、获取数据)。
- 在处理器中实现具体的业务逻辑。
- 在领域层中发布事件通知。
使用示例
安装 NuGet 包:
dotnet add package MediatR dotnet add package MediatR.Extensions.Microsoft.DependencyInjection定义命令:
public class CreateOrderCommand : IRequest<bool> { public string OrderId { get; set; } public decimal Amount { get; set; } }定义命令处理器:
public class CreateOrderHandler : IRequestHandler<CreateOrderCommand, bool> { public Task<bool> Handle(CreateOrderCommand request, CancellationToken cancellationToken) { // 业务逻辑:创建订单 Console.WriteLine($"Order Created: {request.OrderId}, Amount: {request.Amount}"); return Task.FromResult(true); } }在控制器中发送命令:
public class OrdersController : ControllerBase { private readonly IMediator _mediator; public OrdersController(IMediator mediator) { _mediator = mediator; } [HttpPost] public async Task<IActionResult> CreateOrder([FromBody] CreateOrderCommand command) { var result = await _mediator.Send(command); return Ok(result); } }
浙公网安备 33010602011771号