使用delphi 开发多层应用(二十三)KbmMW 的WIB
解释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的更多相关文章
- 使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持 ...
- iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)
iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3) 2.使用代码添加按钮实现的响应 使用代码添加的按钮,实现响应需要使用到addTarget(_:action:for:)方法,其语法形 ...
- 使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能.细化了很多权限操作. 今天对这一块做个介绍. 要做一个认证管理,大概分为以下5步: 1. 定义你要保护的资源,一般 ...
- 使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播
- 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)
RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高, ...
- 使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器
随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提 ...
- UWP开发入门(二十三)——WebView
本篇讨论在UWP开发中使用WebView控件时常见的问题,以及一些小技巧. WebView是实际开发中常用的控件,很多大家抱怨的套网页的应用都是通过WebView来实现的.这里要澄清一个问题,套网页的 ...
- 转(Delphi 新窑洞):使用delphi 开发多层应用(十七)使用RTC web 服务器返回JSON
RTC作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种 非常好的选择.下面我们做一个使用RTC web 服务器返回数据库JSON 的例子. ...
- Java开发笔记(二十三)数组工具Arrays
数组作为一种组合形式的数据类型,必然要求提供一些处理数组的简便办法,包括数组比较.数组复制.数组排序等等.为此Java专门设计了Arrays工具,该工具包含了几个常用方法,方便程序员对数组进行加工操作 ...
随机推荐
- sun 证书问题解决
1.下载的需要的证书: sudo ./$JAVA_HOME/jre/bin/keytool -import -alias WOSt03 -keystore $JAVA_HOME/jre/lib/sec ...
- Gson 解析教程
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...
- canal 监控数据库表 快速使用
https://github.com/alibaba/canal 快速开始 https://github.com/alibaba/canal/wiki/QuickStart 注意 1. vim con ...
- Jquery无缝轮播图的制作
轮播是html页面中比较常见的一种展现形式,也是基础,把轮播图做好,是排版中比较关键的 1.首先是轮播的html元素放置:做轮播之前,要有一个初步的认识 2.每个元素的位置怎样摆放,也是很关键的,这里 ...
- 使用Linux命令行测试网速-----speedtest-cli
https://github.com/sivel/speedtest-cli 当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为“最后一公里”)的网络连接速度.在可用于测 ...
- DateUtil日期处理
package com.zjx.util; import java.text.SimpleDateFormat; import java.util.Date; public class DateUti ...
- Linux 帮助 man命令
man 命令 使用权限 所有用户< /pre> 语法格式 man [[ [-c ] [-t ] [Section] ] | [-k | -f ] ] [-F] [-m] [ -MPath ...
- python 解析 yaml文件
import yaml with open("./test.yaml") as f: x = yaml.load(f) print(x) [{'tasks': [{'yum': { ...
- eclipise快捷键,留给以后备用
快捷键无效解决办法: 1.考虑是否被其他应用占用,如QQ,QQ音乐,千千动听等 2.在eclispe查看是否被修改:Window->Preferences->General->Key ...
- css3将图片、内容换为灰色
直接用filter属性-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%); ...