羅桂林++李偉++張勇
摘要:針對安檢系統(tǒng)各子系統(tǒng)與外部系統(tǒng)交互信息的接口方式不同,但其交互的消息格式均遵循一定的消息規(guī)范協(xié)議,且安檢各子系統(tǒng)處理消息邏輯也基本相同的特點,本文提出了機場安檢系統(tǒng)外部接口平臺的設(shè)計與實現(xiàn),該平臺實現(xiàn)了基于.NET 2.0的輕量級MEF的編程框架,支持動態(tài)拓展和裝載不同接口訪問器,實現(xiàn)不同接口方式下的消息交互,解決安檢系統(tǒng)與外部系統(tǒng)有多種接口方式維護不同接口程序問題。實踐表明,該平臺能夠兼容Socket、MQ、Web Services等不同接口方式,實現(xiàn)安檢各子系統(tǒng)同外部系統(tǒng)信息交互。
關(guān)鍵詞:機場安檢系統(tǒng);統(tǒng)一接口平臺;MEF;消息類型中間件;開放式編程
中圖分類號:TP315 文獻標識碼:A 文章編號:1007-9416(2017)10-0138-03
1 引言
安檢系統(tǒng)包括機場柜臺式分層管理系統(tǒng)、機場主帶式分層管理系統(tǒng)、機場管理信息系統(tǒng)等子系統(tǒng),為機場安檢提供全線解決方案,是民航機場關(guān)鍵系統(tǒng)之一。它的主要功能是對旅客托運行李和隨身行李進行安全檢查,以保障民用航空器及其所載人員、財產(chǎn)的安全。安檢各子系統(tǒng)不是單獨孤立地運行,它與離港系統(tǒng)(DCS)、信息管理系統(tǒng)(SMIS)、行李處理系統(tǒng)(BHS)等外部系統(tǒng)交互必要的信息,如旅客信息、行李信息、行李安檢信息[1]等。
安檢各子系統(tǒng)與外部系統(tǒng)均有接口,每種接口方式均有相應(yīng)的接口網(wǎng)關(guān)程序,以完成必要消息的交互。隨著計算機技術(shù)的發(fā)展與升級,安檢各子系統(tǒng)與外部系統(tǒng)接口出現(xiàn)不同的技術(shù)形態(tài),使得安檢系統(tǒng)接口程序版本得不到有效控制,而多種接口模式給系統(tǒng)的維護也帶來了復雜性[1]。
如圖1所示,以DCS為例,DCS可通過Socket、MQ、Web Services等方式向安檢各子系統(tǒng)提供離港旅客信息、行李信息。一方面,一旦DCS系統(tǒng)出現(xiàn)新的接口技術(shù)形態(tài),這將使得研發(fā)人員重新開發(fā)新的接口軟件,延長了系統(tǒng)開發(fā)生命周期;另一方面,程序版本未得到有效控制,也會增加安檢系統(tǒng)運維的工作量。
分析發(fā)現(xiàn),安檢各子系統(tǒng)雖然與外部系統(tǒng)交互信息的接口方式不同,但其交互的消息格式均遵循一定的消息規(guī)范協(xié)議,處理消息邏輯也基本相同。為此,本文研究與設(shè)計的安檢系統(tǒng)外部接口消息平臺目標之一就是構(gòu)建一個與接口方式無關(guān)的消息處理平臺。
2 MEF框架概述
接口平臺保持相對獨立,避免直接依賴外部系統(tǒng)具體接口方式。微軟可拓展MEF框架,即Managed Extensibility Framework,為解決接口平臺與具體接口方式之間的直接依賴提供了技術(shù)方案。
MEF是用于創(chuàng)建輕量、可擴展應(yīng)用程序的庫,是.NET 4.0的組成部分。MEF不僅讓應(yīng)用程序在無需配置的前提下發(fā)現(xiàn)和擴展協(xié)定組件,還可以讓開發(fā)人員得以輕松地封裝代碼并避免脆弱的緊密依賴性。MEF核心概念如下[2,5]:
(1)Export(導出)組件、模塊、服務(wù)、插件,它向容器中的其它部件提供的功能和服務(wù)等。(2)Import(導入)是組件、服務(wù)、插件等接入系統(tǒng)的窗口,MEF支持若干導入類型,其中包括動態(tài)導入、延遲導入、必備導入和可選導入。(3)Contract(協(xié)定)是Export和Import的一種約定,只有Contract相匹配的Import和Export部件才能組裝成功。
3 接口平臺研究與設(shè)計
針對安檢各子系統(tǒng)與外部系統(tǒng)之間處理的消息遵循一定消息規(guī)范以及處理消息邏輯也基本相同的特點,接口平臺規(guī)范了各子系統(tǒng)消息處理流程;針對安檢各子系統(tǒng)與外部系統(tǒng)存在不同的接口方式,不同接口方式是由不同接口訪問器實現(xiàn);而接口平臺則是參照MEF導出、導入和協(xié)定等概念設(shè)計并實現(xiàn)了基于.NET 2.0輕量級MEF框架(EasyMEF)的接口訪問器動態(tài)裝載器,用于動態(tài)加載訪問外部系統(tǒng)的接口訪問器。不同于基于.NET 4.0框架下的MEF,EasyMEF是基于.NET 2.0設(shè)計的,可適用于XP,具有較強適用性。
根據(jù)實際需求,本文設(shè)計了Socket、MQ、Web Services等不同接口方式的訪問器組件(導出功能),動態(tài)裝載器執(zhí)行EasyMEF框架協(xié)定將這些接口訪問器組件導入到接口平臺(導入功能)。這樣徹底避免接口平臺與外部系統(tǒng)的直接依賴,實現(xiàn)了不同接口方式的接口訪問器“即插即用”[4]。
圖2為安檢系統(tǒng)外部接口平臺框架設(shè)計圖,其中包括內(nèi)核模塊、接口訪問器動態(tài)裝載器和接口訪問器等三大模塊。
3.1 內(nèi)核模塊
內(nèi)核模塊包括了安檢系統(tǒng)對象模型庫,消息類型中間件以及消息處理器。收到消息后,首先是消息解析,其次識別存儲安檢子系統(tǒng)數(shù)據(jù)庫,最后完成消息存儲。
(1) 安檢系統(tǒng)對象模型庫:構(gòu)建消息平臺消息解析后的對象庫,并在對象庫的基礎(chǔ)上,采用特性技術(shù),根據(jù)不同安檢子系統(tǒng),定義子系統(tǒng)應(yīng)用數(shù)據(jù)庫的數(shù)據(jù)表字段名。(2) 消息類型中間件[3,6]:消息類型中間件實現(xiàn)進程內(nèi),不同線程間共享消息。該模塊的主要作用是解耦接口訪問器和消息處理器之間的直接依賴。消息解析后,形成消息對象(Message Object),將消息對象按照消息類型存入消息中間件,供消息處理器異步讀取和處理。(3)消息處理器:該模塊按消息類型,從消息中間件中讀取消息。采用反射技術(shù),讀取消息對象中字段在各子系統(tǒng)映射的數(shù)據(jù)庫表字段,動態(tài)生成并執(zhí)行SQL命令,從而實現(xiàn)將接口訪問器所接收的消息存儲至安檢系統(tǒng)各子系統(tǒng)應(yīng)用數(shù)據(jù)庫。
3.2 接口訪問器動態(tài)裝載器
該模塊實現(xiàn)了MEF功能的導出功能和導入功能之間的協(xié)定,其主要功能是用于動態(tài)識別和裝載接口訪問器。
3.3 接口訪問器
在EasyMEF框架下,不同接口方式,需實現(xiàn)不同接口訪問器,以完成消息的接收與發(fā)送。此外,接口訪問器具有一定自治管理能力,還實現(xiàn)了接口消息統(tǒng)計和處理性能計數(shù),接口故障診斷、報警與故障恢復等功能。endprint
這樣設(shè)計的優(yōu)點在于,安檢系統(tǒng)接口平臺與外部系統(tǒng)有新的接口方式需求時,只需按照編程規(guī)范實現(xiàn)接口訪問器并導入接口平臺便可實現(xiàn)與外部系統(tǒng)接口,而無需重新編寫新的接口網(wǎng)關(guān)程序,也無需重新編譯接口平臺。
4 接口平臺實現(xiàn)
本文設(shè)計的接口平臺能動態(tài)裝載不同接口訪問器,實現(xiàn)與外部系統(tǒng)交互消息。同時,制定了接口訪問器編程規(guī)范,一旦與外部系統(tǒng)出現(xiàn)新的接口方式,可參照規(guī)范實現(xiàn)新接口方式的訪問器。接口訪問器收到外部系統(tǒng)消息后,以事件的機制通知平臺處理;平臺解析消息后,將消息存入消息中間件,最后消息處理器讀取中間件消息,將消息存儲至安檢各子系統(tǒng)應(yīng)用數(shù)據(jù)庫。
4.1 接口消息規(guī)范
安檢系統(tǒng)與外部各系統(tǒng)交互的消息均參照標準規(guī)范協(xié)議, 交互相同格式規(guī)范的消息。例如,與DCS交互的BSM報文參照IATA《Recommended Practice 1745:Baggage Services Message》,與SMIS、BHS交互的消息也均遵循標準接口規(guī)范協(xié)議。
4.2 接口訪問器動態(tài)裝載器編程規(guī)范
為了使接口平臺能動態(tài)裝載不同接口訪問器,本文制定了接口訪問器裝載器與接口訪問器之間的編程規(guī)范,并開放了接口訪問器接入接口平臺準則。只有實現(xiàn)了該編程規(guī)范的接口訪問器,才能接入接口平臺。
設(shè)計與實現(xiàn)接口訪問器時,必須聲明EasyMEF特性,并實現(xiàn)IAccess接口以完成接口訪問器與接口訪問器動態(tài)裝載器之間的功能協(xié)定。其中,IAccess接口要求接口訪問器實現(xiàn)連接外部系統(tǒng)方法和斷開方法、啟動和終止數(shù)據(jù)接收服務(wù)方法、開放消息通知中心等;ICounter要求接口訪問器實現(xiàn)基本的數(shù)據(jù)接收統(tǒng)計和報文處理統(tǒng)計功能。
例如,實現(xiàn)IBM MQ Sphere Series 6.0的離港系統(tǒng)接口訪問器可聲明如下:
接口訪問器以DLL組件的形式存放于接口平臺指定目錄下。接口訪問器動態(tài)裝載器讀取指定目錄下的DLL文件,運用反射和特性技術(shù)識別DLL組件中的接口訪問器。若接口訪問器定義了EasyMEF特性并實現(xiàn)了IAccess接口,裝載器便將接口訪問器實例化和初始化,調(diào)用IAccess接口中的Connect方法訪問啟動連接外部系統(tǒng),調(diào)用Start方法訪問啟動數(shù)據(jù)接收服務(wù)。接口訪問器自治功能實現(xiàn)故障診斷和故障恢復,并通過消息通知中心,將故障診斷報警消息和故障恢復告知接口平臺。實現(xiàn)接口訪問器裝載器算法如圖4所示。
4.3 安檢系統(tǒng)對象模型庫
消息處理器讀取消息類型中間件消息,將接口訪問器收到的消息寫入機場分層管理系統(tǒng)、機場信息管理系統(tǒng)等安檢各子系統(tǒng)應(yīng)用數(shù)據(jù)庫。平臺消息模塊解析消息后,生成安檢系統(tǒng)消息對象。消息對象中的每個字段定義了與安檢應(yīng)用數(shù)據(jù)庫數(shù)據(jù)表字段的映射關(guān)系。如行李碼的IATA字段,安檢系統(tǒng)對象模型庫定義如圖5所示。
4.4 消息類型中間件
接口訪問器獲取外部系統(tǒng)消息后,以事件的機制通知接口平臺。接口平臺進行消息解析后,獲取消息類型,將消息存入消息類型中間件。本文實現(xiàn)的消息中間件,封裝了NET提供的Queue類,實現(xiàn)了基于消息類型的隊列管理器,其基本功能以隊列名為關(guān)鍵詞對隊列存儲,每隊列都有自己的存儲類型標簽。例如,解析BSM報文后,將BSM報文存入行李信息類型隊列。
4.5 消息處理器
消息處理器設(shè)計思想是實現(xiàn)業(yè)務(wù)邏輯的歸一化(One Business Mode)處理,采用泛型定義業(yè)務(wù)邏輯的能處理的消息類型,按照業(yè)務(wù)邏輯能夠處理消息類型獲取消息中間件中的消息,參照業(yè)務(wù)邏輯操縱的安檢子系統(tǒng)類型,運用反射技術(shù)讀取消息對象特性定義數(shù)據(jù)庫字段類型,并組合生成SELECT命令、UPDATE命令和INSERT命令,最后完成數(shù)據(jù)庫業(yè)務(wù)的增、刪、改、查操作。
5 接口平臺應(yīng)用
目前,安檢系統(tǒng)接口平臺已初步推廣使用,較好地實現(xiàn)安檢系統(tǒng)與外部接口數(shù)據(jù)交互,滿足安檢各子系統(tǒng)需求和應(yīng)用。在西安咸陽國際機場T1航站樓,接口平臺實現(xiàn)了與安檢信息管理系統(tǒng)接口(Socket方式);在虹橋國際機場T1航站樓,該接口平臺實現(xiàn)安檢信息管理系統(tǒng)與轉(zhuǎn)報平臺接口(IBM MQ 9.0方式)、與預安檢閘機接口(File Share方式)以及與虹橋T2航站樓安檢信息管理系統(tǒng)接口(DB Share方式);在武漢機場T3航站樓,接口平臺分別實現(xiàn)安檢主帶式分層管理系統(tǒng)和安檢柜臺式分層管理系統(tǒng)與離港系統(tǒng)的接口(Web Services方式)。
6 結(jié)語
本文設(shè)計與實現(xiàn)了基于MEF的機場安檢系統(tǒng)外部接口平臺。接口平臺支持以Socket、MQ、Web Services等不同的接口方式以插件方式接入平臺,并且提供了開放式接口訪問器編程規(guī)范接入新的接口方式,從而有效地縮短了安檢系統(tǒng)接口軟件開發(fā)周期,解決了安檢系統(tǒng)接口程序版本控制問題,進一步減輕了系統(tǒng)運維工作量。
參考文獻
[1]張勇,李偉,羅桂林.機場安檢系統(tǒng)外部接口的設(shè)計與研究[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2015,28(4):1.
[2]蔡軍,胡偉.基于MEF的軟件可復用框架設(shè)計與實現(xiàn)[J].蘇州大學,2014(3):52.
[3]趙堃.基于中間件技術(shù)的機場信息集成系統(tǒng)設(shè)計與實現(xiàn)[D].中國科學院大學,2016:26.
[4]Nasib S.Gill. Reusability issues in component-based development [J], ACM SIGSOFT Software Engineering Notes, July 2003,28(4):4.
[5]李鳳桐,楊艷峰,趙景超.基于MEF技術(shù)的插件式應(yīng)用系統(tǒng)解決方案[J].計算機安全與維護,2015(4):93.
[6]校景中.基于消息中間件的開發(fā)平臺的研究[D].電子科技大學,2003:37.endprint