摘要:為適應氣象水文保障數據頻繁交互的需要,基于部隊內部傳輸網絡,采用Web Service和企業服務總線技術,構建一個面向服務架構的數據共享與交換平臺,通過該平臺實現跨軍區軍兵種多級應用間的數據交換和信息共享。
關鍵詞:面向服務架構;Web Service;松散耦合
中圖分類號:P4 文獻標識碼:A
1引言
信息的高度共享和實時交換是氣象水文保障能力提高的必然要求,但目前,我軍氣象水文信息的共享和交換還存在嚴重不足,主要體現在以下幾個方面:一是由于信息系統建設時期不同,不同軍兵種氣象水文部門之間缺乏統一接口,存在嚴重的“煙囪效應”;二是各個部門在部分信息系統的規劃和建設上沒有協調一致,都在上功能類似的信息系統,建信息“孤島”;三是有的部門在信息系統的集成建設中簡單疊加和合并,造成“積木效應”。這些獨立、異構、封閉的系統制約了氣象水文信息的效率優勢,諸軍兵種間、各級氣象水文部門之間的信息溝通和數據共享問題亟待解決。理想的氣象水文信息共享系統應當集信息采集、錄入、質量控制、傳輸、存儲、服務于一體,這其中有大量數據需要處理和交換,因此,構建一個數據共享與交換平臺具有重要意義。傳統的信息集成技術通過專用的點對點接口程序實現信息共享和交換[2],雖然能解決集成中信息的分布性和異構問題,卻忽略了與業務邏輯的關聯,無法適應軍隊多級氣象水文業務單位之間數據交互的需要。面向服務的體系結構(Service Oriented Architecture,SOA)是一種業務驅動的、粗粒度、松耦合的服務結構,支持對業務進行整合,使其成為一種相互聯系、可重用的業務任務或服務[3]。本文基于SOA的技術理念,提出采用Web Service和企業服務總線技術的面向服務架構思想的解決方案,將整合、分層架構思想引入氣象水文保障數據的共享與交換平臺設計中,從而提高了氣象水文信息共享的靈活性、方便性。
2基于SOA的氣象水文保障數據共享與交換平臺
各層具體描述如下:
1)數據服務層
主要包括歷史、實況、預警預報等專業保障數據,由各級氣象水文臺站負責獲取和管理,并為應用系統層提供數據服務,也可根據需要為專業用戶直接提供數據集。數據互操作性體現在與任何平臺、編程語言相關的私有數據格式都可映射為標準的、文本格式的XML表示,從而超越平臺、語言相關的具體實現。因此,該層在WSDL接口與實體數據庫間引進XMLSQL引擎作為數據服務代理。WSDL接口描述了服務名稱、服務地點和如何與服務通信等內容,可以實現廣泛的數據存儲訪問。XMLSQL引擎提供了一個開放的、標準的數據存儲方法,它既可以把XML的請求轉換成SQL命令來操縱數據庫,也可將現有數據生成XML文檔供業務系統使用。數據服務層通過數據集成消除數據孤島,實現分布數據源的統一管理。
2)應用系統層
根據作戰需求和武器裝備的特性、對氣象水文環境的承載能力,以及部隊在作戰行動中擔負任務的差異,構建氣象水文環境的影響評估模型,得到面向指揮決策的態勢信息。為使各個業務系統能以一種松散耦合的方式進行集成,需要將業務系統封裝成Web Service,將原來以各種API形式暴露的接口用WSDL重新描述,用統一的方式暴露接口,并使用HTTP+SOAP的消息傳輸方式作為與外界交互的橋梁。這樣,服務的內部實現細節被封裝在通過SOAP/WSDL傳遞的信息流之中,從而使原有的業務系統以一種松散耦合的方式集成。
3)服務提供層
是數據共享與交換平臺的核心部分,是業務系統單個功能和任務的抽象與封裝。其功能的實現主要依賴適配器和企業服務總線。當需要增加新的業務系統時,由于開發語言或運行系統的限制,這些應用無法直接跨越所有平臺實現應用集成訪問,因此在服務提供層中提供了對各種異構構件的適配器,適配器通過接口接收和發送消息,實現與被連接構件之間的交互[5]。適配器機制提供了靈活動態的連接方式和路由機制,可與各種環境下的業務系統進行無縫連接,這些適配器通過WSDL接口連接在企業服務總線上。ESB提供了服務之間靈活、基于內容、位置透明的可靠消息傳送。
4)用戶表示層
主要提供友好的用戶界面,它將底層提供的單一應用服務、復合業務服務和整合數據服務通過統一的門戶顯示到最終用戶前,包括提供門戶、單點登錄、界面定制、身份認證等功能。與各節點應用接口的適配器運行于節點服務器上。節點服務器提供可靠事件的傳輸管理機制等事件管理功能。該平臺使得數據以XML格式在各單位節點之間采用端對端對等的方式直接交換,充分保證了平臺的可擴展性,其節點數的增加不會產生中央服務器的效率瓶頸,并可以避免單點故障[5]。該平臺支持與多種數據庫(Oracle、Sybase 等)無縫對接,也支持多種通信傳輸方式,如HTTPs、異步可靠事件方式(Web 服務、JMS 等)。總之,數據共享與交換平臺實現了大量不同格式、不同位置數據的共享和相互訪問,形成協同辦公、一站式服務的基礎平臺。
2.2數據交換方式
平臺提供了與異構系統共享數據的能力。系統管理員利用數據交換模塊的建模工具為數據文件建模,利用映射定義工具為不同數據格式的文件定義轉換形式。目前平臺主要采用兩種數據交換方式,即數據驅動的同步方式和客戶端數據訪問方式。
1) 數據驅動的同步方式。運行于氣象水文臺站A節點上的數據庫接口適配器DBOutAdapter 檢測出所監控的數據表格發生了數據增量( 插入新的數據) ,增量數據被抽取出來并轉化成XML 格式文件,經路由組件分發到不同部門,由數據轉化組件( XSLT Transformer)轉化成不同格式的XML文件,并插入位于氣象水文臺站B或C中的異構數據庫。發生數據更改或刪除時,數據驅動的同步原理同上,如圖2 所示。
2.3與異構系統、應用和數據庫的連接
由于各軍區軍兵種信息系統的建設時間和用途不同,其采用的技術也差別很大,老系統一般是C/S 架構,新系統可能會采用Java技術或.Net技術。
針對此情況,筆者提出兩種方案來進行各臺站系統接入的數據共享與交換平臺配置:
1) 采用C/S 結構技術。可以采用數據交換適配器,采用中間件為老系統創建可重用的服務,或將C/S 系統中可向外發布的功能通過適配器實現。為各部門已有系統配置具有數據交換功能的適配器,可以實現與數據中心進行數據交換的功能。
2) 采用B/S結構的新技術。近期新構建的系統,大多采用J2EE架構或. NET架構,多為三層或多層體系,可以為SOAP或HTTP技術提供較好的支持。因此,既可以采用數據交換適配器抽取和配置交換數據,也可以直接通過開發接口來實現數據交換平臺功能。當前主流的應用服務器都具有部署和運行Web Services 的能力,平臺通過相關應用提供相關的Web Services,可以很方便地與其他平臺和系統交換數據和服務。
3氣象水文預警預報數據共享與交換設計實例
全軍各軍區軍兵種氣象水文部門的預測預報系統分別獨立運作,尚未實現集成和共享,可能導致在同一聯合保障體系內,特定時間、特定區域、特定高度、特定要素的預警預報信息不一致。基于SOA的氣象水文保障數據共享與交換平臺可有效解決上述問題。
整個開發部署環境選擇J2EE技術平臺和Web服務技術,并使用JDK1.5、集成開發環境Eclipse 3.1.2、Web容器ApacheTomcat。采用J2EE平臺中Apache的Axis作為Web服務引擎,選擇ServiceMix作為企業服務總線。
3.1服務封裝
對原有應用如預警預報信息的采集和質量控制等進行Web服務封裝,以便Web服務進一步以組件的形式嵌入到ESB中供系統間的調用。復雜應用需要將服務模塊分成一些小的運行單元(Service Unit, SU),SU集中在服務集成模塊(Service Assembly, SA)下一起運行[6]。配置文件jbi.xml負責配置運行在ServiceMix運行環境中的SA,即Broker業務流程控制模塊。servicemix.xml負責配置SU的運行單元。根據預警預報信息共享實際業務需求,進行相應的服務抽取以滿足新的業務流程。主要的服務組件描述如下:
1)HTTP 綁定組件。負責接收外部服務請求,并將服務請求通過NMR傳送給Broker服務引擎組件。
2)Broker 服務引擎組件。它接收外部服務請求者的請求消息后,首先調用ForcastQuery服務,通過預警預報ID和用戶ID得到預警預報的最新更新和用戶會員級別,然后調用LenderGateway服務。
3)ForcastQuery 服務引擎組件。從Broker得到服務請求,完成根據用戶ID和預警預報ID得到會員級別和最新預警預報信息的服務。
4)LenderGateway服務引擎組件。根據用戶會員級別的不同分別調用Rule0、Rule1、Rule2、Rule3 的服務。
5)Rule0服務引擎組件。針對公共用戶,提供最新預警預報信息服務。
6)Rule1服務引擎組件。針對特定武器平臺,提供最新預警預報信息服務。
7)Rule2服務引擎組件。針對查閱型專業用戶,提供要素級的最新預警預報信息服務。
8)Rule3服務引擎組件。針對研究型專業用戶,提供差別式、多要素、多階段預警預報信息服務。
9)運行基本流程。ServiceMix通過HTTP接收用戶服務請求,以用戶ID和預警預報ID作為輸入變量,調用ForcastQuery服務,得到用戶級別和最新預警預報信息。ForcastQuery服務進一步將用戶級別和最新預警預報信息發送到LenderGateway服務。LenderGateway服務根據用戶級別的不同,調用不同的Rule服務。對非專業普通用戶,則調用Rule0__服務,武器平臺,則調用Rule1 服務;對查閱型專業用戶,則調用Rule2服務;對研究性專業用戶,則調用Rule3服務。最后,ForcastQuery服務將從Rule返回的對應目前用戶級別的最新預警預報信息結果返回給服務請求者。該模塊采用的是異步調用方式,在Broker收到綁定組件通過NMR送來的消息交互MessageExchange后,并不是馬上返回響應消息,而是將MessageExchange通過其唯一編號保存于ConcurrentHashMap,在最終得到了Rule的服務響應后,才從ConcurrentHashMap取出MessageExchange,返回相應消息。
3.2基于JBI 的消息交互
4結束語
本文以SOA理念設計氣象水文保障數據共享與交換平臺,將SOA運用于氣象水文信息集成的優勢應用于該平臺,從而實現跨軍區軍兵種氣象水文部門業務系統的互通互聯和數據共享,為各用戶在分布、異構、動態的環境下提供透明、一致的信息訪問和交互手段。通過該平臺的設計實例,解決了各氣象部門在特定時間、特定區域、特定高度、特定要素等條件下,預警預報信息不一致問題,從而保持了氣象水文信息的效率優勢。SOA 處于不斷發展中,而本平臺仍然存在一些問題和不足,有待進一步深入研究。
圖6天氣預報單顯示頁面
參考文獻
[1]曹飛. 傳統服裝制造企業進軍網絡銷售[EB/OL]. (2009-08-18).http://www.51jms.com/News/132960.htm.
[2]易崢榮, 卜 煒, 葛序風, 等. 基于SOA 的數據協同模型[J].計算機工程, 2009, 35(4): 261-264.
[3]袁月楊, 麻麗莉. SOA Web2.0——新商業語言[M]. 北京: 清華大學出版社, 2007.
[4]何泓偉, 曲朝陽. 基于企業服務總線的醫藥電子商務平臺[J].計算機應用, 2006, 26(2): 333-335.
[5]李曉東, 楊 揚, 郭文彩. 基于企業服務總線的數據共享與交換平臺[J]. 計算機工程, 2006, 32(21): 217-219.
[6]梁愛虎. SOA 思想、技術與系統集成應用詳解[M]. 北京: 電子工業出版社, 2007.
[7]蔣明慧,劉旭東,夏珅寧,通用戰場態勢圖氣象水文態勢系統構件研究[J].軍事氣象水文,2012,(4):11-5302.