朱利妍 牛鵬
摘要:針對金融自助終端軟件報文通信需求復雜多變的情況,在綜合分析業務交易本質的基礎上,提煉關鍵業務要素,抽象為解析器、模板和業務報文3層系統模型,提出了一種靈活可配置的交易報文通信系統設計和實現方法,包括通信鏈路設計、報文協議格式、動態組解包方法、報文數據加工存取及通信完成事件通知等,為終端交易軟件的開發提供技術支持和方案參考。
關鍵詞:交易報文;自助終端軟件;通信鏈路;報文協議
中圖分類號:TP391文獻標志碼:A文章編號:1008-1739(2018)16-66-3
Research on Financial Self-service Terminal Message Communication System
ZHU Liyan1, NIU Peng2
(1. He爺nan Police College, Zhengzhou He爺nan 450046, China; 2. Inspur Financial Information Technology Co., Ltd, Ji爺nan Shandong 250101, China)
0引言
隨著近年來互聯網技術的高速發展,基于金融自助終端交易平臺的業務形態在不斷發生改變,以適應新形勢下技術的不斷進步和變革。2015年以來,隨著國有各大銀行加速推進網點服務轉型升級,對高度集成銀行業務的新型智能設備的需求日益劇增。大量新型智能設備的引入對交易軟件的要求也越來越高,在報文通信層面,要能夠接入更多的后端業務系統,適配不同的通信協議。本文提出一種完全配置化的通信報文設計方案,在實際應用中,通過實現其定義的模塊接口,配置不同的報文模板,即可滿足不同業務場景下的報文通信需求,從而屏蔽底層處理細節,簡化應用開發的復雜度。
1總體設計
未來幾年,金融智能設備市場預計仍將保持10%左右的年均增速[1],大量新業務的遷移和開發,要求軟件的報文通信方案要足夠靈活、可配置、穩定和可靠,這樣才能滿足未來系統的擴容和新業務的無縫融入。
傳統實踐中,終端軟件的通信方案設計往往與特定業務類型緊密耦合,抽象度低、復用性差。當后端的業務接口發生變更時,必須編寫新的通信模塊,修改調用者代碼,或者擴展原有通信模塊的功能,然后再經過編譯、打包及測試等一系列流程進行發布和上線,效率低下、維護不便,不利于業務系統的快速迭代更新。從項目實施的角度看,如何簡化報文通信過程的復雜度、加快開發效率及保證系統健壯與高復用性是一項亟待解決的問題。如圖1和圖2所示,當后端系統接口發生變更時,傳統的通信系統設計并不能快速適應新需求的變化,需要對基礎通信模塊和業務邏輯模塊同時進行升級改造,工作量大、維護不便。
基于上述問題,提出一種靈活可配置、高度參數化和業務無關的通信報文設計方案。內置常用的鏈路通信協議,設計一種通用的報文模板,遵循“高內聚,低耦合”的設計原則[2],真正達到“對擴展開放,對修改關閉”的目標。
基于上述問題,提出一種靈活可配置、高度參數化和業務無關的通信報文設計方案。內置常用的鏈路通信協議,設計一種通用的報文模板,遵循“高內聚、低耦合”的設計原則[2],真正達到“對擴展開放,對修改關閉”的目標。
2詳細設計
系統設計一個開放式的框架,它抽象出協議模塊和鏈路模塊,并定義好各自的接口形式。在功能上劃分為鏈路管理器、報文解析器、自動化模塊、數據字典和事件模塊5個模塊。
①在鏈路定義上,設計支持TCP和HTTP兩種通信方式;②在報文協議上,支持銀聯8583報文格式,XML格式、分隔符以及其他自定義形式的報文;③自動化模塊提供腳本的動態加載和執行功能,增強系統可擴展性,以便定制化開發不同報文的組解包函數;④數據字典提供統一平臺化的數據管理、存儲和訪問能力,提供系統各模塊間的數據交互能力;⑤事件[6]模塊提供對外通知接口,通知在整個發送接收過程中可能產生的各類系統狀態,如圖3所示。
2.1接口設計
基于開放的系統設計,不同模塊之間功能邊界清晰,保持松散的耦合關系。本文提出的設計方案將接口劃分為對外服務接口、鏈路模塊接口和報文協議模塊接口3類,如表1、表2和表3所示。
2.2模板設計
報文模板設計上遵循規則清晰、易于理解和配置方便的原則,涵蓋報文通信中的兩大要素是鏈路屬性和數據應用協議。①在鏈路屬性中,定義鏈路傳輸協議及其相應參數;②在報文協議中,將報文視為一組原子字段的組合,每個字段有其固定的屬性,將不同的字段組合在一起即定義出了一條特定的報文,這二者綁定在一起構成了一個完整的通信方案。
2.3關鍵算法
2.3.1組包算法
若干字段構成一個虛擬的字段組,若干字段和字段組構成一條報文,若干條報文和一些統一的規則構成了一個應用協議的完整定義。
在實現報文數據組包功能時,總體過程是通過字符串連接的方式將每個字段串起來。首先要進行數據準備,解析模板文件,提取每個字段定義的屬性;其次根據規則分別對不同的字段進行處理。若是普通數據字段則直接提取數據,而特殊字段則按字段屬性進行自動賦值或編碼轉換。
在配置報文模板的過程中,字段的數據來源分為3類:①直接指定的字面值常量:在報文配置過程中指定;②由數據字典模塊提供的特定名稱變量:數據內容在運行時確定;③根據字段屬性自動賦值:對于第一種數據,在解析模板文件的過程中直接獲取;對于數據字典變量,根據運行時該變量對應的內存數據來獲取;第3種則根據此字段當前的上下文環境來自動賦值,本系統的組包流程如圖4所示。
2.3.2解包算法設計
數據解包的過程,本質上就是按照模板中定義的返回報文格式,將收到的字節流劃分為一個個獨立有序的字段,并按照報文定義的規則進行下一步處理的過程。而在將一串數據劃分為報文定義的字段時,最關鍵的是確定當前字段的長度,本系統解包流程如圖5所示。
3系統測試
本系統作為一個獨立通用的平臺性模塊,封裝為單獨的動態鏈接庫以供應用程序調用。測試時主要關注2個方面:①應用程序作為客戶端與后臺通信時,處理結果是否正確;②應用程序作為服務端,接收后臺發送的主動報文時,處理結果是否正確。
測試時,應用程序按序調用對外服務接口,加載數據字典模塊和模板解析模塊,并自動生成報文數據,不需要調用程序處理底層的各種技術細節。當接收完返回數據后,自動執行解包過程,全部操作成功后,接口函數返回成功,發出事件通知,應用程序調用者使用數據存取接口獲得需要的數據。
4結束語
互聯網、人工智能等新技術的高速發展,為傳統行業的業務形態帶來了巨大的沖擊,變革迫在眉睫,流程復雜、效率低下的人工柜面業務終將被各類終端應用軟件所取代。本文提出的通信系統設計方案,高度內聚,又具備極強的靈活性,易于擴展,從理論及實踐來看,幾乎可以滿足金融終端軟件的各種通信需求。
本系統高度參數化,所依賴的模板文件為通用的XML格式,在實現上選擇跨平臺語言開發,因此可以滿足不同操作系統上的使用要求。由于系統自身的業務無關性,因此也可以應用在社保、交通等行業軟件中,作為獨立的通信模塊使用。
參考文獻
[1]前瞻產業研究院.2018-2023年中國ATM機行業市場前瞻與投資戰略規劃分析報告[R].北京:前瞻產業研究院,2017.
[2] Gamma E,Helm R,Johnson R,et al.設計模式:可復用面向對象軟件的基礎[M].北京:機械工業出版社,2007.
[3] Blanchette J,Summerfield M.C++GUI Qt 4編程[M].北京:電子工業出版社,2013.
[4] Nicholas C Z.JavaScript高級程序設計(第2版)[M].北京:人民郵電出版社,2010.
[5]蒲松濤.金融自助服務設備國產化現狀研究[J].中國信息化周報,2017(32-33):23.
[6] JeffreyR.Windows核心編程[M].北京:機械工業出版社,2008.