張 威 王月基
(海軍航空大學 葫蘆島 125001)
Vega Prime(以下簡稱VP)是目前流行的視景開發工具,在軍事、民用各類視景仿真中得到廣泛的應用。由于單機有限的計算資源限制,許多仿真環境需要多臺計算機協作完成,形成了分布式的計算機仿真技術。VP對于分布式的仿真也提供了很好的支持。但是在實際的軟件開發過程中,基于VP開發的分布式仿真程序,需要在每個節點部署相同的環境,體系結構相對死板,開發、調試、部署都極為不便。為解決上述問題,本文提出了一種基于Vega Prime環境和Web Service技術的軟件中間件VPDR-W,為基于Vega Prime開發的計算機仿真軟件開發提供便利。
IDC互聯網數據中心對中間件的定義是:中間件(Middleware)是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。中間件在實現互連基礎上,還實現應用之間的互操作:中間件是基于分布式處理的軟件,最突出的特點是其網絡通信功能[1]。
中間件屏蔽了操作系統以下的復雜性,為處于自己上層的應用軟件提供運行與開發的環境,使得程序員可以將精力集中在業務方面,不必過多考慮程序在多個平臺的移植問題,降低開發分布式軟件的難度,幫助用戶靈活、高效地開發和集成復雜的應用軟件[2]。中間件技術的目標是實現物理空間與信息空間無縫融合,且在融合后的空間中,用戶可以隨時隨地透明地獲取所期望的計算服務[3~4]。
Web Service[5]是一種新型的 Web 應用程序,具有自包含、自描述以及模塊化的特點,可以通過Web發布、查找和調用[6]。Web Service應具有如下特性:可描述,可以通過一種服務描述語言來描述;可發布,可以在注冊中心注冊其描述信息并發布;可查找,通過向注冊服務器發送查詢請求可以找到滿足查詢條件的服務,獲取服務的綁定信息;可綁定,通過服務的描述信息可以生成可調用的服務實例或服務代理;可調用,使用服務描述信息中的綁定細節可以實現服務的遠程調用;可組合,可以與其他服務組合在一起形成新的服務[7]。
圖1展示了Web Services協議棧的組成,可以看到,在構建和使用Web Service時,主要用到以下幾個關鍵的技術和規則:

圖1 Web Services協議棧的組成
XML和XSD:可擴展的標記語言XML是Web Service平臺中表示數據的基本格式。XML是由萬維網協會(W3C)[8]創建,W3C制定的XML Schema XSD定義了一套標準的數據類型,并給出了一種語言來擴展這套數據類型。除了易于建立和易于分析外,XML主要的優點在于它既與平臺無關,又與廠商無關。
SOAP(Simple Object Access Protocol):簡單對象訪問協議,它規定了Web Services之間如何傳遞信息。SOAP規定了:傳遞信息的格式為XML;遠程對象方法調用的格式;參數類型和XML格式之間的映射;異常處理以及其他的相關信息;WSDL(Web Service Description Language):Web Service描述語言,使用XML描述Web Service,包括訪問和使用Web Service所必需的信息,定義該Web Service的位置、功能以及如何通信等描述信息。它是對一個程序的XML描述,把原來java或C#類的對象和方法描述成XML文件。
UDDI(Universal Description,Discovery and In?tegration):統一描述、發現和整合協議,它是一種獨立于平臺的,基于XML語言的用于在互聯網上描述商務的協議。
Web Service系統基于SOA模型,它的編程模型(如圖2)包含三個組成部分:服務提供者—作為服務契約的服務接口以及作為服務實體的服務實現;服務使用者—也稱為服務使用者或客戶端,使用Web Service;注冊中心—服務提供者可以將服務發布到注冊中心,服務使用者在注冊中心內查找服務,使之成為Web Service的代理。

