什么是发布订阅模式?

article/2025/10/27 3:13:02

发布-订阅模式(Publish-Subscribe pattern)是一种软件架构模式,用于实现组件之间的解耦和消息传递。在这种模式中,组件(发布者)将消息发送到一个中心(消息代理或主题),然后其他组件(订阅者)可以选择性地订阅这些消息,并在发布者发布消息时接收到相应的通知。

发布-订阅模式的关键要素包括发布者、订阅者和主题(或消息代理)。发布者是生成消息的组件,它们将消息发布到主题或消息代理上。订阅者是希望接收特定类型消息的组件,它们通过订阅相应的主题或消息代理来表明自己的兴趣。主题或消息代理是负责管理发布者和订阅者之间的通信,它接收发布者的消息并将其传递给订阅者。

下面以一个简单的新闻发布系统为例来说明发布-订阅模式:

假设有一个新闻发布系统,其中包含多个发布者和多个订阅者。发布者可以是不同的新闻机构,它们负责发布不同类型的新闻,如体育新闻、科技新闻、财经新闻等。订阅者可以是用户或其他系统,它们对某些类型的新闻感兴趣,并希望在有相关新闻发布时及时接收到通知。

在这个系统中,发布者将自己的新闻发布到主题或消息代理上,例如,体育新闻发布者将体育新闻发布到体育主题上,科技新闻发布者将科技新闻发布到科技主题上。订阅者可以选择性地订阅感兴趣的主题,比如用户A订阅了体育主题和科技主题,用户B只订阅了科技主题。

当发布者发布新闻时,消息代理将根据订阅者的订阅情况将相应的新闻通知给订阅者。例如,体育新闻发布者发布了一条新的体育新闻,消息代理将该新闻发送给订阅了体育主题的用户A,同时忽略掉订阅了科技主题的用户B。用户A将收到通知并及时了解到最新的体育新闻。

通过发布-订阅模式,新闻发布系统实现了发布者和订阅者之间的解耦。发布者不需要知道哪些订阅者对其新闻感兴趣,订阅者也不需要知道哪些发布者会发布新闻。消息代理作为中介,管理发布者和订阅者之间的通信,使得系统更加灵活和可扩展。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/fdmFNH3b.shtml

相关文章

发布订阅模式

零、目录 应用场景实现原理代码实现全局模式下的订阅发布模式(泛化的订阅发布模式)总结 一、应用场景 ​ 发布订阅模式,广泛的存在于在我们的生活之中。 ​ 举个一个简单的例子来说,当我们在浏览视频或者博客论坛之类的网…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:VLCPlayer

本文简述如何在Smobiler中使用VLCPlayer插件,该插件支持播放rtsp流。 Step 1. 新建一个SmobilerForm窗体,再拖入VLCPlay,布局如下 在设计器中给VLCPlayer.Url赋值或者在窗体的Load事件中赋值 演示使用的rtsp流地址 rtsp://wowzaec2demo.strea…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:TTS

