APP下载

移动自助服务系统通信功能的设计与实现*

2010-11-04赵碧海

长沙大学学报 2010年2期
关键词:包体中间件缓冲区

赵碧海,胡 赛

(1.长沙大学信息与计算科学系,湖南长沙 410003;2.中南大学信息科学与工程学院,湖南长沙 410083)

移动自助服务系统通信功能的设计与实现*

赵碧海1,2,胡 赛1

(1.长沙大学信息与计算科学系,湖南长沙 410003;2.中南大学信息科学与工程学院,湖南长沙 410083)

基于 TUXEDO的移动自助服务平台由表示层、业务逻辑层、数据层组成,其中业务逻辑层是系统的核心,主要由网络通信、协议转换、数据接口、服务调度程序、TUXEDO服务等模块组成,是系统数据通讯的中枢,因此,对如何借助 TUXEDO中间件实现系统的通信功能这一问题进行探讨具有一定的现实意义.

协议;数据包;通信;缓冲区

中国电信业作为国家的支柱产业,在近儿年得到了迅猛的发展,用户数量尤其是移动用户迅速增长.据统计,2000年至 2002年,我国移动电话用户分别新增 4197万户、5955万户和 6139万户.去年,我国新增移动电话用户数达到 6270万,是近年来新增用户最多的一年.数量巨人的用户群带来诸多的管理与服务压力的问题,自助式服务的出现有效地缓解了服务压力.目前,自助服务系统止处于起步阶段,系统规模小,一般采用基于 TCP/IP的 Socket通信方式.客户端和服务器端都必须处理网络连接/监听、网络传输、错误处理、通信安全等低层次的问题,稳定性不高,而且会降低系统的通用性、可移植性和可伸缩性;当交易繁忙时位于移动业务系统前置机与自助终端的自助服务系统前置机就成为整个系统的瓶颈.

TUXEDO是Bea公司的一种用于分布式事务处理利消息传递的中间件产品.它屏蔽了网络通讯细节,提供简单的高层 APl函数,支持各种操作系统平台和数据库管理系统.

基于 TUXEDO的移动自助服务系统是对原有的自助服务系统的改进,通过引入 TUXEDO中间件来解决原有系统的存在的一些弊端.系统由三层组成,依次为表示层、业务逻辑层、数据层.表示层提供用户的交互界面,接收用户的输入,显示处理结果;数据层是整个系统的数据中心,它负责管理系统的数据资源,完成数据操作.业务逻辑层是应用系统业务的处理核心,包括网络通信、协议转换、数据接口、服务调度程序、TUXEDO服务等模块组成[1].业务逻辑层是自助服务系统数据通讯的中枢,它通过网络将表示层的自助服务终端和管理终端及 BOSS系统前置机、银行结算中心连接起来.系统的通信分为三部分:业务逻辑层的通信子系统(简称为通信子系统)与自助服务终端子系统、通信子系统与管理终端子、通信子系统与外部接口.由于通信子系统与外部接口的通信与移动运营商提供的接口协议有关,因此本文只介绍前两种通信方式.

1 通信协议

由于在移动自助服务系统传输的数据中包含了用户的资料信息 (如姓名、身份证号码、服务密码等)和关系到系统稳定运行的参数数据等,为了防止数据包在传输过程中被泄漏或者恶意篡改,需要专门制定在系统中进行传输的数据包格式.通信子系统与自助服务终端子系统、通信子系统与管理终端、通信子系统与外部接口通信的的数据包格式不尽相同,以下将介绍前两种通信方式中数据包格式的设计.

1.1 通信子系统与自助服务终端通信的数据包格式

为了便于处理,通信子系统与自助服务终端之间的请求包和应答包均采用相同的数据包格式,数据包的具体格式定义[2](如表 1所示).

表1 通信子系统与自助服务终端间的数据包格式

