Skip to content

术语表 ​

📖 MediatR 和相关技术的专业术语解释


A ​

AOP (Aspect-Oriented Programming) ​

面向切面编程

一种编程范式,通过将横切关注点(如日志、验证、事务)从业务逻辑中分离出来,提高模块化程度。MediatR 的管道行为就是 AOP 的实现方式。

示例: 日志行为、验证行为、事务行为


Aggregate Root ​

聚合根

领域驱动设计(DDD)中的概念,指一个聚合的入口点。聚合根负责维护聚合内对象的一致性和不变量。

示例: Order(订单)是 OrderItem(订单项)的聚合根


C ​

CQRS (Command Query Responsibility Segregation) ​

命令查询职责分离

一种架构模式,将读操作(Query)和写操作(Command)分离,使用不同的模型和处理逻辑。

  • Command: 修改状态的操作,不返回数据或只返回简单结果
  • Query: 读取数据的操作,不修改状态

优势: 独立优化读写性能、使用不同的数据模型、提高可扩展性


Command ​

命令

表示意图执行某个操作的请求,通常会改变系统状态。在 MediatR 中通常以 Command 结尾命名。

示例: CreateOrderCommand, UpdateUserCommand, DeleteProductCommand


Correlation ID ​

关联ID

用于跟踪跨多个服务或组件的请求的唯一标识符。在分布式系统中特别有用。

示例: 每个请求分配一个 GUID,贯穿整个处理流程


D ​

DDD (Domain-Driven Design) ​

领域驱动设计

一种软件开发方法,专注于复杂领域的建模。强调领域专家与开发人员的协作,使用 Ubiquitous Language(通用语言)。

核心概念: 实体、值对象、聚合根、领域事件、仓储


Decorator Pattern ​

装饰器模式

一种结构设计模式,允许在不修改原始类的情况下动态添加行为。MediatR 的管道行为链就是装饰器模式的实现。

示例:

LoggingBehavior → ValidationBehavior → TransactionBehavior → Handler

Dependency Injection (DI) ​

依赖注入

一种设计模式,通过将依赖项从外部注入到类中,而不是由类自己创建,实现松耦合。

示例:

csharp
public class OrderHandler
{
    private readonly IOrderRepository _repo;
    
    public OrderHandler(IOrderRepository repo) // 通过构造函数注入
    {
        _repo = repo;
    }
}

Domain Event ​

领域事件

表示领域中发生的重要事情。在 MediatR 中通过 INotification 实现。

示例: OrderCreatedEvent, PaymentProcessedEvent, UserRegisteredEvent


DTO (Data Transfer Object) ​

数据传输对象

用于在不同层之间传输数据的简单对象,不包含业务逻辑。

示例:

csharp
public class OrderDto
{
    public Guid Id { get; set; }
    public string ProductName { get; set; }
    public decimal TotalAmount { get; set; }
}

E ​

Event Sourcing ​

事件溯源

一种架构模式,将状态变化存储为一系列事件,而不是当前状态。可以通过重放事件重建任何时间点的状态。

优势: 完整的审计跟踪、时间旅行查询、自然的事件驱动


H ​

Handler ​

处理器

在 MediatR 中,负责处理请求或通知的类。

  • Request Handler: 处理 IRequest,实现 IRequestHandler<T, R>
  • Notification Handler: 处理 INotification,实现 INotificationHandler<T>

示例: CreateOrderHandler, SendEmailHandler


I ​

IMediator ​

中介者接口

MediatR 的核心接口,提供 Send() 和 Publish() 方法。

csharp
public interface IMediator : ISender, IPublisher
{
}

INotification ​

通知接口

标记接口,表示一个可以被多个处理器处理的通知(事件)。

示例:

csharp
public class OrderCreatedNotification : INotification
{
    public Guid OrderId { get; set; }
}

IRequest ​

请求接口

标记接口,表示一个需要被处理的请求。

  • IRequest: 无返回值
  • IRequest<TResponse>: 带返回值

示例:

csharp
public class CreateOrderCommand : IRequest<OrderResult> { }
public class DeleteOrderCommand : IRequest { }

IRequestHandler ​

请求处理器接口

处理 IRequest 的接口。

  • IRequestHandler<TRequest>: 处理无返回值请求
  • IRequestHandler<TRequest, TResponse>: 处理带返回值请求

示例:

csharp
public class CreateOrderHandler : IRequestHandler<CreateOrderCommand, OrderResult>
{
    public async Task<OrderResult> Handle(CreateOrderCommand request, CancellationToken ct)
    {
        // 处理逻辑
    }
}

ISender ​

发送者接口

专注于请求/响应模式的接口,提供 Send() 方法。


IPublisher ​

发布者接口

专注于发布/订阅模式的接口,提供 Publish() 方法。


M ​

Mediator Pattern ​