本文简述如何在Smobiler中使用TTS文字转语音。 Step 1. 新建一个SmobilerForm窗体,并在窗体中加入TTS和Button,布局如下 Button的点击事件代码: private void button1_Press(object sender, EventArgs e){ //第一个参数为文本;第…

Smobiler 仿得到APP个人主页

原型如下: 完整代码参考 https://github.com/comsmobiler/BlogsCode/blob/master/Source/BlogsCode_SmobilerForm/MyForm/dedao.cs 思路 可以将原型按照上图分成2个部分,部分A可以使用label、image、button、imagebutton、fontIcon控件来实现&#xff…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:PDFView

本文简述如何在Smobiler中使用PDFView。 Step 1. 新建一个SmobilerForm窗体,再拖入PDfView,布局如下 PDFView.ResourcrPath默认Document,指项目下\Resources\Document,若是pdf文件放在该文件夹下,则在设计器中直接赋值…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:OCR组件

本文简述如何在Smobiler中使用OCR组件进行文字识别。 Step 1. 新建一个SmobilerForm窗体,并在窗体中加入OCR和Button,布局如下 Button的点击事件代码: private void button1_Press(object sender, EventArgs e){ocr1.Recognize((obj,args)>…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:ArcFace人脸识别

本文简述如何在Smobiler中使用ArcFace(虹软人脸识别)。 Step 1. 新建一个SmobilerForm窗体,再拖入Button,Label,TextBox和AcrFace,布局如下 在设计器中给MediaView.Url赋值或者在窗体的Load事件中赋值 Button的事件代码如下 string message …

移动OA办公——Smobiler第一个开源应用解决方案,快来get吧

产品简介 SmoONE是一款移动OA类的开源解决方案,通过Smobiler平台开发,包含了注册、登陆、用户信息等基本功能。集成了OA中使用场景较多的报销、请假、部门管理、成本中心等核心功能。 免费获取方案 开源代码:https://github.com/comsmobile…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:UsbSerial串口通讯组件

本文简述如何在Smobiler中使用UsbSerial。 Step 1. 新建一个SmobilerForm窗体,再拖入UsbSerial和Button,布局如下 按钮事件代码: //连接private void button1_Press_2(object sender, EventArgs e){usbSerial1.Connect(Smobiler.Plugins.USBS…

Smobiler实现手机弹窗

前言 在实际项目中有很多场景需要用到弹窗,如图1 那么这些弹窗在Smobiler中如何实现呢? 正文 Smobiler实现弹窗有两种方式:1.MessageBox.Show 2.ShowDialog和ShowContextDialog。前者适合简易弹窗,后者适合自定义弹窗。 Messa…

Smobiler实现美观登录界面——C# 或.NET Smobiler实例开发手机app(二)

目录 一、 本文目标 二、 准备工作 1、 数据库 2、 材料 三、 界面布局 1、设置控件的属性值 (1) 输入框 (2) 图片属性 (3) HandElectricity的标题的label属性 (4)登录按钮…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:MediaView

本文简述如何在Smobiler中使用MediaView。 Step 1. 新建一个SmobilerForm窗体,再拖入MediaView,MediaView.Size设置(300,225),布局如下 在设计器中给MediaView.Url赋值或者在窗体的Load事件中赋值 播放本地视频可以通过GetResourc…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:AliPay组件

本文简述如何在Smobiler中调用支付宝支付。 Step 1. 界面 新建一个窗体,并在窗体中拖入Button,Label,AliPay等控件,布局如下: Step 2. 代码 在窗体中声明变量 //订单编号private string tradeNo;//支付宝应用编号&am…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:BarcodeReader组件

本文简述如何在Smobiler中使用BarcodeReader组件进行条码识别。Barcodereader通过机器学习能识别不规则条码,效率更好。 Step 1. 新建一个SmobilerForm窗体,并在窗体中加入Barcodereader和Button,布局如下 Button的点击事件代码: …

.NET(C#、VB)APP开发——Smobiler平台控件介绍:LiveStream和LiveStreamPlayer

本文简述如何在Smobiler中使用LiveStream和LiveStreamPlayer。 LiveStream 直播推送插件 Step 1. 新建一个SmobilerForm窗体,并在窗体中加入LiveStream和Button,布局如下 选中LisvStream,在设计器中设置Url(需要事先准备一个视频…

【转载】smobiler说明

类似开发WinForm的方式,使用C#开发Android和IOS的移动应用?听起来感觉不可思议,那么Smobiler平台到底是如何实现的呢,这里给大家介绍一下。 客户端 Smobiler分为两种客户端,一种是开发版,一种是打包版 开发…

.NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

.NET程序员一定最熟悉所见即所得式开发,熟悉的Visual Studio开发界面,熟悉的C#代码。 Smobiler也是因为具备这样的特性,使开发人员,可以在VisualStudio上,像开发WinForm一样拖拉控件,让许多人在开发APP时,再次回到所见即所得的开发方式中去。 Smobiler的快速开发,让Ama…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:MapView MaptrimView

本文简述如何在Smobiler中使用MapView和MaptrimView。 Mapview MapView 地图插件,可用于显示指定地点地图,显示轨迹等。 Step 1. 新建一个SmobilerForm窗体,再拖入MapView和Button,MapView.Size设置(300,300&#xf…

Smobiler 窗体

在Smobiler开发过程中,大家经常会对窗体的跳转,显示,关闭,生命周期存在一些不明白的地方,这篇文章主要用来说明Smobiler窗体。 Smobiler Form 和WindowsForm编程一样,在手机上显示的界面在Smobiler就是一个…

Smobiler快手小程序开发指南

注:快手小程序审核规范中写明拒绝纯webview小程序, 即无法通过以下步骤上架快手小程序, Smobiler只能作为快手小程序开发的一个补充, 具体见 快手-小程序审核规范 Step.1 注册快手开发者平台 ,登录之后点击创建 创建完成之后再点击应用进入 点击填写&am…