zoukankan      html  css  js  c++  java
  • (Dnc系列)借助Dnc.Events.InMemory在三分钟实现一个内存级别的事件驱动处理模型

    前言

    Dnc.Events是在借鉴领域驱动设计大佬daxnet的博客基础上做的基于内存级别的EDA处理模型,不清楚EDA的童鞋请自行百度。

    第一分钟 安装Nuget Dnc.Events.InMemory

    新建一个控制台项目并安装依赖

    image

    Instal-Package dnc.events.inmemory

    添加appsettings.json并设置事件存储的文件路径

    {
       "ConnectionStrings": {
         "event_store": "f://event_store.txt"
       }
    }

    注意设置:appsettings.json为较新复制或者一直复制,不然会抛出异常

    image

    第二分钟 定义一个事件和事件的处理器

    事件,依赖于基类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

    image

    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

  • 相关阅读:
    [bochs]反编译的代码只能参考参考
    [Linux命令]dd
    exp1orer.exe木马解除方法
    江民公布“密码7005”最新变种技术报告
    广外女生1次惊心动魄的卸载
    [病毒]exp1orer.exe
    [Win2003]禁用关机原因调查
    获得本机IP地址
    一段连接FTP的VC代码
    [Perl]FTP自动上传文件的脚本以及配置文件
  • 原文地址:https://www.cnblogs.com/gainorloss/p/10918766.html
Copyright © 2011-2022 走看看