圖2 Web Service編程模型
分布式仿真是指采用協調一致的結構、標準、協議和數據庫,通過計算機網絡將分布在各地的仿真器互連,使人可以參與交互作用的一種綜合環境,目前已廣泛用于軍用、商用等領域[9]。然而,隨著仿真應用對大量的分布式數據和資源的需求程度不斷提高,分布式仿真系統的復雜度也不斷加大,無法滿足當前計算機網絡技術快速發展的需要。
VP是Multigen Paradigm 公司(MPI)在Vega基礎上推出的新一代支持面向對象技術的實時視景驅動軟件,基于Vega Scene Graph,同時包括Lynx Prime GUI(圖形用戶界面)工具,用戶既可以用圖形化的工具進行快速輔助配置,又可以用底層場景圖形API創建用戶特定功能;提供了對MetaFlight格式的支持,擴展性更強;可通過API函數對實體操作,簡化了開發過程,縮短了開發時間,幫助用戶快速、準確地開發實時三維仿真[10]。
VPDR-W遵循Web Service協議和編程范式,基于“軟總線”+“軟構件”[11]的體系結構。
VPDR-W底層為Web Service的內核,主要運行Web Service內核和SOAP協議,在此基礎上運行VPDR-W服務端和客戶端,其總體結構如圖3所示。

圖3 VPDR-W總體結構
VPDR-W客戶端主要負責遠程VPDR-W服務端注冊監聽服務,監聽VPDR-W遠程服務狀態;VPDR-W服務端負責將Vega Prime的分布式仿真程序發布成Web Service,同時響應客戶端的監聽請求,當服務狀態發生變化時,將服務主動推送給VPDR-W客戶端。
3.2.1 用例分析
VPDR-W面向兩類用戶,從程序員的角度看,主要負責:編寫Vega Prime分布式仿真程序;設置Vega Prime分布式仿真服務對象;運行Vega Prime分布式仿真服務對象實例。從最終用戶的角度看,主要負責設置Vega Prime分布式仿真服務對象;運行Vega Prime分布式仿真服務對象實例。如圖4所示。
3.2.2 序列分析
VPDR-W運行時主要包括四類對象Vega Prime分布式仿真客戶端、VPDR-W客戶端、VP?DR-W服務端以及Veg Prime分布式仿真主程序,四者之間的交互邏輯如圖5所示。

圖4 用例圖

圖5 序列圖
自 適 應 是 中 間 件 軟 件 的 主 要 特 征[12~15],VPDR-W的算法設計體現出其具有的動態自適應的特點。
3.3.1 服務狀態校驗算法
VPDR-W服務端需要根據設置好的服務對象的變化情況決定是否向客戶端推送服務對象實例,如果服務對象沒有發生變化則不推送,如果發生了變化則推送,其服務狀態校驗算法流程如圖6所示。

圖6 服務狀態校驗算法流程圖
3.3.2 客戶端視場范圍動態分配算法
在Vega Prime分布式仿真程序當中,詳細的配置信息存放在擴展名為“acf”的配置文件當中,其中包含了程序的總視場范圍以及需要的通道數量,基于此,VPDR-W可以實現比較靈活的客戶端視場范圍動態配置,其客戶端市場范圍動態分配算法流程如圖7所示。

圖7 客戶端視場范圍動態分配算法流程圖
StarWebService[16]是一個由國防科學技術大學計算機學院網絡所設計實現的、遵循Web2.0規范的分布式軟件計算平臺。本文采用其作為底層Web Service層實現。
VPDR-W服務端主要包括VPDRWServiceLis?tener、VPDRWServiceSender、VPDRWMd5Checker、VPDRWServer等幾個主要的類,其中VPDRWSer?viceListener是一個監聽器類,主要實現監聽基于UbiStar傳送過來的遠程VPDR-W客戶端注冊情況;VPDRWServiceSender類主要實現對發生變化的服務對象實例進行推送;VPDRWMd5Checker類主要實現基于MD5算法的對服務對象實例狀態的校驗;VPDRWServer是程序的入口類,調用其他幾個類實現服務端程序的全部功能。如圖8所示。

圖8 VPDR-W服務端主要類圖
VPDR-W客戶端主要包括VPDRWServiceRe?ceiver、VPDRWClient等幾個主要的類,其中VPDRWServiceReceiver主要實現接收遠程推送過來的服務對象實例,并存放到相應位置;VPDRW?Client類是VPDR-W客戶端的入口類,調用其他幾個類實現客戶端程序的全部功能。如圖9所示。

