当前位置 : 主页 > 网络编程 > net编程 >

【愚公系列】2023年04月 .NET CORE工具案例-.NET Core使用事件总线(跨进程事件总线)

来源:互联网 收集:自由互联 发布时间:2023-09-03
(文章目录) 前言 1.事件总线概念 事件总线是一种事件发布/订阅结构,通过发布订阅模式可以解耦不同架构层级,同样它也可以来解决业务之间的耦合,它有以下优点 松耦合 横切关注点

(文章目录)


前言

1.事件总线概念

事件总线是一种事件发布/订阅结构,通过发布订阅模式可以解耦不同架构层级,同样它也可以来解决业务之间的耦合,它有以下优点

  • 松耦合
  • 横切关注点
  • 可测试性
  • 事件驱动

事件总线类型

  • 进程内事件 (Event):本地事件,它的发布与订阅需要在同一个进程中,订阅方与发布方需要在同一个项目中
  • 跨进程事件 (IntegrationEvent):集成事件,它的发布与订阅一定不在同一个进程中,订阅方与发布方可以在同一个项目中,也可以在不同的项目中

2.发布-订阅概念

发布-订阅模式其实是一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知。

订阅者(Subscriber)把自己想订阅的事件注册(Subscribe)到调度中心(Event Channel),当发布者(Publisher)发布该事件(Publish Event)到调度中心,也就是该事件触发时,由调度中心统一调度(Fire Event)订阅者注册到调度中心的处理代码。

在这里插入图片描述

本文主要介绍跨进程事件总线

一、.NET Core使用事件总线(跨进程事件总线)

1.安装包

Install-Package Masa.Contrib.Dispatcher.IntegrationEvents.Dapr
Install-Package Masa.Contrib.Dispatcher.IntegrationEvents.EventLogs.EFCore
Install-Package Masa.Contrib.Data.EFCore.Sqlite
Install-Package Masa.Contrib.Data.UoW.EFCore
Install-Package Masa.Contrib.Development.DaprStarter.AspNetCore
Install-Package Microsoft.EntityFrameworkCore.Design

在这里插入图片描述

2.数据库上下文

新建用户上下文类UserDbContext,并继承MasaDbContext

public class UserDbContext : MasaDbContext
{
    public UserDbContext(MasaDbContextOptions<UserDbContext> options) : base(options)
    {
    }
}

在这里插入图片描述

3.Dapr的使用

Dapr提出了Sidecar(边车)的概念,在启动项目时再额外启动一个Sidecar, 通过Sidecar可以解决进程间通信,为此官方提供了两种部署方式:

  • 自托管方式下运行Dapr
  • 在 Kubernetes 模式中部署和运行 Dapr

注册DaprStarter, 协助管理Dapr Sidecar

if (builder.Environment.IsDevelopment())
{
    builder.Services.AddDaprStarter();
}

在这里插入图片描述

4.注册跨进程事件总线

builder.Services.AddIntegrationEventBus(option =>
{
    option.UseDapr()
        .UseEventLog<UserDbContext>()
        .UseUoW<UserDbContext>(optionBuilder => optionBuilder.UseSqlite($"Data Source=./Db/{Guid.NewGuid():N}.db;"));
});
var app = builder.Build();

#region dapr 订阅集成事件使用
app.UseRouting();

app.UseCloudEvents();
app.UseEndpoints(endpoints =>
{
    endpoints.MapSubscribeHandler();
});
#endregion

待定。。。。。。。。。。。。。。。

【文章转自台湾大带宽服务器 http://www.558idc.com/tw.html提供,感恩】
上一篇:C# 保留两位小数
下一篇:没有了
网友评论