趙碧海,胡 賽
(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系統前置機、銀行結算中心連接起來.系統的通信分為三部分:業務邏輯層的通信子系統(簡稱為通信子系統)與自助服務終端子系統、通信子系統與管理終端子、通信子系統與外部接口.由于通信子系統與外部接口的通信與移動運營商提供的接口協議有關,因此本文只介紹前兩種通信方式.
由于在移動自助服務系統傳輸的數據中包含了用戶的資料信息 (如姓名、身份證號碼、服務密碼等)和關系到系統穩定運行的參數數據等,為了防止數據包在傳輸過程中被泄漏或者惡意篡改,需要專門制定在系統中進行傳輸的數據包格式.通信子系統與自助服務終端子系統、通信子系統與管理終端、通信子系統與外部接口通信的的數據包格式不盡相同,以下將介紹前兩種通信方式中數據包格式的設計.
為了便于處理,通信子系統與自助服務終端之間的請求包和應答包均采用相同的數據包格式,數據包的具體格式定義[2](如表 1所示).

表1 通信子系統與自助服務終端間的數據包格式
數據包由包頭和包體兩部分組成,包頭包括數據包版本號、數據包大小、交易流水號、服務編碼、業務號碼、錯誤編碼等信息,包頭信息實際上代表通訊雙方的通訊協議,包頭信息的內容將直接影響到接收方對于數據包的處理;包體存儲實際需要的業務數據,它是辦理業務所需的輸入參數.包頭長度固定,而包體長度根據業務類型不同長度也相應地發生變化,在數據包處理時包體的長度可以通過包頭中的數據包長度獲取.
數據包的封裝過程:自助服務終端接收到用戶的業務請求時根據用戶的輸入內容和所辦理的業務類型形成數據包體,然后由系統自動生成交易流水號、服務編碼等信息并形成數據包頭,系統根據包體內容和包頭里指定的部分內容采用MD5算法生成MD5消息串并裝入包頭部分的 A3域,再將數據包頭和數據包體封裝成 (marshal)數據包,最后再采用指定的加密算法對整個數據包進行加密,然后借助 TUXEDO提供的函數傳遞給通信子系統[3].
數據包的解析過程:通信子系統接收到自助服務終端的業務請求數據包后,先用指定的密鑰對請求數據包解密,然后根據包體內容和包頭里指定的部分內容采用MD5算法生成MD5驗證串,并和收到的請求數據包包頭中的MD5消息串進行比較,如果兩者不相同則說明數據包在傳輸過程中已經遭到纂改,則直接拋棄不做任何處理;如果兩者相同說明數據包正確.對于正確的請求數據包,通信子系統對數據包的各項內容逐個解析 (unmarshal),并交給相應的業務處理邏輯模塊進行處理.
數據包從封裝、傳輸到解析的過程如圖 1所示:

圖1 數據包封裝、傳輸、解析過程示意圖
通信子系統處理完后向自助服務終端發送應答包的過程與上述過程相同.
通信子系統與管理終端之間的數據包格式 (如表 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系統調用自助服務終端的主動消息處理器來處理.
借助 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緩沖區特別適合對數據庫進行操作.
本文主要介紹了基于 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-),男,湖南湘潭人,長沙大學信息與計算科學系講師,中南大學信息科學與工程學院博士生.研究方向:多媒體、數據挖掘.
(作者本人校對)