当前位置: 首页 > news >正文

【事件总线】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# 开源的轻量级事件总线

http://www.lryc.cn/news/382005.html

相关文章:

  • LeetCode 热题100 --双指针
  • 从《深入设计模式》一书中学到的编程智慧
  • Redis 基本配置
  • 【C++庖丁解牛】函数栈帧的创建与销毁
  • Java基础16(集合框架 List ArrayList容器类 ArrayList底层源码解析及扩容机制)
  • 数组:移除元素
  • 胡说八道(24.6.22)——通信杂谈(完结)
  • 设计模式原则——里氏替换原则
  • 详解 ClickHouse 的 SQL 操作
  • WPF与Winform,你的选择是?
  • 基于SpringBoot的实习管理系统设计与实现
  • 编程用什么电脑不卡的:深度解析与推荐
  • 优先级队列模拟实现
  • 记一次服务器崩溃事件
  • 神经网络 #数据挖掘 #Python
  • 营销复盘秘籍,6步法让你的活动效果翻倍
  • Linux下命令行文件创建删除、目录创建删除
  • 数字排列问题
  • CentOS Linux 7系统中离线安装MySQL5.7步骤
  • XSS跨站攻击漏洞
  • PMP到底值不值得考?
  • redis面试总结
  • 大模型日报2024-06-24
  • 深入理解计算机系统 CSAPP 练习题7.4
  • 摘苹果-第13届蓝桥杯省赛Python真题精选
  • 开源项目推荐-vue2+element+axios 个人财务管理系统
  • 手机数据如何恢复?11 款最佳安卓手机恢复软件
  • 大语言模型千问2的web搭建(streamlit)
  • 守护生产车间安全:可燃气体报警器预警与检测的重要性
  • [创业之路-125] :制造业企业的必备管理神器-ERP-计算的资源管理与企业的资源管理的异同