首页 > 代码库 > 使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
使用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.