趙碧海,胡 賽
(1.長沙大學(xué)信息與計(jì)算科學(xué)系,湖南長沙 410003;2.中南大學(xué)信息科學(xué)與工程學(xué)院,湖南長沙 410083)
移動(dòng)自助服務(wù)系統(tǒng)通信功能的設(shè)計(jì)與實(shí)現(xiàn)*
趙碧海1,2,胡 賽1
(1.長沙大學(xué)信息與計(jì)算科學(xué)系,湖南長沙 410003;2.中南大學(xué)信息科學(xué)與工程學(xué)院,湖南長沙 410083)
基于 TUXEDO的移動(dòng)自助服務(wù)平臺由表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層組成,其中業(yè)務(wù)邏輯層是系統(tǒng)的核心,主要由網(wǎng)絡(luò)通信、協(xié)議轉(zhuǎn)換、數(shù)據(jù)接口、服務(wù)調(diào)度程序、TUXEDO服務(wù)等模塊組成,是系統(tǒng)數(shù)據(jù)通訊的中樞,因此,對如何借助 TUXEDO中間件實(shí)現(xiàn)系統(tǒng)的通信功能這一問題進(jìn)行探討具有一定的現(xiàn)實(shí)意義.
協(xié)議;數(shù)據(jù)包;通信;緩沖區(qū)
中國電信業(yè)作為國家的支柱產(chǎn)業(yè),在近兒年得到了迅猛的發(fā)展,用戶數(shù)量尤其是移動(dòng)用戶迅速增長.據(jù)統(tǒng)計(jì),2000年至 2002年,我國移動(dòng)電話用戶分別新增 4197萬戶、5955萬戶和 6139萬戶.去年,我國新增移動(dòng)電話用戶數(shù)達(dá)到 6270萬,是近年來新增用戶最多的一年.數(shù)量巨人的用戶群帶來諸多的管理與服務(wù)壓力的問題,自助式服務(wù)的出現(xiàn)有效地緩解了服務(wù)壓力.目前,自助服務(wù)系統(tǒng)止處于起步階段,系統(tǒng)規(guī)模小,一般采用基于 TCP/IP的 Socket通信方式.客戶端和服務(wù)器端都必須處理網(wǎng)絡(luò)連接/監(jiān)聽、網(wǎng)絡(luò)傳輸、錯(cuò)誤處理、通信安全等低層次的問題,穩(wěn)定性不高,而且會(huì)降低系統(tǒng)的通用性、可移植性和可伸縮性;當(dāng)交易繁忙時(shí)位于移動(dòng)業(yè)務(wù)系統(tǒng)前置機(jī)與自助終端的自助服務(wù)系統(tǒng)前置機(jī)就成為整個(gè)系統(tǒng)的瓶頸.
TUXEDO是Bea公司的一種用于分布式事務(wù)處理利消息傳遞的中間件產(chǎn)品.它屏蔽了網(wǎng)絡(luò)通訊細(xì)節(jié),提供簡單的高層 APl函數(shù),支持各種操作系統(tǒng)平臺和數(shù)據(jù)庫管理系統(tǒng).
基于 TUXEDO的移動(dòng)自助服務(wù)系統(tǒng)是對原有的自助服務(wù)系統(tǒng)的改進(jìn),通過引入 TUXEDO中間件來解決原有系統(tǒng)的存在的一些弊端.系統(tǒng)由三層組成,依次為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層.表示層提供用戶的交互界面,接收用戶的輸入,顯示處理結(jié)果;數(shù)據(jù)層是整個(gè)系統(tǒng)的數(shù)據(jù)中心,它負(fù)責(zé)管理系統(tǒng)的數(shù)據(jù)資源,完成數(shù)據(jù)操作.業(yè)務(wù)邏輯層是應(yīng)用系統(tǒng)業(yè)務(wù)的處理核心,包括網(wǎng)絡(luò)通信、協(xié)議轉(zhuǎn)換、數(shù)據(jù)接口、服務(wù)調(diào)度程序、TUXEDO服務(wù)等模塊組成[1].業(yè)務(wù)邏輯層是自助服務(wù)系統(tǒng)數(shù)據(jù)通訊的中樞,它通過網(wǎng)絡(luò)將表示層的自助服務(wù)終端和管理終端及 BOSS系統(tǒng)前置機(jī)、銀行結(jié)算中心連接起來.系統(tǒng)的通信分為三部分:業(yè)務(wù)邏輯層的通信子系統(tǒng)(簡稱為通信子系統(tǒng))與自助服務(wù)終端子系統(tǒng)、通信子系統(tǒng)與管理終端子、通信子系統(tǒng)與外部接口.由于通信子系統(tǒng)與外部接口的通信與移動(dòng)運(yùn)營商提供的接口協(xié)議有關(guān),因此本文只介紹前兩種通信方式.
由于在移動(dòng)自助服務(wù)系統(tǒng)傳輸?shù)臄?shù)據(jù)中包含了用戶的資料信息 (如姓名、身份證號碼、服務(wù)密碼等)和關(guān)系到系統(tǒng)穩(wěn)定運(yùn)行的參數(shù)數(shù)據(jù)等,為了防止數(shù)據(jù)包在傳輸過程中被泄漏或者惡意篡改,需要專門制定在系統(tǒng)中進(jìn)行傳輸?shù)臄?shù)據(jù)包格式.通信子系統(tǒng)與自助服務(wù)終端子系統(tǒng)、通信子系統(tǒng)與管理終端、通信子系統(tǒng)與外部接口通信的的數(shù)據(jù)包格式不盡相同,以下將介紹前兩種通信方式中數(shù)據(jù)包格式的設(shè)計(jì).
為了便于處理,通信子系統(tǒng)與自助服務(wù)終端之間的請求包和應(yīng)答包均采用相同的數(shù)據(jù)包格式,數(shù)據(jù)包的具體格式定義[2](如表 1所示).
表1 通信子系統(tǒng)與自助服務(wù)終端間的數(shù)據(jù)包格式
數(shù)據(jù)包由包頭和包體兩部分組成,包頭包括數(shù)據(jù)包版本號、數(shù)據(jù)包大小、交易流水號、服務(wù)編碼、業(yè)務(wù)號碼、錯(cuò)誤編碼等信息,包頭信息實(shí)際上代表通訊雙方的通訊協(xié)議,包頭信息的內(nèi)容將直接影響到接收方對于數(shù)據(jù)包的處理;包體存儲實(shí)際需要的業(yè)務(wù)數(shù)據(jù),它是辦理業(yè)務(wù)所需的輸入?yún)?shù).包頭長度固定,而包體長度根據(jù)業(yè)務(wù)類型不同長度也相應(yīng)地發(fā)生變化,在數(shù)據(jù)包處理時(shí)包體的長度可以通過包頭中的數(shù)據(jù)包長度獲取.
數(shù)據(jù)包的封裝過程:自助服務(wù)終端接收到用戶的業(yè)務(wù)請求時(shí)根據(jù)用戶的輸入內(nèi)容和所辦理的業(yè)務(wù)類型形成數(shù)據(jù)包體,然后由系統(tǒng)自動(dòng)生成交易流水號、服務(wù)編碼等信息并形成數(shù)據(jù)包頭,系統(tǒng)根據(jù)包體內(nèi)容和包頭里指定的部分內(nèi)容采用MD5算法生成MD5消息串并裝入包頭部分的 A3域,再將數(shù)據(jù)包頭和數(shù)據(jù)包體封裝成 (marshal)數(shù)據(jù)包,最后再采用指定的加密算法對整個(gè)數(shù)據(jù)包進(jìn)行加密,然后借助 TUXEDO提供的函數(shù)傳遞給通信子系統(tǒng)[3].
數(shù)據(jù)包的解析過程:通信子系統(tǒng)接收到自助服務(wù)終端的業(yè)務(wù)請求數(shù)據(jù)包后,先用指定的密鑰對請求數(shù)據(jù)包解密,然后根據(jù)包體內(nèi)容和包頭里指定的部分內(nèi)容采用MD5算法生成MD5驗(yàn)證串,并和收到的請求數(shù)據(jù)包包頭中的MD5消息串進(jìn)行比較,如果兩者不相同則說明數(shù)據(jù)包在傳輸過程中已經(jīng)遭到纂改,則直接拋棄不做任何處理;如果兩者相同說明數(shù)據(jù)包正確.對于正確的請求數(shù)據(jù)包,通信子系統(tǒng)對數(shù)據(jù)包的各項(xiàng)內(nèi)容逐個(gè)解析 (unmarshal),并交給相應(yīng)的業(yè)務(wù)處理邏輯模塊進(jìn)行處理.
數(shù)據(jù)包從封裝、傳輸?shù)浇馕龅倪^程如圖 1所示:
圖1 數(shù)據(jù)包封裝、傳輸、解析過程示意圖
通信子系統(tǒng)處理完后向自助服務(wù)終端發(fā)送應(yīng)答包的過程與上述過程相同.
通信子系統(tǒng)與管理終端之間的數(shù)據(jù)包格式 (如表 2所示).數(shù)據(jù)包同樣由包頭和包體兩部分組成,包頭包括包頭標(biāo)識、數(shù)據(jù)包長度、包長度校驗(yàn)、命令字、工單號、包序號等信息.包體則存儲實(shí)際傳輸?shù)膬?nèi)容.
TUXEDO系統(tǒng)提供了豐富的通信方式,包括最常用的請求和應(yīng)答式通信,保持會(huì)話狀態(tài)的會(huì)話通信,主動(dòng)發(fā)送消息的通知方式,基于事件發(fā)布和訂閱的代理方式,基于可靠消息傳輸?shù)拇鎯D(zhuǎn)發(fā)方式,基于事務(wù)的遠(yuǎn)程過程調(diào)用方式[4].
在移動(dòng)自助服務(wù)系統(tǒng)中,存在三種形式的通信:自助服務(wù)終端為辦理業(yè)務(wù)而與通信子系統(tǒng)之間的請求/應(yīng)答通信;管理終端為獲取交易數(shù)據(jù)而與通信子系統(tǒng)之間的通信;通信子系統(tǒng)為獲取自助服務(wù)終端的狀態(tài)信息而主動(dòng)發(fā)起的通信.
自助服務(wù)終端與通信子系統(tǒng)之間的通信對實(shí)時(shí)性要求比較高,這種方式采用同步的請求和應(yīng)答式方式,具體實(shí)現(xiàn)過程如圖 2所示.
表2 自助服務(wù)終端與管理系統(tǒng)之間的數(shù)據(jù)通訊格式
圖2 同步調(diào)用過程
自助服務(wù)終端使用 AT M I函數(shù) tpcal1()把一個(gè)請求送到通信子系統(tǒng)服務(wù)程序.等到服務(wù)程序作出響應(yīng)后才處理后面的工作,也就是說,它在收到服務(wù)程序的響應(yīng)之前一直處于阻塞狀態(tài).
管理終端與通信子系統(tǒng)之間的通信,由于發(fā)送或者接收數(shù)據(jù)的次數(shù)較多,而且有時(shí)候需要進(jìn)行大量數(shù)據(jù)的傳輸,因此這種方式適合采用會(huì)話通信方式.會(huì)話方式具體實(shí)現(xiàn)過程如圖 3所示.
圖3 會(huì)話方式過程
(1)管理終端使用 tpconnect()啟動(dòng)會(huì)話.
(2)管理終端和通信子系統(tǒng)服務(wù)程序使用tpsend()和 tprecv()函數(shù)進(jìn)行數(shù)據(jù)交換,一個(gè)特殊標(biāo)記指示著當(dāng)前由哪一方來控制著會(huì)話,在這期間會(huì)話一直保持.
(3)當(dāng)通信子系統(tǒng)服務(wù)程序調(diào)用 tpreturn()或tpdiscon()函數(shù)時(shí),會(huì)話終止.
圖4 主動(dòng)發(fā)送消息的通知方式
第三種通信方式中,通信子系統(tǒng)為獲取自助服務(wù)終端的狀態(tài),必須主動(dòng)向自助服務(wù)終端發(fā)起詢問,因此這種方式宜采用主動(dòng)發(fā)送消息的通知方式.通知方式的具體實(shí)現(xiàn)過程如圖 4所示.自助服務(wù)終端首先必須使用 tpsetunsol()函數(shù)來創(chuàng)建一個(gè)消息處理器;當(dāng)需要獲取自助服務(wù)終端狀態(tài)時(shí),通信子系統(tǒng)服務(wù)程序調(diào)用 tpnotify()來把消息傳遞給單個(gè)自助服務(wù)終端,或者通過 tpbroadcast()函數(shù)來把消息同時(shí)廣播給多個(gè)自助服務(wù)終端.當(dāng)自助服務(wù)終端收到主動(dòng)消息后,TUXEDO系統(tǒng)調(diào)用自助服務(wù)終端的主動(dòng)消息處理器來處理.
借助 TUXEDO的通信緩沖區(qū),解決了原有的Socket通信方式中存在的緩沖區(qū)大小無法確定;在異構(gòu)系統(tǒng)環(huán)境中字節(jié)序混亂;字符集和編碼不統(tǒng)一;數(shù)據(jù)壓縮、加密 /解密問題等一系列問題,使得程序員從底層的通信細(xì)節(jié)中解放出來[5].
TUXEDO支持的緩沖區(qū)主要包括 STR I NG、CARRAY、V IEW/V IEW32、FML/FML32、XML、MBSTR I NG幾種類型.STR I NG用于存儲字符串,V IEW/V IEW32用于存儲 C結(jié)構(gòu),FML/FML32是一種自帶類型的多類型混合緩沖,用于不同數(shù)據(jù)類型的變量打包傳輸,CARRAY用于存儲字符數(shù)組.本系統(tǒng)采用 F ML32的緩沖區(qū)類型.
對 FML緩沖區(qū)的操作有增加、刪除、修改、查找等.客戶端調(diào)用某項(xiàng)服務(wù)之前,如需要使用 FML緩沖區(qū),則要事先對以 FML為結(jié)構(gòu)的實(shí)例進(jìn)行內(nèi)存分配或和實(shí)例初始化工作 (如使用 tpalloc()進(jìn)行分配),再向此緩沖區(qū)中寫入需要傳遞的數(shù)據(jù) (如使用Fchg()或者 Fadd()函數(shù));同樣 SERVER端首先要取得傳入的參數(shù) (如使用 Fchg()函數(shù)),并檢查參數(shù)的有效性,再從 F ML緩沖區(qū)中取出相關(guān)數(shù)據(jù)以進(jìn)行下一步操作.在返回?cái)?shù)據(jù)時(shí),同樣要對 FML緩沖進(jìn)行一些寫入操作.
TUXEDO中間件借助 F ML緩沖區(qū)類型來通訊時(shí),服務(wù)端需要定義 FML的描述文件,以此來約定客戶端與服務(wù)端通訊的規(guī)則.FML文件由 type:字段類型、name:字段名稱、number:字段 I D(在一個(gè) FML文件中要唯一)、flags:字段標(biāo)志、comments:字段注釋、*base:字段 I D號的起始值,真正的值是*base加上 number的值.
以下是移動(dòng)自助服務(wù)系統(tǒng)中 FML文件的部分內(nèi)容:
借助 TUXEDO提供的圖形用戶界面或者命令可以將 FML文件編譯生成對應(yīng)的*.h文件.
TUXEDO提供了許多常用函數(shù)來對 FML緩沖區(qū)進(jìn)行操作,處理起來方便、簡單,FML緩沖區(qū)特別適合對數(shù)據(jù)庫進(jìn)行操作.
本文主要介紹了基于 TUXEDO中間件的移動(dòng)自助服務(wù)系統(tǒng)通信功能的設(shè)計(jì)與實(shí)現(xiàn).通過在自助服務(wù)系統(tǒng)中引入中間件技術(shù)來處理系統(tǒng)的網(wǎng)絡(luò)通信功能,能有效地提高系統(tǒng)的安全性、擴(kuò)展性,解決原有系統(tǒng)的存在的一些弊端.
[1]張海林,等.Multimedia Conferencing System and Multicasting[J].清華大學(xué)學(xué)報(bào),1999,4(2):41-44.
[2]梁華,等.基于 SOA的金融自助服務(wù)系統(tǒng)的設(shè)計(jì)[J].技術(shù),2006,(9):49-52.
[3]薛健輝.基于 TUXEDO中間件的醫(yī)療保險(xiǎn)交易系統(tǒng)的設(shè)計(jì)[J].電腦知識與技術(shù),2006,(3):13-14.
[4]林祝春.TUXEDO中間件中 FML32緩沖區(qū)的應(yīng)用研究[J].南通職業(yè)大學(xué)學(xué)報(bào),2008,3(22):81-83.
[5]蔣偉,等.Tuxedo中間件在電信業(yè)務(wù)系統(tǒng)中的應(yīng)用與實(shí)現(xiàn)[J].2008,5(27):77-82.
TP311
A
1008-4681(2010)02-0056-04
2009-11-12;
2010-03-02
趙碧海 (1980-),男,湖南湘潭人,長沙大學(xué)信息與計(jì)算科學(xué)系講師,中南大學(xué)信息科學(xué)與工程學(xué)院博士生.研究方向:多媒體、數(shù)據(jù)挖掘.
(作者本人校對)