Mediatr
MediatR 是一个流行的开源 .NET 库,通过实现中介者模式来提供简单和灵活的请求/响应处理、命令处理和事件通知,同时促进应用程序组件之间的松耦合。
https://mediatr.app/?utm_source=aipure
产品信息
更新于:2024年11月09日
什么是 Mediatr
MediatR 是 Jimmy Bogard 为在 .NET 应用程序中实现中介者设计模式而开发的一个轻量但强大的库。它充当一个中间件,通过在系统不同部分之间路由请求、命令、查询和通知来帮助解耦应用程序组件,而无需它们之间有直接依赖关系。该库特别适用于实现命令查询职责分离 (CQRS) 模式,并以干净和可维护的方式管理进程内消息。
Mediatr 的主要功能
MediatR 是一个轻量级的 .NET 库,实现了中介者模式,提供了一种简单的方法来处理进程内消息传递,无需依赖。它支持请求/响应模式、命令、查询、通知和事件,既可以同步也可以异步。该库实现了组件之间的松耦合,并帮助在 .NET 应用程序中实现 CQRS(命令查询职责分离)架构。
管道行为: 支持类似中间件的行为,用于处理横切关注点,如日志记录、验证和缓存,允许开发人员在不修改现有代码的情况下添加功能
自动处理程序发现: 自动识别和注册应用程序中的处理程序,减少显式配置的需求,简化设置
多种消息类型: 支持包括请求/响应、命令、查询、通知和事件在内的多种消息类型,并通过 C# 泛型协变实现智能分发
跨平台兼容性: 支持不同的 .NET 平台,包括 .NET Framework 4.6.1 和 netstandard2.0,使其适用于各种项目类型
Mediatr 的使用场景
Web API 开发: 非常适合通过将业务逻辑与控制器分离并实现 CQRS 模式来构建干净、可维护的 ASP.NET Core API
企业应用: 通过将代码组织成松耦合的功能模块,帮助管理大型企业应用中的复杂性
事件驱动系统: 通过处理应用程序内的通知和事件,促进事件驱动架构的构建
优点
促进干净的架构和关注点分离
减少应用程序组件之间的耦合
实现和集成简单,设置最少
缺点
在高吞吐量场景中可能会引入性能开销
对于小型应用可能会增加不必要的复杂性
仅限于进程内通信
如何使用 Mediatr
安装所需的 NuGet 包: 将 MediatR 和 MediatR.Extensions.Microsoft.DependencyInjection NuGet 包添加到您的 .NET 项目中
在 Startup 中配置 MediatR: 在 ConfigureServices 方法中使用 services.AddMediatR() 将 MediatR 添加到服务集合中,以自动注册处理程序
创建请求类: 创建一个实现 IRequest(用于无返回值的命令)或 IRequest<T>(用于返回数据的查询)的类
创建处理程序类: 创建一个实现 IRequestHandler<TRequest> 或 IRequestHandler<TRequest,TResponse> 的处理程序类,并实现 Handle 方法
注入 IMediator: 在需要发送请求的控制器或服务中注入 IMediator 接口
发送请求: 使用注入的 IMediator 发送请求,使用 Send() 进行请求/响应,或使用 Publish() 发送通知
可选:添加行为: 使用 IPipelineBehavior<TRequest,TResponse> 实现管道行为,以处理日志记录、验证和授权等横切关注点
Mediatr 常见问题
MediatR 是一个实现中介者模式的 .NET 库,帮助将应用程序逻辑与表示层解耦。它通常用于 ASP.NET Core 应用程序中,以管理组件之间的进程内通信。