(Dnc系列)借助Dnc.Events.InMemory在三分钟实现一个内存级别的事件驱动处理模型
前言
Dnc.Events是在借鉴领域驱动设计大佬daxnet的博客基础上做的基于内存级别的EDA处理模型,不清楚EDA的童鞋请自行百度。
第一分钟 安装Nuget Dnc.Events.InMemory
新建一个控制台项目并安装依赖
Instal-Package dnc.events.inmemory
添加appsettings.json并设置事件存储的文件路径
{
"ConnectionStrings": {
"event_store": "f://event_store.txt"
}
}
注意设置:appsettings.json为较新复制或者一直复制,不然会抛出异常
第二分钟 定义一个事件和事件的处理器
事件,依赖于基类DomainEvent
public class TimeUpdatedEvent
: DomainEvent
{ }
事件处理器,继承自DomainEventHandler<>
public class VersionSetEventHandler
: DomainEventHandler<VersionSetEvent>
{
public VersionSetEventHandler(IEventStore eventStore)
: base(eventStore)
{ }protected override Task HandleAsync(VersionSetEvent @event)
{
var version = @event.Version;
return Task.FromResult(version);
}
}
第三分钟 服务注册和订阅发布
服务注册,服务注册依赖于Dnc.Core的注册机制,事件注册服务,build构建ServiceProvider
Fx.SrvRegisteredEvent += services =>
{
services.AddScoped<IEventHandler, VersionSetEventHandler>();
};
Fx.CreateDefaultConstruction().Build();
使用事件总线订阅和发布事件
var eventbus = Fx.Resolve<IEventBus>();
var eh = Fx.Resolve<IEventHandler>();
var es = Fx.Resolve<IEventStore>();
eventbus.Subscribe();
eventbus.PublishAsync(new VersionSetEvent());
后记
事件驱动、cqrs是领域驱动里面比较重要的概念,今天带着大家做了个简单的例子,这对于理解事件驱动的相关概念是蛮有帮助的。源码地址https://www.nuget.org/packages/Dnc.Events.InMemory/Dnc.Events.InMemory
本文来自博客园,作者:张建wechatmedia.top,转载请注明原文链接:https://www.cnblogs.com/gainorloss/p/10918766.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构