圖9 VPDR-W客戶端主要類圖
VPDR-W現已在我院某型飛機飛行仿真模擬器開發當中得到實際應用,下面是應用的實際場景(由于特殊原因,部分位置做了遮擋)。
在4號機部署VPDR-W服務端和Vega Prime分布式仿真主程序,設置總視場角為120°,在2、3號機部署VPDR-W客戶端,服務端程序動態發現客戶端數量,并為每個客戶機分配視場角,寫入配置文件,之后加載Vega Prime分布式仿真程序,顯示效果如圖10所示。

圖10 VPDR-W三通道應用界面
在4號機部署VPDR-W服務端和Vega Prime分布式仿真主程序,設置總視場角為150°,在1、2、3、5號機部署VPDR-W客戶端,服務端程序動態發現客戶端數量,并為每個客戶機分配視場角,寫入配置文件,加載Vega Prime分布式仿真程序,顯示效果如圖11所示。

圖11 VPDR-W五通道應用界面
原來的Vega Prime分布式仿真程序需要在客戶機上一一手動進行配置,極其繁瑣和死板。通過實際應用場景可以看出,VPDR-W可以根據分布式仿真程序的客戶機情況靈活的自動進行配置,同時實時地傳送服務對象實例,既簡化了程序員的開發活動,又方便了最終用戶的使用,效果比較理想。
本文基于Web Service和Vega Prime環境設計和實現了一個分布式仿真環境的軟件中間件框架,實現了分布式仿真程序的動態和靈活的配置,在實際的應用中展現了良好的效果。但是存在一些不足,主要是由于Vega Prime是一個商業軟件產品,不開放源代碼,導致編程模式比較僵硬,在今后的工作中將考慮使用 OpenSceneGraph(OSG)[17]等開源分布式仿真環境來進一步進行優化,同時在底層中間件實現上可以考慮結合分布式OSGi[18]等技術路線。
[1]劉芳.分布式仿真系統中想定系統的設計與實現[D].北京:北京郵電大學,2007.
[2]田艷鳳,魏娜,李培君.CORBA的基本原理及其應用[J].未來英才,2015:304-305.
[3]Weiser M.Computer for the 21st Century[J].Scientific American.1991,265(3):94-105.
[4]Saha D,Mukherjee A.Pervasive Computing:A Paradigm for the 21st Century[J].Computer.,36(3):25-31.
[5]尹兆冰,王加陽.Web Service及其關鍵技術研究綜述[J].軟件導刊,2010(02):121-123.
[6]Tsalgatidou A,Pilioura T.An overview of standards and related technology in Web Services[J].2002,12(2-3):135-162.
[7]楊濤,劉錦德.Web Services技術綜述——一種面向服務的分布式計算模式[J]. 計算機應用,2004(08):1-4.
[8]萬維網協會(W3C)[Z].1994.
[9]萬虎,余明暉,楊慶,等.基于網格的分布式仿真綜述[J]. 計算機仿真.2008(01):6-10.
[10]潛繼成.Vega Prime集成運行環境設計[J].電腦編程技巧與維護,2010(06):36-39.
[11]黃文光.StarBus集成開發環境的設計與實現[D].長沙:國防科學技術大學,2007.
[12]Garlan D,Schmerl B,Cheng S W.Software Architec?ture-BasedSelf-Adaptation[M]//Autonomic Computing and Networking,2009:31-35.
[13]Niemel E,Latvakoski J.Survery of Requirements and So?lutions for Ubiqutous Software[C]//ACM Press,2004.
[14]Grimm R,Davis J,Lemar E,et al.System Support for Pervasive Applications[J].ACM Transactions on Com?puter Syetems.2004,22(4):421-486.
[15]Costa CA,Yamin A C,Geyer C.Toward a General Soft?ware Infrastructure for Ubiquitous Computing[J].IEEE Pervasive Computing,2008,7(11):64-73.
[16]劉必欣,王玉峰,周斌,等.Web服務運行支撐環境的研究與實現[J]. 計算機科學,2004(10):108-110.
[17]Openscenegraph.http://www.openscenegraph.org/[Z].2016.
[18]吳元立,張矚熹,楊宏橋,等.分布式OSGi研究與發展[J].計算機應用研究,2010(11):4010-4014.