数据包由包头和包体两部分组成,包头包括数据包版本号、数据包大小、交易流水号、服务编码、业务号码、错误编码等信息,包头信息实际上代表通讯双方的通讯协议,包头信息的内容将直接影响到接收方对于数据包的处理;包体存储实际需要的业务数据,它是办理业务所需的输入参数.包头长度固定,而包体长度根据业务类型不同长度也相应地发生变化,在数据包处理时包体的长度可以通过包头中的数据包长度获取.

数据包的封装过程:自助服务终端接收到用户的业务请求时根据用户的输入内容和所办理的业务类型形成数据包体,然后由系统自动生成交易流水号、服务编码等信息并形成数据包头,系统根据包体内容和包头里指定的部分内容采用MD5算法生成MD5消息串并装入包头部分的 A3域,再将数据包头和数据包体封装成 (marshal)数据包,最后再采用指定的加密算法对整个数据包进行加密,然后借助 TUXEDO提供的函数传递给通信子系统[3].

数据包的解析过程:通信子系统接收到自助服务终端的业务请求数据包后,先用指定的密钥对请求数据包解密,然后根据包体内容和包头里指定的部分内容采用MD5算法生成MD5验证串,并和收到的请求数据包包头中的MD5消息串进行比较,如果两者不相同则说明数据包在传输过程中已经遭到纂改,则直接抛弃不做任何处理;如果两者相同说明数据包正确.对于正确的请求数据包,通信子系统对数据包的各项内容逐个解析 (unmarshal),并交给相应的业务处理逻辑模块进行处理.

数据包从封装、传输到解析的过程如图 1所示:

图1 数据包封装、传输、解析过程示意图

通信子系统处理完后向自助服务终端发送应答包的过程与上述过程相同.

1.2 通信子系统与管理终端之间的数据通讯格式

通信子系统与管理终端之间的数据包格式 (如表 2所示).数据包同样由包头和包体两部分组成,包头包括包头标识、数据包长度、包长度校验、命令字、工单号、包序号等信息.包体则存储实际传输的内容.

2 通信方式

TUXEDO系统提供了丰富的通信方式,包括最常用的请求和应答式通信,保持会话状态的会话通信,主动发送消息的通知方式,基于事件发布和订阅的代理方式,基于可靠消息传输的存储转发方式,基于事务的远程过程调用方式[4].

在移动自助服务系统中,存在三种形式的通信:自助服务终端为办理业务而与通信子系统之间的请求/应答通信;管理终端为获取交易数据而与通信子系统之间的通信;通信子系统为获取自助服务终端的状态信息而主动发起的通信.

自助服务终端与通信子系统之间的通信对实时性要求比较高,这种方式采用同步的请求和应答式方式,具体实现过程如图 2所示.

表2 自助服务终端与管理系统之间的数据通讯格式

图2 同步调用过程

自助服务终端使用 AT M I函数 tpcal1()把一个请求送到通信子系统服务程序.等到服务程序作出响应后才处理后面的工作,也就是说,它在收到服务程序的响应之前一直处于阻塞状态.

管理终端与通信子系统之间的通信,由于发送或者接收数据的次数较多,而且有时候需要进行大量数据的传输,因此这种方式适合采用会话通信方式.会话方式具体实现过程如图 3所示.

图3 会话方式过程

(1)管理终端使用 tpconnect()启动会话.

(2)管理终端和通信子系统服务程序使用tpsend()和 tprecv()函数进行数据交换,一个特殊标记指示着当前由哪一方来控制着会话,在这期间会话一直保持.

(3)当通信子系统服务程序调用 tpreturn()或tpdiscon()函数时,会话终止.

图4 主动发送消息的通知方式

第三种通信方式中,通信子系统为获取自助服务终端的状态,必须主动向自助服务终端发起询问,因此这种方式宜采用主动发送消息的通知方式.通知方式的具体实现过程如图 4所示.自助服务终端首先必须使用 tpsetunsol()函数来创建一个消息处理器;当需要获取自助服务终端状态时,通信子系统服务程序调用 tpnotify()来把消息传递给单个自助服务终端,或者通过 tpbroadcast()函数来把消息同时广播给多个自助服务终端.当自助服务终端收到主动消息后,TUXEDO系统调用自助服务终端的主动消息处理器来处理.

