C# 基于消息发布订阅模型的示例(下)
- 作者: 想念你的腿想念你的嘴
- 来源: 51数据库
- 2021-07-02
一 背景
在中我们介绍了一个完整地基于消息发布和订阅的模型,这篇文章我将介绍一种简单的基于消息的发布和订阅模型,在这个模型中我们将通过构建一个publisher类来完成对特定的事件和事件订阅进行封装,这个是一个更加轻量级别的方式,使用这个的主要目的是降低类之间彼此的耦合程度,从而方便代码的扩展和访问,最终使代码结构更加合理。
我们首先来看看具体的publisher类的构成,后面我们将会对这个类做一个详细的讲解和分析。
二 完成分析
在上面的publisher类中,我们使用了一个eventtype类型的泛型参数,这个参数由我们自己来进行定义,一般定义为枚举类型用于标识我们唯一的事件类型,定义好了泛型参数后我们定义了一个_eventtypelist用于定义具体的eventtype和对应的处理方法并且将这个放到一个静态的dictionary中,当然我们在代码中一个事件可以对应多个处理的action,但是在一般情况下一个事件只有一个对应的处理函数,这里也不排除一个事件对应多个事件的处理函数,另外这里我们默认定义了四个object类型的参数,用于向处理函数进行参数的传递,另外我们的方法都是静态的方法并且在订阅的过程中加了锁从而保证了多线程的环境中保证线程的安全性。
三 使用过程
在具体的使用过程中主要包括三个重要的步骤:1 定义事件类型。2 消息接收方订阅事件处理(一般在构造函数中调用attach方法创建时间的唯一订阅)。3 事件发布方发布事件(事件的发送方触发时间并传递参数,调用notify方式触发事件),完成以上三个步骤就完成了整个基于消息的发布订阅的简单处理,这个publisher类在处理一般的事件方法中都能够顺利实现,最重要的是事件本身简单易于理解而且能最大程度上降低模块间的耦合,所以在使用的时候还是非常方便的。
以上就是c# 基于消息发布订阅模型的示例(下)的详细内容,更多关于c# 发布订阅模型的资料请关注其它相关文章!
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
