DDD之实现领域事件(MediatR)
DDD之实现领域事件(MediatR)
领域事件:在同一个微服务内的聚合之间的事件传递。使用进程内的通信机制完成。
(1)C#的事件机制
var eventClass = new EventClass();
eventClass .事件+=eventClass_事件
eventClass.StartProcess();
缺点:需要显式地注册。
(2)MediatR
进程内消息传递的开源库MediatR。事件的发布和事件的处理之间解耦。MediatR中支持“一个发布者对应一个处理者”和“一个发布者对应多个处理者”这两种模式
- 安装 Install-Package MediatR.Extensions.Microsoft.DependencyInjection
- AddMediatR
- 定义一个在消息的发布者和处理者之间进行数据传递的类,这个类需要实现INotification接口。一般用record类型。
-
消息的处理者要实现NotificationHandler
接口,其中的泛型参数TNotification代表此消息处理者要处理的消息类型。 -
在需要发布消息的的类中注入IMediator类型的服务,然后我们调用Publish方法来发布消息。Send()方法是用来发布一对一消息的,而Publish()方法是用来发布一对多消息的。
- 测试