欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 【事件总线】EventBus

【事件总线】EventBus

2024/10/24 12:31:51 来源:https://blog.csdn.net/weixin_44231544/article/details/139918312  浏览:    关键词:【事件总线】EventBus

文章目录

  • 概述
  • 如何使用
    • 如何发布消息
    • 如何进行消息监听
  • 来源

概述

事件总线是对发布-订阅模式(观察者)的一种实现,是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。

什么是“总线”:一个集中式的事件处理机制。同时服务多个事件和多个观察者。相当于一个介于Publisher和Subscriber中间的桥梁。它隔离了Publlisher和Subscriber之间的直接依赖,接管了所有事件的发布和订阅逻辑,并负责事件的中转。
在这里插入图片描述
.NET 开发的轻量级消息总线 EventBus,这是一个参照 Java Spring 中的 ApplicationContext.publish(message) 的方法实现的事件总线。

直接使用 Nuget 安装即可,开箱即用。

如何使用

如何发布消息

首先需要定义一个事件, 如下

///<summary> 
///控制台启动后的事件
///</summary> 
public class ConsoleStarted:Reface.EventBus.Event { 
public ConsoleStarted(objectsource):base(source){ Console.WriteLine("控件台启动完毕"); } 
}

在控制台启动后触发事件

class Program { static void Main(string[]args) 
{ //构造事件总线IEventBuseventBus=new DefaultEventBus();//发布消息 eventBus.Publish(new ConsoleStarted()); } }

如何进行消息监听

实现 IEventListener 即可成为监听者

using ConsoleApp1.Events; 
using Reface.EventBus; 
namespace ConsoleApp1.Listeners { public class OnConsoleStarted:IEventListener<ConsoleStarted> { 
public void Handle(ConsoleStarted@event) { Console.WriteLine("ConsoleStarted"); } } }

EventBus 和 IOC/DI 组件集成,可以免去对监听者一一注册的过程。 在 .NetCore 中,通过为 ServiceCollection 注册必要组件和按程序集注册监听器,可以实现这些功能:

var provider=new ServiceCollection() .AddEventBus()
//添加EventBus功能 
.AddEventListeners(this.GetType().Assembly) .AddEventListeners(typeof(IService).Assembly) .BuildServiceProvider(); IEventBuseventBus=provider.GetService<IEventBus>(); eventBus.Publish(newTestEvent());

来源

事件总线EventBus
基于 C# 开源的轻量级事件总线

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com