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); } }
posted on 2025-08-19 10:28  淡淡糖  阅读(151)  评论(0)    收藏  举报