愚公系列2023年04月.NET CORE工具案例中,如何用.NET Core实现跨进程事件总线改写为长尾?

2026-03-30 15:231阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计797个文字,预计阅读时间需要4分钟。

愚公系列2023年04月.NET CORE工具案例中,如何用.NET Core实现跨进程事件总线改写为长尾?

(文章目录)+ 前言 + 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

愚公系列2023年04月.NET CORE工具案例中,如何用.NET Core实现跨进程事件总线改写为长尾?

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

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

本文共计797个文字,预计阅读时间需要4分钟。

愚公系列2023年04月.NET CORE工具案例中,如何用.NET Core实现跨进程事件总线改写为长尾?

(文章目录)+ 前言 + 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

愚公系列2023年04月.NET CORE工具案例中,如何用.NET Core实现跨进程事件总线改写为长尾?

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

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