使用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.

 

时间: 2024-09-21 03:15:20

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

使用delphi 开发多层应用(十四)使用Basic4android 显示kbmMW server数据

    前面说了basic4android 直接访问kbmMW server 的方法,由于javaclient 不直接支持服务器端数据库的操作, 要显示数据的内容就需要通过JSON 方式来转换.今天就大概介绍一下转换的办法. 首先要在服务器端把数据库转换为JSON ,为了方便,我修改了一下前面的转换过程. function Txalionsrv.datatojson(intablename: string): string; var alljson: ISuperObject; datajson

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

      随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提供了C 的客户端,可以使用xcode连接 kbmmw的C 客户端来访问kbmmw 服务器,但是功能有限,而且要熟悉xcode),对于急着想在ios 使用kbmmw 服务的同学,可以先使用kbmmw 的webservice 方式访问kbmmw 服务器.   下面我就介绍以下如何在ios 访

使用delphi 开发多层应用(十二)使用kbmMW webserver 返回JSON

     由于kbmMW 服务器与客户端交互是使用它的专用数据格式,因此与其它语言及平台相互访问的话就会有兼容问题, 为了最大化的利用kbmMW 服务器,从kbmMW 4.0 以后,其开始支持JSON 格式传递数据,其实就是可以通过 Webserver根据客户端的request 来返回对应的JSON串.     继续利用上次的webserver 的例子,在webservice 里面加一个TkbmMWIBDACQuery和TkbmMWJSONStreamFormat, 如图: 同时在代码里面添加以

使用delphi 开发多层应用(十)安全访问服务器

      前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制,这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问 服务器.第二是数据在网络传输过程中都是明码的,没有加密,使用网络侦听器就可以检测到传输的内容.这是一个标准的系统不允许的,今天就 讲一下如何安全的访问服务器.      首先我们需要使用加密来保证数据在网络上传输的安全,首先在服务器端我们加一个TkbmMWDCP2Crypt.这个是kbmMW 对DCP2Crypt的封装, DCP2Crypt 是一个用pasc

使用delphi 开发多层应用(十八)使用Basic4android 访问RTC 服务的二进制流(照片)

    上次写了b4a 通过xmlrpc 访问rtc 的远程服务,有网友询问如何通过b4a 访问RTC web 的二进制流,例如如何下载 服务器上的照片,其实访问二进制流和访问字符串类似,不同的地方是,由于是通过http 协议,对于二进制流,需要先转换成 base64 编码,到客户端后再再把base64 转换回去成二进制码,就可以了.(注:由于RTC 的bug,需要RTC 6.08 以上的版本)    RTC服务器端的代码如下: procedure TForm1.RtcFunction3Exec

使用delphi 开发多层应用(六)kbmMW返回流到客户端

   在第一个简单的例子,服务器返回给客户端的是一个简单的变量,但是在日常的应用中,往往需要给客户端传输大量的数据,例如要 返回流,在kbmMW 里面返回流也是比较方便的,下面我们就以给客户端返回一个照片为例,说明一下.   还是在上次的例子服务里面,我们添加一下这个功能,首先要定义服务函数处理:   function Performgetimg(ClientIdent:TkbmMWClientIdentity; const Args:array of Variant):Variant; vir

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

     delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持访问kbmmw 的web 服务器, 并完美的通过JSON支持使用kbmmw 的JSON 数据格式.使我们非常方便的在win32,win64,mac os,ios 和android 上访问kbmmw 的数据库.     首先我们建立一个可以返回JSON 的kbmmw web 服务器.这个可以

Windows 8风格应用开发入门 二十四 App Bar构建

构建应用栏的目的的显示导航.命令和始终隐藏不需要的使用的工具.我们可以把应用栏放在页面 顶部或底部或同时存在顶部和底部. 默认情况在AppBar是隐藏的,当用户单击右键.按下Win+Z .或从屏幕的顶部或底部边缘轻松时可显示或关闭AppBar.当然我们也可以通过编程的方式将AppBar设 置为当用户做选择或与应用交互时显示. 构建AppBar基本步骤 通常我们构建一个应用的 AppBar,只需要三步就可以完成: 开发入门 二十四 App Bar构建-jenkins构建自由风格"> 如何构建

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十四)

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十四) Be careful!前方怪物出没 游戏的精灵框架到此为止算告一段落,让我们一同来体验它带来的神奇效应. 一个安静的黄昏,主角悠闲的甩着它帅气的毛发独跑于林阴大道.怎知天色已晚即将进入月亮的领地,嘿嘿,我们的故事就从这里开始:Be careful,前方怪物出没! 实在不忍心让主角空有一身武艺而无处施展,本节为了不再让它孤单,我将向游戏中加入可爱的妖精妹妹与之为伴: 好象在哪见过呢?对,就是她了,可爱吧