用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(上)
作者:火鸟 redbirdli@hotmail.com
引言
在国内常见的信息化开发及实施项目中,大多数开发的工作量都集中于为适应不同客户的需求差异,对特定模块进行修改,最终达到客户期望的软件功能特性。但是对于开发厂商来说,面对不同的客户开发不同的软件版本,将导致重复劳动、成本上升、维护量加大、兼容和稳定性下降等一系列问题。所以,开发者认识到实现软件的产品化,才能具备较短的项目周期与较强的市场竞争力,尽可能地适应不同客户的需求,而不会因此而泥足深陷,是客户满意度与商业利益的一个平衡点。
Transceiver 概念
Transceiver 就是为满足不同应用程序和业务项目具有差异性的通讯需求而设计开发的通用通讯产品化软件。可用于在多个应用系统间进行平台中立应用中立的统一管控的通讯和数据交换,设计初衷就是为了减少通讯模块的重复开发与增强通讯软件的集中管理。通过将发送(Send)与接收(Receive)抽象为等同的一个从信源(Source)到信宿(Target)的数据流过程,集成现有常用通讯方式的收发处理,及对通讯异常的容错缓冲处理(Queue),构成了Transceiver 足以满足企业级通讯需求的强大功能。
以下为Transceiver 应用举例
通讯方向
信源(Source)
缓冲(Queue)
信宿(Target)
实现功能
C1.发送数据
S1.从本地FILE获得
如信宿出现异常,数据可在Transceiver中缓冲,并由Transceiver负责重发
T1.提交到远端TCP端口
向远端传输文件
C2.接收数据
S2.从远端POP3获得
T2.提交到另一SMTP账号
邮件转发
C3.发送数据
S3.从本地DB获得
T3.提交到远端HTTP页面
从数据库读取并提交到网页
C4.接收数据
S4.从远端FTP获得
T4.提交到本地COM进行处理
从远端获取并交由COM处理
C5.接收数据
S5.从远程DCOM获得
T5.提交到本地MSMQ队列
从远程组件获取存入消息队列等待处理
在Transceiver 中信源(Source)和信宿(Target)都被统一视为端口(Port),如S1~S5、T1~T5,它们都是由Transceiver在运行时创建和管控的通讯组件;而类似C1~C5的几个通讯过程定义被视为信道(Channel),一个可以完成基本通讯功能的Channel由两个Port构成(一个为Source,一个为Target) ,Queue为通讯异常时的容错处理层。
如表所示,Transceiver 可以为发送/接收两类通讯过程提供全程支持。并且对信源和信宿的类型、数量和对应关系不做任何限定,可以自由设置Source与Target的匹配关系。以上表格只是列举了Transceiver通讯功能的几个用例,Transceiver抽象整合了application、Data和PRotocol三个层面的数据通讯元素,可以适应复杂多变的通讯需求,为应用程序的通讯需求提供最大化的灵活性和重用性。
附图1: Transceiver 通讯端口(Port)的交互能力
Transceiver功能
1. LAN/WAN、不同操作系统/应用系统间的数据发送(Send)/接收(Receive)服务
Transceiver目前可支持的通讯端口(Port)有:
通讯方式
交互层
发送端
接收端
推荐环境
TCP
协议
√
√
企业快速以太网/没有防火墙的网络
FTP
协议
√
√
网络间的文件传输/具有文件服务器的环境
SMTP
协议
√
B2C情况/具有邮件发送服务器
POP3
协议
√
B2C情况/具有邮件接收服务器
HTTP
协议
√
√
跨越防火墙的网络/Internet环境
FILE
数据
√
√
从本地文件读取/写入到本地文件
MSMQ
数据
√
√
与大型主机等其它系统/不同应用间
DB
数据
√
√
定制的数据库结构下/不同应用间
COM/DCOM
应用
√
√
业务逻辑映射到专用模块接口/有特定数据处理需求的环境
正如Transceiver 应用举例所示,按Transceiver对Port和Channel的定义,以上Send/Receive两端各八种Port自由组合,即可实现8x8共64种灵活的通讯方式,足以满足复杂多变的企业应用通讯环境。
注:由于UDP协议的需求环境与TCP类似而缺乏连接安全性,所以作者没有专门实现,如有需要可以灵活增加;而在应用层面,用Delphi也很容易实现CORBA和EJB的组件接口(Port),成为Transceiver Shell的有机组成部分。
2. 用于缓冲处理的Queue机制,可对通讯异常情况进行数据缓冲队列跟踪与数据重发。
3. 数据日志记录,可对数据的时间、内容、来源、去向、缓冲次数、当前状态 进行全程记录。
4. 多语言支持,提供数据转换与用户界面的多语言支持接口,用户可根据语言需求自由添加界面语言类型和数据转码组件。
Transceiver 实现
Transceiver由Transceiver Service和Transceiver Console两部分组成, Transceiver Service又可划分为Transceiver Kernel和Transceiver Shell两个逻辑层。
附图2: Transceiver 设计架构
一、 Transceiver Console简介
Console的功能是以控制面板应用程序形式为Transceiver Service提供有效的Port、Channel定义与规则以及对传输日志、数据队列、环境参数等进行设置,不通过Console,用户也可以通过直接修改Transceiver的系统配置库和注册表对上述内容进行手工设置,限于篇幅,只向大家提供三幅截图,说明界面多语言动态支持、Transceiver Shell Port定义、Transceiver Channel定义三个方面的运行效果,实现细节不做赘述。
附图3: Transceiver Console的多语言动态支持(附图4、5界面语言均不同)
附图4: 通过Transceiver Console为Transceiver Server定义通讯Port
附图5: 组合SourcePort和TargetPort为Transceiver Server定义通讯Channel
作者:火鸟 redbirdli@hotmail.com
通过C#实现集合类纵览.NET Collections及相关技术
用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(上)
用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)
老东西:程序快捷方式/程序删除项/EXE自删除DIY
老东西:儿时的编程算法心得笔记