中介者模式

一种行为设计模式,定义一个中介对象来封装对象之间的交互,减少对象之间的直接依赖。

优势: 降低耦合度、集中控制逻辑、易于维护和扩展


Minimal API ​

最小API

.NET 6+ 引入的一种轻量级 Web API 开发方式,无需控制器类。

示例:

csharp
app.MapPost("/orders", async (CreateOrderCommand cmd, IMediator mediator) => 
    await mediator.Send(cmd));

P ​

Pipeline Behavior ​

管道行为

MediatR 中的横切关注点实现机制,通过装饰器模式在请求处理前后插入逻辑。

示例: 日志行为、验证行为、事务行为、缓存行为


Publish/Subscribe ​

发布/订阅模式

一种消息传递模式,发布者发布消息,多个订阅者接收并处理。在 MediatR 中通过 INotification 实现。

特点: 一对多、解耦、异步


Q ​

Query ​

查询

表示读取数据的请求,不修改系统状态。在 MediatR 中通常以 Query 结尾命名。

示例: GetOrderQuery, ListProductsQuery, OrderStatisticsQuery


R ​

Repository ​

仓储

DDD 中的概念,提供访问聚合根的抽象接口,隐藏数据持久化细节。

示例:

csharp
public interface IOrderRepository
{
    Task<Order> GetByIdAsync(Guid id);
    Task AddAsync(Order order);
}

Request/Response ​

请求/响应模式

一种通信模式,客户端发送请求,服务器返回响应。在 MediatR 中通过 IRequest<TResponse> 实现。

特点: 一对一、同步或异步、有返回值


S ​

SOLID Principles ​

SOLID 原则

五个面向对象设计原则:

  1. Single Responsibility Principle (单一职责原则)
  2. Open/Closed Principle (开闭原则)
  3. Liskov Substitution Principle (里氏替换原则)
  4. Interface Segregation Principle (接口隔离原则)
  5. Dependency Inversion Principle (依赖倒置原则)

MediatR 帮助实现这些原则,特别是 SRP、OCP 和 DIP。


Service Lifetime ​

服务生命周期

依赖注入容器中服务的存活时间:

  • Transient: 每次请求创建新实例
  • Scoped: 每个作用域(如 HTTP 请求)创建一个实例
  • Singleton: 整个应用生命周期共享一个实例

SSE (Server-Sent Events) ​

服务器推送事件

一种单向实时通信技术,服务器可以向客户端推送数据。MediatR 的流式请求可用于实现 SSE。


T ​

Thread Safety ​

线程安全

代码在多线程环境下能正确执行,不会出现竞态条件或数据竞争。

注意: MediatR 的 Handler 默认不是线程安全的,应避免在 Handler 中使用可变共享状态。


U ​

Unit of Work ​

工作单元

一种设计模式,维护受业务事务影响的对象列表,并协调变化的写入。

示例: EF Core 的 DbContext 实现了 Unit of Work 模式


Unit Type ​

Unit 类型

MediatR 中表示"无值"的类型,类似于 void 但可用于泛型。

示例:

csharp
public class LogCommand : IRequest<Unit> { }

建议: 优先使用 IRequest(无泛型参数)而非 IRequest<Unit>


V ​

Value Object ​

值对象

DDD 中的概念,表示没有唯一标识的对象,通过属性值判断相等性。

示例: Money, Address, DateRange


Validation ​

验证

检查输入数据是否符合规则的过程。在 MediatR 中通常通过 FluentValidation + 验证行为实现。

示例:

csharp
public class CreateOrderValidator : AbstractValidator<CreateOrderCommand>
{
    public CreateOrderValidator()
    {
        RuleFor(x => x.Quantity).GreaterThan(0);
    }
}

常用缩写 ​

缩写全称中文
AOPAspect-Oriented Programming面向切面编程
APIApplication Programming Interface应用程序接口
CQRSCommand Query Responsibility Segregation命令查询职责分离
DDDDomain-Driven Design领域驱动设计
DIDependency Injection依赖注入
DTOData Transfer Object数据传输对象
HTTPHyperText Transfer Protocol超文本传输协议
ORMObject-Relational Mapping对象关系映射
RESTRepresentational State Transfer表述性状态转移
SOLIDSingle Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency InversionSOLID 原则
SQLStructured Query Language结构化查询语言
SSEServer-Sent Events服务器推送事件
UIUser Interface用户界面

🎓 总结 ​

掌握这些术语对于深入理解 MediatR 和相关架构模式至关重要。建议:

  1. ✅ 多次阅读,加深理解
  2. ✅ 在实际项目中应用
  3. ✅ 与团队统一术语使用
  4. ✅ 持续学习新技术术语

💡 提示: 遇到不熟悉的术语时,随时查阅本术语表!

Released under the CC BY-SA 4.0 License.