3 通信缓冲区

借助 TUXEDO的通信缓冲区,解决了原有的Socket通信方式中存在的缓冲区大小无法确定;在异构系统环境中字节序混乱;字符集和编码不统一;数据压缩、加密 /解密问题等一系列问题,使得程序员从底层的通信细节中解放出来[5].

TUXEDO支持的缓冲区主要包括 STR I NG、CARRAY、V IEW/V IEW32、FML/FML32、XML、MBSTR I NG几种类型.STR I NG用于存储字符串,V IEW/V IEW32用于存储 C结构,FML/FML32是一种自带类型的多类型混合缓冲,用于不同数据类型的变量打包传输,CARRAY用于存储字符数组.本系统采用 F ML32的缓冲区类型.

对 FML缓冲区的操作有增加、删除、修改、查找等.客户端调用某项服务之前,如需要使用 FML缓冲区,则要事先对以 FML为结构的实例进行内存分配或和实例初始化工作 (如使用 tpalloc()进行分配),再向此缓冲区中写入需要传递的数据 (如使用Fchg()或者 Fadd()函数);同样 SERVER端首先要取得传入的参数 (如使用 Fchg()函数),并检查参数的有效性,再从 F ML缓冲区中取出相关数据以进行下一步操作.在返回数据时,同样要对 FML缓冲进行一些写入操作.

TUXEDO中间件借助 F ML缓冲区类型来通讯时,服务端需要定义 FML的描述文件,以此来约定客户端与服务端通讯的规则.FML文件由 type:字段类型、name:字段名称、number:字段 I D(在一个 FML文件中要唯一)、flags:字段标志、comments:字段注释、*base:字段 I D号的起始值,真正的值是*base加上 number的值.

以下是移动自助服务系统中 FML文件的部分内容:

借助 TUXEDO提供的图形用户界面或者命令可以将 FML文件编译生成对应的*.h文件.

TUXEDO提供了许多常用函数来对 FML缓冲区进行操作,处理起来方便、简单,FML缓冲区特别适合对数据库进行操作.

4 总结

本文主要介绍了基于 TUXEDO中间件的移动自助服务系统通信功能的设计与实现.通过在自助服务系统中引入中间件技术来处理系统的网络通信功能,能有效地提高系统的安全性、扩展性,解决原有系统的存在的一些弊端.

[1]张海林,等.Multimedia Conferencing System and Multicasting[J].清华大学学报,1999,4(2):41-44.

[2]梁华,等.基于 SOA的金融自助服务系统的设计[J].技术,2006,(9):49-52.

[3]薛健辉.基于 TUXEDO中间件的医疗保险交易系统的设计[J].电脑知识与技术,2006,(3):13-14.

[4]林祝春.TUXEDO中间件中 FML32缓冲区的应用研究[J].南通职业大学学报,2008,3(22):81-83.

[5]蒋伟,等.Tuxedo中间件在电信业务系统中的应用与实现[J].2008,5(27):77-82.

TP311

A

1008-4681(2010)02-0056-04

2009-11-12;

2010-03-02

赵碧海 (1980-),男,湖南湘潭人,长沙大学信息与计算科学系讲师,中南大学信息科学与工程学院博士生.研究方向:多媒体、数据挖掘.

(作者本人校对)

猜你喜欢

包体中间件缓冲区
一种新型多功能电弧炉浇铸装置
常见的难熔包体矿物学特征分析
RFID中间件技术及其应用研究
基于网络聚类与自适应概率的数据库缓冲区替换*
基于Android 平台的OSGi 架构中间件的研究与应用
浅谈玛瑙中常见包体的特征及成因
关键链技术缓冲区的确定方法研究
初涉缓冲区
中间件在高速公路领域的应用
一种支持智能环境构建的中间件