使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有
基于UDP或者TCP/IP 的点对点的消息传输。
1.基于UDP的消息广播
根据UDP 的工作原理,在同一个网段里面,可以发布广播包。这样发布者只需要发布一次,
消息就可以被同一网段上的所有订阅者收到。这样大大的降低了网络带宽。这个方式的最大缺点是
无法直接跨越网段,如果要跨越网段,就需要建立一个Gateway. Gateway 就是一个程序,连接两个网段。
它接受第一个网段的广播消息,然后再广播到第二个网段。
2.Hub/Spoke 消息
由于消息广播在多网段之间传输有很多问题。这种方式把几个节点连接到
一个Hub(集线器)上。然后通过这个Hub 连接到WIB 上。这样不同的节点就可以
互相通信了。由于这种方式消息要在网络上传输很多次,因此效率比较低。
为了提高传输效率,就需要加一个spoke.spoke 通知Hub,他订阅了什么消息。
3.点对点消息
这种方式是通过IP,一个节点给另外一个节点传输消息。当然了,如果一个节点收到另外一个节点的
消息后,如果不是自己订阅的,它就会忽略这条消息。
为了建立一个WIB 发布或者订阅节点,只需要添加一个TkbmMWxxxyyyMessagingTransport。
这里的xxx 代表 transport的类型(UDP/TCPIP), yyy 表示是否是client 或者是server transport.
为什么要区别client和server transport呢,主要有两个原因:
1.首先KbmMW 在发布/订阅模式下,不但支持异步的消息传输,而且还支持传统的请求/应答的同步方式,
这样就必须区别服务端和客户端。
2.另外一个原因就是Hub/Spoke 方式中,Hub 总是server transport方式, spoke总是 client transport方式.
要实现传统的请求/应答的同步方式,只需要加一个KbmMWserver, 就可以了,当然了,如果
你不要传统方式的访问,除了Hub,你所有的节点都可以选用client transport.
使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点的更多相关文章
- 使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器
随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提 ...
- 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务(讲述了RTC的特点,其底层通讯协议是自己封装SOCK 库,与kbmmw 的适合场合不完全一样)
RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高, ...
- Java开发笔记(二十四)方法的组成形式
经过前面的学习,我们发现演示的Java代码越来越复杂,而且每个例子的代码都堆在入口方法main内部,这会导致如下问题:1.一个方法内部堆砌了太多的代码行,看着费神,维护起来也吃力:2.部分代码描述的是 ...
- UWP开发入门(二十四)—— Win10风格的打印对话框
虽然经常看到阿迪王发“看那个开发UWP的又上吊了”的图……还是忍不住重启一下这个系列.最近有用到UWP的print API,特地来写一篇给某软的这个伟大构想续一秒. 之前的打印对话框差不多长成这样: ...
- 安卓开发笔记(二十四):手把手教你一步步集成腾讯X5内核(Tencent TBS X5)
1.为什么要集成腾讯X5内核? X5内核相对于系统webview,具有下述明显优势: 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使流量节省20 ...
- Android开发系列(二十四):Notification的功能与使用方法
关于消息的提示有两种:一种是Toast,一种就是Notification.前者维持的时间比較短暂.后者维持的时间比較长. 并且我们寻常手机的应用比方网易.贴吧等等都有非常多的推送消息,就是用Notif ...
- Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
AlertDialog能够生成各种内容的对话框.可是每种对话框都会有这样的的结构: 类似下边这样的的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTA ...
- Android开发系列(二十八):使用SubMenu创建选项菜单
大部分手机上边都会有一个"MENU"键,在一个应用安装到手机上之后,能够通过"MENU"显示该应用关联的菜单. 可是,从Android 3.0開始,Androi ...
- 使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持 ...
随机推荐
- jap 事务
事物传播行为介绍: @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下) @Transact ...
- localhost 127.0.0.1
No1: localhost也叫local ,正确的解释是:本地服务器 127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器) 他们的解析通过本机的host文件,windows自 ...
- 1.urlencoder和urldecoder的使用
今天传url的时候乱码了.先说情形,url中有searchText=中文的情形,后台new String(searchText.getBytes(ISO-8859-1),"gbk" ...
- Spring boot&Mybatis 启动报错 Failed to auto-configure a DataSource
*************************** APPLICATION FAILED TO START *************************** Description: Fai ...
- WDA-参考路径
1. SAP Netweave安装 https://wenku.baidu.com/view/b3ac371a227916888486d77c.html?sxts=1545717961793 2. ...
- uiview animation 卡一下
原因:有个下载图片的地方在主线程执行,导致动画卡一下.
- Python 3 学习笔记(2)
输入输出 str() 函数人类可读,repr() 解释器可读 rjust() 靠右,ljust() 靠左,center() 居中.zfill() 填0. 名字空间 名字到对象的映射关系被称为名字空间. ...
- VB.net 与 C# 的对应逻辑运算符
And:对两个Boolean表达式执行逻辑和.AndAlso:与AndAlso类似,关键差异是AndAlso显示短路行为,如果AndAlso中的第一个表达式为False,则不计算第二个表达式.Or:对 ...
- linux一些基本常识(三)
acl:对本身权限的扩展 打包:zip 111.zip a.txt b.txt..... zip -r /etc/sysconfig/* (样才能第归所有内容0) 解宝:uzip 1 ...
- 使用jQuery可能出现的错误