解释WIB 是什么之前,先回顾以下我们前面的各种服务工作方式。前面的各种服务的工作方式都是请求/应答方式。

客户端发送请求,服务器端根据客户端的请求,返回相应的结果。这种方式是一种顺序式访问,是一种紧耦合的方式。

服务器被动接受访问,服务器无法直接给客户端发消息。针对这种情况出现了发布/订阅方式。现在这种方式很热呀!

发布/订阅方式类似出版社发行杂志,出版社每年要求大家订阅杂志,当你订阅后,每月到时,不管你有没有问,

杂志都会准时送到你家门口。对于计算机系统类似,当你订阅了服务器上的某种消息后,不管你是否一直访问?当服

务器上的这个消息来时,客户端就会自动触发消息事件。客户端就可以针对该消息进行相应的处理。

每一个发布者与订阅者连接在一个虚拟的总线上,这个总线就叫WIB(Wide Information Bus).叫Information Bus,

是因为这是一个虚拟的信息传输通道。wide 是因为这个总线可以传输任何KbmMW 识别的数据类型。比如说数组、流、

数据集等等。

任何连接在WIB 上的服务器或者客户端都可能作为发布者或者是订阅者,因此在WIB 里面不再区分服务器与客户端,

统一将他们称为节点(nodes).任何节点都可以生产或者消费消息。

WIB 既可以在一个局域网内,也可以跨越到intranet,乃至这个internet 上。

下图是一个典型的多网段的发布/订阅方式的原理图

上图中所有的服务器与PC 都是节点。当然有的只发布信息,有的只接受信息,有的即发布信息也接受信息。既然是发布/订阅方式,作为双方通信,

肯定就要一个主题(subject). 发布者发布主题,订阅者订阅主题。当发布者发布一个主题时,根据订阅者的要求。发送到对应的订阅者。

在KBM中,主题是一个支持通配符的字符串组成的,类似上面图里面的MSG.A.B.C,每个. 表示不同的消息划分。主题的开始必须是这些

打头的:MSG, REQ, RES, SUB, USB, CAC,THR, SRV。

先简单的说一下消息匹配的方式,比如说发布的主题为: MSG.F.G, 那么订阅者可以订阅MSG.F.G, 也可以订阅MSG.*.G

也可以订阅MSG.F.>   . 上面三种方式都可以收到订阅的消息。

使用delphi 开发多层应用(二十三)KbmMW 的WIB的更多相关文章

  1. 使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库

    delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持 ...

  2. iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)

    iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3) 2.使用代码添加按钮实现的响应 使用代码添加的按钮,实现响应需要使用到addTarget(_:action:for:)方法,其语法形 ...

  3. 使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器

    从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能.细化了很多权限操作. 今天对这一块做个介绍. 要做一个认证管理,大概分为以下5步: 1.  定义你要保护的资源,一般 ...

  4. 使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点

    KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播

  5. 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)

        RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高, ...

  6. 使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器

    随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提 ...

  7. UWP开发入门(二十三)——WebView

    本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的 ...

  8. 转(Delphi 新窑洞):使用delphi 开发多层应用(十七)使用RTC web 服务器返回JSON

    RTC作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种 非常好的选择.下面我们做一个使用RTC web 服务器返回数据库JSON 的例子. ...

  9. Java开发笔记(二十三)数组工具Arrays

    数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...

随机推荐

  1. HP服务器安装配置教程

    使用iLO远程管理HP系列服务器 http://blog.51cto.com/wangchunhai/837529

  2. 46. linux下解压.tar.gz文件

    tar -zxvf jdk-7u55-linux-i586.tar.gz 步骤二:解压jdk-7u55-linux-i586.tar.gz ,执行以下命令: #mkdir /usr/local/jav ...

  3. 17.在Action获取Scope对象

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 引言:在前面的Action操作中,关键就是Action中的exectue方法 ...

  4. UI5-文档-4.24-Filtering

    在此步骤中,我们为产品列表添加一个搜索字段,并定义一个表示搜索项的过滤器.搜索时,列表会自动更新,只显示与搜索项匹配的项. Preview A search field is displayed ab ...

  5. Winform-图片上传

    1.界面上拖个.pictureBox(pictureBox1) //上传点击按钮 private void button1_Click(object sender, EventArgs e) { Op ...

  6. ubuntu下安装jdk,tomcat,mysql,ftp,telnet,svn

    需求分析:自己弄了个小网站,想放到云服务器上,同时把自己积累的代码也放上去,服务器上的文件可以简单的在windows上查看,也可以方便的通过windows连接linux服务器. 解决:运行网站要用到j ...

  7. spring浏览器国际化的原理

    We will add two languages support to our application: English and German. Depending on the locale se ...

  8. mysql 存储过程分页 转载

    /* --名称:MYSQL版查询分页存储过程 by peace 2013-8-14 --输入参数:@fields -- 要查询的字段用逗号隔开 --输入参数:@tables -- 要查询的表 --输入 ...

  9. 安装Anaconda以及jupyter的使用

    1)下载https://www.anaconda.com/download/ 2)安装 3)终端查看(Anaconda Prompt) 4)升级所有的包 初次安装下的软件包版本一般都比较老旧,因此提前 ...

  10. 消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行 profile 名称无效

    错误:消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行profile 名称无效 原因: 用SA帐户是可以发送邮件的,但换了另外一个帐户后却提示以上错误. 解决 ...