MediatR: .NET 平台上的命令查询职责分离 (CQRS) 库

艺帆风顺 发布于 2025-04-05 37 次阅读


、 

简介

MediatR 是一个轻量级的库,用于实现应用程序中的中介者模式【实现命令查询职责分离 (CQRS) 模式和面向消息的架构】。通过将请求(命令或查询)与处理程序解耦,简化了应用程序的逻辑分层和扩展。

主要特性

  • • 命令和查询模式:支持命令和查询的分离,使代码更具可读性和可维护性。
  • • 管道行为:允许在处理请求之前或之后执行横切关注点(如日志记录、验证等)。
  • • 异步支持:内置对异步操作的支持,方便处理长时间运行的任务。
  • • 依赖注入:完全兼容依赖注入容器,易于集成到现有的 ASP.NET Core 或其他 .NET 应用程序中。
  • • 简单易用:API 设计简洁,易于上手和使用。

安装和配置

注册中间件

使用

MediatR 提供了以下主要接口和类型:

  • • IRequest 用于命令和查询消息,通常需要返回结果。
  • • INotification 用于事件消息,不需要返回结果。
  • • IMediator 用于发送请求和发布事件。

IRequest-命令和查询

  1. 1. 定义一个命令或查询类及其对应的处理程序。
  1. 2. 创建事件处理器

3.在服务或控制器中发送命令:

不要忘记注册中间件

INotification-事件消息

INotification 是用于事件消息的接口,通常不需要返回数据,

  1. 1. 定义事件(INotification 实现)
  1. 2. 创建事件处理器(INotificationHandler)
  1. 3. 发布事件(通过 IMediator)
添加管道行为

MediatR 支持在处理请求之前或之后执行额外的行为。例如,添加日志记录行为:

注册管道行为:

查询示例

类似地,可以创建查询类及其处理程序。例如,查询用户列表:

高级功能

  1. 1. 管道行为:在请求处理前后执行操作,如日志记录、验证等。
  2. 2. 请求预处理和后处理:在请求处理前后执行自定义逻辑,用于数据验证或修改响应。
  3. 3. 条件处理器:根据请求条件选择不同的处理器。
  4. 4. 异步请求处理:支持异步请求和响应。
  5. 5. 请求取消:支持通过 CancellationToken 中止请求。
  6. 6. 发布通知(事件):可以发布事件,多个处理器异步处理这些事件。
  7. 7. 消息队列支持:结合消息队列发布通知,实现分布式架构。
  8. 8. 自定义 Mediator:可以根据需要扩展 MediatR 实现。

总结

MediatR 通过命令查询职责分离模式和面向消息的架构,帮助构建更加模块化、可维护的应用程序。其丰富的特性和灵活的扩展机制使得它成为现代开发中的有力工具。

 

推荐阅读:深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能精选4款基于.NET开源、功能强大的通讯调试工具MailKit: 在 .NET 中实现高效电子邮件发送与接收CsvHelper:简化 .NET 中的 CSV 文件处理8款支持 C# 语言的 AI 辅助编程神器,高效编程利器!C#字符串拼接的6种方式及其性能分析对比

点击下方卡片关注DotNet NB

一起交流学习

卡片关注DotNet NB,一起交流学习

请在公众号后台

回复 【路线图】获取.NET 2024开发者路线回复 【原创内容】获取公众号原创内容回复 【峰会视频】获取.NET Conf大会视频回复 【个人简介】获取作者个人简介回复 【年终总结】获取作者年终回顾回复加群加入DotNet NB 交流学习群
长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。