欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于tao的虛擬試驗(yàn)中間件系統(tǒng)的制作方法

文檔序號:6380384閱讀:256來源:國知局
專利名稱:一種基于tao的虛擬試驗(yàn)中間件系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種虛擬試驗(yàn)通信的中間件系統(tǒng),尤其涉及基于TAO構(gòu)建虛擬試驗(yàn)中間件系統(tǒng),屬于虛擬試驗(yàn)技術(shù)領(lǐng)域。
背景技術(shù)
隨著政治、經(jīng)濟(jì)等因素的制約和軍事發(fā)展的需要,在國防工業(yè)領(lǐng)域中,進(jìn)行虛擬試驗(yàn)至關(guān)重要。虛擬試驗(yàn)是利用計(jì)算機(jī)建模仿真技術(shù)結(jié)合測試技術(shù)、通信技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),為武器裝備的性能試驗(yàn)、技術(shù)指標(biāo)考核、綜合效能評估開發(fā)的一種試驗(yàn)新技術(shù)。虛擬試驗(yàn)正朝著“虛實(shí)結(jié)合”和“綜合集成”的方向發(fā)展。虛擬試驗(yàn)中間件能很好的解決試驗(yàn)期間試驗(yàn)對象、試驗(yàn)資源互聯(lián)互通,實(shí)現(xiàn)虛擬試驗(yàn)系統(tǒng)的互操作。美國國防部提出的高層體系結(jié)構(gòu)(High Level Architecture,簡稱HLA)標(biāo)準(zhǔn)及其實(shí)現(xiàn)RTI很好的解決了虛擬試驗(yàn)中試驗(yàn)對象間的集成問題。而RTI在實(shí)時性方面有所欠缺,不能滿足試驗(yàn)中的實(shí)時性需求?,F(xiàn)有虛擬試驗(yàn)通信平臺大都是針對特有平臺設(shè)計(jì)不具備跨平臺特性。目前,國內(nèi)外對虛擬試驗(yàn)中間件技術(shù)展開了一些研究,如《測控技術(shù)》第28卷第3期發(fā)表的“基于RT-TCP/IP的虛擬試驗(yàn)通信平臺研究”使用RT-TCP/IP協(xié)議設(shè)計(jì)并實(shí)現(xiàn)了實(shí)時以太網(wǎng)虛擬共享內(nèi)存中間件,但其是在RTX平臺下實(shí)現(xiàn),不具備跨平臺、可移植能力。趙正偉的“基于組件的分布虛擬試驗(yàn)軟件研究與應(yīng)用”,分析了基于ACE/TA0搭建分布虛擬試驗(yàn)軟件的優(yōu)勢,但沒有涉及實(shí)現(xiàn)的具體技術(shù)途徑;介紹的中間件實(shí)現(xiàn)方法中可以提供實(shí)時通信服務(wù)、調(diào)度管理服務(wù)、時間同步服務(wù)、程序配置管理服務(wù),但其服務(wù)組件使用VMIC來實(shí)現(xiàn),不具備互操作性、跨平臺等特性。

發(fā)明內(nèi)容
本發(fā)明技術(shù)解決問題克服現(xiàn)有技術(shù)的不足,提供一種基于TAO的虛擬試驗(yàn)中間件系統(tǒng),解決了虛擬試驗(yàn)系統(tǒng)執(zhí)行期間試驗(yàn)對象和試驗(yàn)資源間的實(shí)時通信和調(diào)度問題,實(shí)現(xiàn)虛擬試驗(yàn)應(yīng)用邏輯和通信解耦,使基于該中間件開發(fā)的虛擬試驗(yàn)系統(tǒng)具有互操作性、跨平臺等特性。本發(fā)明技術(shù)解決方案如下一種基于TAO的虛擬試驗(yàn)中間件系統(tǒng),所述TAO(TheACE ORB)是基于ACE 按照實(shí)時 CORBA (Common ObjectRequest Broker Architecture)標(biāo)準(zhǔn)實(shí)現(xiàn)的 ORB (Ob ject Request Broker) ,ACE 指自適應(yīng)通信環(huán)境,即 Adaptive CommunicationEnviixmment,其特征在于所述中間件系統(tǒng)包括時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊及應(yīng)用程序接口 API ;時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊均通過事件通道傳送數(shù)據(jù),所述事件通道是指TAO的ORB中的事件通道對象;時間推進(jìn)模塊,負(fù)責(zé)整個虛擬試驗(yàn)應(yīng)用系統(tǒng)的時間推進(jìn),時間推進(jìn)模塊分為時間客戶端和時間服務(wù)端兩部分;時間客戶端調(diào)用運(yùn)行管理模塊的命名服務(wù)獲取事件通道,利用事件通道將虛擬試驗(yàn)應(yīng)用程序需要發(fā)送的時間請求發(fā)送給時間服務(wù)端;時間客戶端還利用事件通道從時間服務(wù)端接收推進(jìn)時間,并通知虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序;時間服務(wù)端提供邏輯時間推進(jìn)和實(shí)時時間推進(jìn)兩種服務(wù),邏輯時間推進(jìn)為全數(shù)學(xué)模型搭建的虛擬試驗(yàn)應(yīng)用系統(tǒng)接入提供推進(jìn)服務(wù),實(shí)時時間推進(jìn)為有半實(shí)物或?qū)嵨镌O(shè)備搭建的虛擬試驗(yàn)應(yīng)用系統(tǒng)接入提供服務(wù),時間服務(wù)端通過讀取配置文件確定時間推進(jìn)方式;邏輯時間推進(jìn)時,時間服務(wù)端通過事件通道接收來自應(yīng)用程序發(fā)送的時間推進(jìn)請求,存儲在以優(yōu)先級隊(duì)列實(shí)現(xiàn)的時間隊(duì)列中,定時從隊(duì)列中取最小的時間通過事件通道發(fā)送給應(yīng)用程序;實(shí)時時間推進(jìn)時,定時將從實(shí)時操作系統(tǒng)或?qū)崟r設(shè)備(實(shí)物設(shè)備或半實(shí)物設(shè)備)獲取的精確的真實(shí)時間通過事件通道發(fā)送給應(yīng)用程序;運(yùn)行管理模塊,為時間推進(jìn)模塊、交互管理模塊提供命名服務(wù);創(chuàng)建與銷毀事件通道;創(chuàng)建與銷毀試驗(yàn)域,并對試驗(yàn)域內(nèi)的應(yīng)用程序的加入和退出進(jìn)行管理;所述試驗(yàn)域?yàn)樘摂M試驗(yàn)應(yīng)用程序的集合;交互管理模塊,調(diào)用運(yùn)行管理模塊的命名服務(wù)獲取事件通道,維護(hù)虛擬試驗(yàn)應(yīng)用系統(tǒng)中的對象交互和消息傳遞,保證對象和消息的正確交互,并提供遠(yuǎn)程方法調(diào)用功能;對象交互包括對象發(fā)布、對象訂閱和對象更新,消息傳遞包括消息發(fā)布、消息訂閱和消息發(fā)送;回調(diào)管理模塊,接收事件通道推送的數(shù)據(jù),根據(jù)數(shù)據(jù)類型構(gòu)建不同的回調(diào)對象,在不同時刻喚醒回調(diào)對象,執(zhí)行回調(diào)對象相應(yīng)的方法觸發(fā)回調(diào),調(diào)用虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序的應(yīng)用邏輯代碼;應(yīng)用程序接口 API,對上述四個模塊中時間推進(jìn)模塊的時間客戶端功能,運(yùn)行管理模塊中的試驗(yàn)域管理功能,交互管理模塊的對象交互和消息傳遞功能,回調(diào)管理模塊中的回調(diào)喚醒功能進(jìn)行封裝,為虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序提供使用接口。所述運(yùn)行管理模塊包括命名服務(wù)模塊、事件通道管理模塊和試驗(yàn)域管理模塊,分別提供命名服務(wù)、事件通道和試驗(yàn)域管理;命名服務(wù)模塊通過TAO的命名服務(wù)實(shí)現(xiàn),為時間推進(jìn)模塊、交互管理模塊提供命名服務(wù),提供名字到對象的查找和定位服務(wù)。事件通道管理模塊,管理事件通道的創(chuàng)建與銷毀,事件通道的創(chuàng)建流程為首先讀取配置文件中連接命名服務(wù)的通信方式,初始化0RB,并獲取命名服務(wù);設(shè)置事件通道屬性參數(shù),調(diào)用構(gòu)造函數(shù)創(chuàng)建事件通道對象;調(diào)用命名服務(wù)的綁定操作,將事件通道對象綁定到命名服務(wù),供時間推進(jìn)模塊、交互管理模塊、回調(diào)管理模塊引用;事件通道的銷毀通過調(diào)用析構(gòu)函數(shù)實(shí)現(xiàn);試驗(yàn)域管理模塊包含試驗(yàn)域的創(chuàng)建、銷毀,試驗(yàn)域內(nèi)應(yīng)用程序的加入和退出功能,通過命名服務(wù)創(chuàng)建不同的名字空間實(shí)現(xiàn)試驗(yàn)域的創(chuàng)建,當(dāng)該試驗(yàn)域不再使用或要強(qiáng)制銷毀該試驗(yàn)域時,通過調(diào)用試驗(yàn)域的析構(gòu)函數(shù)來實(shí)現(xiàn)試驗(yàn)域的銷毀;試驗(yàn)域管理模塊為每個域維護(hù)一個應(yīng)用程序集合,應(yīng)用程序加入域時在對應(yīng)域的應(yīng)用程序集合中添加應(yīng)用程序名稱,應(yīng)用程序退出域時,刪除對應(yīng)域的應(yīng)用程序集合中的應(yīng)用程序名稱。所述交互管理模塊包括關(guān)系表模塊、對象交互模塊、消息傳遞模塊、遠(yuǎn)程方法調(diào)用模塊。關(guān)系表模塊為對象交互模塊和消息傳遞模塊提供查詢服務(wù),存儲了虛擬試驗(yàn)應(yīng)用系統(tǒng)中的對象和消息的名稱到對應(yīng)ID的映射關(guān)系;對象交互管理模塊通過應(yīng)用程序接口API得到需發(fā)布或訂閱的對象名稱,查找關(guān)系表模塊中對應(yīng)的ID,通過運(yùn)行管理模塊中的命名服務(wù)找到事件通道,調(diào)用事件通道對象的接口設(shè)置過濾條件,并重新連接事件通道完成對象的發(fā)布或訂閱;對象交互管理模塊通過應(yīng)用程序接口 API得到需更新的對象數(shù)據(jù), 并對數(shù)據(jù)的類型進(jìn)行轉(zhuǎn)換,調(diào)用事件通道的推送接口更新數(shù)據(jù);消息傳遞管理模塊通過應(yīng) 用程序接口 API得到需發(fā)布或訂閱的消息名稱,查找關(guān)系表模塊中對應(yīng)的ID,通過運(yùn)行管 理模塊中的命名服務(wù)找到事件通道,調(diào)用事件通道對象的接口設(shè)置過濾條件,并重新連接 事件通道完成消息的發(fā)布或訂閱;消息傳遞模塊通過應(yīng)用程序接口 API得到需發(fā)送的消息 數(shù)據(jù),并對數(shù)據(jù)的類型進(jìn)行轉(zhuǎn)換,調(diào)用事件通道的推送接口發(fā)送消息;對象數(shù)據(jù)緩存一直 到試驗(yàn)對象被銷毀,消息為瞬間數(shù)據(jù),發(fā)送完成后被銷毀,不緩存;遠(yuǎn)程方法調(diào)用模塊通過 CORBA實(shí)現(xiàn)。所述回調(diào)管理模塊中構(gòu)建的回調(diào)對象分為四種類型發(fā)現(xiàn)回調(diào)、銷毀回調(diào)、狀態(tài)改 變回調(diào)和消息回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用系統(tǒng)中應(yīng)用程序調(diào)用交互管理模塊提供的發(fā)布對象應(yīng) 用程序接口 API時,立即觸發(fā)發(fā)現(xiàn)回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用系統(tǒng)應(yīng)用程序調(diào)用交互管理模塊 提供的取消對象發(fā)布應(yīng)用程序接口 API時,立即觸發(fā)銷毀回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用程序調(diào)用 交互管理模塊提供的對象更新應(yīng)用程序接口 API時,且應(yīng)用程序調(diào)用喚醒回調(diào)應(yīng)用程序接 口 API時,觸發(fā)狀態(tài)改變回調(diào);當(dāng)事件通道接收到消息時,立即觸發(fā)消息回調(diào)。本發(fā)明與現(xiàn)有技術(shù)相比的有益效果(1)本發(fā)明同時具備邏輯時間和實(shí)時時間推進(jìn)的能力,既能滿足全數(shù)學(xué)模型的虛 擬試驗(yàn)應(yīng)用推進(jìn)需求,又能滿足半實(shí)物、實(shí)物設(shè)備接入的虛擬試驗(yàn)應(yīng)用推進(jìn)需求。(2)本發(fā)明基于ACE/TA0實(shí)現(xiàn),使虛擬試驗(yàn)應(yīng)用具備跨平臺、可移植、實(shí)時等特性, 能滿足復(fù)雜大規(guī)模虛擬試驗(yàn)的需求。(3)本發(fā)明利用安全可靠的應(yīng)用程序接口構(gòu)建虛擬試驗(yàn)應(yīng)用的方式,提供分布式 對象通信能力,實(shí)現(xiàn)虛擬試驗(yàn)應(yīng)用邏輯和通信解耦,實(shí)現(xiàn)了互操作,提高虛擬試驗(yàn)的開發(fā)效 率,縮短開發(fā)周期,降低試驗(yàn)系統(tǒng)開發(fā)成本。


圖1為本發(fā)明的系統(tǒng)組成結(jié)構(gòu)框圖;圖2為本發(fā)明的時間推進(jìn)服務(wù)模塊實(shí)現(xiàn)圖;圖3為本發(fā)明的時間客戶端和服務(wù)端的啟動流程圖;圖4為本發(fā)明的事件通道創(chuàng)建流程圖;圖5為本發(fā)明交互管理服務(wù)模塊實(shí)現(xiàn)圖;圖6為本發(fā)明的對象發(fā)布更新流程圖;圖7為本發(fā)明回調(diào)服務(wù)相關(guān)類設(shè)計(jì)圖;圖8為本發(fā)明回調(diào)服務(wù)回調(diào)對象執(zhí)行流程圖;圖9為本發(fā)明應(yīng)用程序接口調(diào)用流程圖。
具體實(shí)施例方式在敘述本發(fā)明具體實(shí)施方式
之前,對本發(fā)明用到的技術(shù)術(shù)語進(jìn)行說明ACE(Ada ptive Communication Environment,自適應(yīng)通信環(huán)境)將操作系統(tǒng)的通信、調(diào)度、并發(fā)服務(wù) 以優(yōu)秀的設(shè)計(jì)模式進(jìn)行封裝,支持多種操作系統(tǒng),包括Windows、UNIX、Linux、VxWorks。TA0 是基于ACE遵循實(shí)時C0RBA標(biāo)準(zhǔn)實(shí)現(xiàn)的0RB。
如圖I所示,本發(fā)明所述的中間件系統(tǒng)是基于開源項(xiàng)目ACE/TA0實(shí)現(xiàn)。本發(fā)明在ACE/TA0基礎(chǔ)上構(gòu)建四個模塊,包括時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊,并將四個模塊的功能封裝成易用的應(yīng)用程序接口 API供試驗(yàn)人員使用。時間推進(jìn)模塊主要用于向虛擬試驗(yàn)應(yīng)用提供同步推進(jìn)策略,保證整個試驗(yàn)正確有序的進(jìn)行。時間推進(jìn)模塊提供邏輯時間推進(jìn)和實(shí)時時間推進(jìn)兩種服務(wù)。如圖2所示,時間推進(jìn)模塊分為時間客戶端和時間服務(wù)端兩部分。時間客戶端由初始化模塊、發(fā)送端、接收端和時間服務(wù)接口四個模塊組成。時間服務(wù)端由初始化模塊、發(fā)送端、接收端、實(shí)時時鐘獲取、時間隊(duì)列、和時間推進(jìn)策略六個子模塊。時間對象由IDL文件定義。其中,時間客戶端和服務(wù)端的啟動流程類似,在初始化模塊中實(shí)現(xiàn),讀取配置文件中連接命名服務(wù)的通信方式完成ORB初始化,連接命名服務(wù),連接事件通道并運(yùn)行0RB。具體流程如圖3所示。首先初始化ORB ;獲得命名服務(wù)對象,并通過命名服務(wù)找到不同域?qū)?yīng)的事件通道對象;發(fā)送端獲取Consumer代理,接收端獲取Supplier代理;設(shè)置Qos表達(dá)發(fā)布訂閱信息,客戶端和服務(wù)端設(shè)置的Qos信息必須一致;連接事件通道;接收端啟動線程并運(yùn)行0RB,等待接收數(shù)據(jù)。時間客戶端的功能以DLL(動態(tài)鏈接庫)的形式封裝,供應(yīng)用程序調(diào)用。發(fā)送端模塊將應(yīng)用程序需要發(fā)送的時間對象轉(zhuǎn)換成CORBA: :Any類型,調(diào)用Consumer代理的push函數(shù)發(fā)送時間;當(dāng)有時間對象到達(dá)時,事件通道調(diào)用接收端的push回調(diào)函數(shù)。push函數(shù)在接收端實(shí)現(xiàn),主要完成從事件集中提取事件并將CORBA: :Any類型數(shù)據(jù)轉(zhuǎn)換成時間對象類型,并存儲,同時通知應(yīng)用程序可以讀取時間。時間客戶端主要提供三個時間服務(wù)接口 SendTime O ,向時間服務(wù)端發(fā)送請求時間;WaitTimeForward O ,等待時間服務(wù)器允許推進(jìn);GetTime O,時間服務(wù)器允許推進(jìn)后,調(diào)用此接口獲取當(dāng)前時間。時間服務(wù)端的發(fā)送端和接收端的實(shí)現(xiàn)方式與時間客戶端一致。時間服務(wù)端提供邏輯時間推進(jìn)和實(shí)時時間推進(jìn)兩種策略。初始化時,時間服務(wù)端讀取配置文件,確定時間推進(jìn)方式。邏輯時間推進(jìn)時,時間服務(wù)端通過接收端接收來自應(yīng)用程序發(fā)送的時間,并存儲在時間隊(duì)列中。時間隊(duì)列采用優(yōu)先級隊(duì)列實(shí)現(xiàn),時間服務(wù)器根據(jù)設(shè)置好的時間步長定時從隊(duì)列中取最小的時間通過發(fā)送端發(fā)送給應(yīng)用程序。實(shí)時時間推進(jìn)時,維護(hù)一個精確定時器,定時通過實(shí)時時鐘獲取模塊從操作系統(tǒng)或?qū)崟r設(shè)備(半實(shí)物/實(shí)物設(shè)備)獲得精確的真實(shí)時間,并將時間通過發(fā)送端發(fā)送給應(yīng)用程序。運(yùn)行管理模塊為時間推進(jìn)模塊、交互管理模塊中的分布式對象提供名字到對象引用的映射的命名服務(wù);創(chuàng)建與銷毀事件通道;創(chuàng)建與銷毀試驗(yàn)域,并對虛擬試驗(yàn)應(yīng)用系統(tǒng)中的試驗(yàn)域內(nèi)應(yīng)用的加入和退出進(jìn)行管理;由命名服務(wù)和事件通道管理、試驗(yàn)域管理三個模塊組成。上述的命名服務(wù)由命名服務(wù)模塊實(shí)現(xiàn)。在命名服務(wù)中,通過將對象賦予唯一標(biāo)識來確定服務(wù)對象。通過指定對象的名字,解析命名服務(wù),實(shí)現(xiàn)對服務(wù)對象的查找和定位。命名服務(wù)通過封裝TAO的命名服務(wù)實(shí)現(xiàn),提供初始化、運(yùn)行、綁定、取消綁定,關(guān)閉等操作。上述的創(chuàng)建與銷毀事件通道由實(shí)現(xiàn)事件通道管理模塊實(shí)現(xiàn)。事件通道的創(chuàng)建流程如圖4所示。首先讀取配置文件中連接命名服務(wù)的通信方式初始化0RB,并獲取命名服務(wù);設(shè)置時間通道屬性參數(shù),將consumer_reconnect和supplier_reconnect置為I,支持事件通道重連,調(diào)用TAO_EC_Event_Channel構(gòu)造函數(shù)創(chuàng)建事件通道對象;調(diào)用命名服務(wù)的綁定操作,將事件通道對象綁定到命名服務(wù),供其它服務(wù)引用。事件通道的銷毀通過調(diào)用TAO_EC_Event_ChanneI析構(gòu)函數(shù)實(shí)現(xiàn)。試驗(yàn)域管理模塊包含試驗(yàn)域的創(chuàng)建、銷毀,試驗(yàn)域內(nèi)應(yīng)用的加入和退出等功能。試驗(yàn)域擁有不同的試驗(yàn)域名稱,通過在命名服務(wù)下創(chuàng)建不同的名字空間實(shí)現(xiàn)。每個試驗(yàn)域調(diào)用事件通道管理創(chuàng)建本試驗(yàn)域的事件通道。當(dāng)該試驗(yàn)域不再使用或要強(qiáng)制銷毀該試驗(yàn)域時,通過調(diào)用試驗(yàn)域的析構(gòu)函數(shù)來實(shí)現(xiàn)試驗(yàn)域的銷毀,并調(diào)用事件通道的銷毀操作。試驗(yàn)域管理模塊為每個域維護(hù)一個應(yīng)用程序集合。應(yīng)用程序以試驗(yàn)域名稱為參數(shù)調(diào)用加入試驗(yàn)域函數(shù),若該試驗(yàn)域已經(jīng)存在,則返回試驗(yàn)域名稱對應(yīng)的試驗(yàn)域,并在對應(yīng)域的應(yīng)用程序集合中添加應(yīng)用程序名稱;若該試驗(yàn)域不存在,則創(chuàng)建新的試驗(yàn)域,同時并在對應(yīng)域的應(yīng)用程序集合中添加應(yīng)用程序名稱。試驗(yàn)域的加入主要通過查找試驗(yàn)域集合來完成,試驗(yàn)域集合是一個Map〈string, Domain〉,查找試驗(yàn)域時,匹配Map的第一個關(guān)鍵字,若匹配成功,則返回TRU E ;若匹配不成功,則倉Il建新的試驗(yàn)域,并將試驗(yàn)域名稱與新的試驗(yàn)域的pair對加入到試驗(yàn)域集合中。應(yīng)用程序退出域時,刪除對應(yīng)域的應(yīng)用程序集合中的應(yīng)用程序名稱?!?br> 交互管理模塊主要負(fù)責(zé)維護(hù)整個分布式系統(tǒng)中的對象與消息傳遞,保證對象的正確交互和興趣管理,并提供遠(yuǎn)程方法調(diào)用功能。如圖5所示,交互管理服務(wù)分為關(guān)系表模塊、對象交互模塊、消息傳遞模塊、遠(yuǎn)程方法調(diào)用四大子模塊。關(guān)系表模塊包括類型倉庫、對象倉庫;對象交互模塊包括對象發(fā)布、狀態(tài)更新、對象訂閱;消息傳遞模塊包括消息發(fā)布、消息發(fā)送、消息訂閱。關(guān)系表模塊維護(hù)發(fā)布者和訂閱者之間的類層次關(guān)系,為試驗(yàn)系統(tǒng)中的訂閱提供支持。為了實(shí)現(xiàn)發(fā)布者和訂閱者類型和對象的一致性,通過維護(hù)類型倉庫和對象倉庫來實(shí)現(xiàn)發(fā)布者和訂閱者的類型和對象的關(guān)聯(lián),保證類型和對象在試驗(yàn)域內(nèi)的全局唯一性。在一個試驗(yàn)域內(nèi),類型倉庫和對象倉庫供試驗(yàn)域全局使用。類型倉庫使用兩張表分別記錄對象類型和消息類型的名字到ID的映射,其中類型名字為字符串主要用于接口參數(shù)的傳遞,而類型ID則在設(shè)置Qos信息表達(dá)發(fā)布訂閱關(guān)系時使用。為保證實(shí)現(xiàn)類型標(biāo)識符到類型ID的一一映射,每一種類型分配一個庫中唯一的ID。同時,類型倉庫維護(hù)一個繼承關(guān)系表表示類的層次結(jié)構(gòu),使用鄰接鏈表實(shí)現(xiàn)存儲。表中每個元素代表一種類型,元素的內(nèi)容是一張記錄該類型所有子類類型的表。對象倉庫與類型倉庫類似,使用兩張表分別記錄類型實(shí)例對象和消息對象的名字到ID的映射。對象交互模塊負(fù)責(zé)對象的發(fā)布/訂閱和更新如圖6所示。對象更新首先需要發(fā)布對象。對象的發(fā)布是通過在連接事件通道前,修改事件通道Qos信息來實(shí)現(xiàn)。將對象的類型名和實(shí)例名通過類型倉庫和對象倉庫轉(zhuǎn)化為ID,再將類型ID和實(shí)例ID傳遞給ORB中ACE_ConsumerQOS_Factory類的insert方法,修改Qos信息實(shí)現(xiàn)對象的發(fā)布。對象發(fā)布后,先將對象數(shù)據(jù)轉(zhuǎn)化為CORBA: :Any,調(diào)用Consumer代理的push函數(shù)完成對象更新。對象的訂閱通過修改Qos信息向事件通道表達(dá)訂閱興趣實(shí)現(xiàn),訂閱完成后,等待時間通道回調(diào)PushConsumer接口的push回調(diào)函數(shù)。消息傳遞模塊的實(shí)現(xiàn)方式與對象交互模塊一致。對象和消息的區(qū)別在于對象數(shù)據(jù)會在系統(tǒng)中緩存一直到試驗(yàn)對象被銷毀,消息為瞬間數(shù)據(jù),發(fā)送完成后就被銷毀,不會在系統(tǒng)中緩存。
遠(yuǎn)程方法調(diào)用的實(shí)現(xiàn)通過CORBA的RMI實(shí)現(xiàn),由Stub和Skeleton兩部分完成的,在遠(yuǎn)程方法調(diào)用的過程中,訂閱者端通過Stub與CORBA的ORB進(jìn)行交互,發(fā)布者通過CORBA的Skeleton與ORB進(jìn)行交互,這樣訂閱者就可以通過Stub和Skeleton實(shí)現(xiàn)對發(fā)布者的方法調(diào)用?;卣{(diào)管理模塊接收事件通道推送的數(shù)據(jù),根據(jù)數(shù)據(jù)類型構(gòu)建不同的回調(diào)對象,在不同時刻執(zhí)行回調(diào)對象相應(yīng)的方法觸發(fā)回調(diào),調(diào)用應(yīng)用程序的應(yīng)用邏輯代碼?;卣{(diào)模塊提供四種類型的回調(diào)發(fā)現(xiàn)回調(diào)、銷毀回調(diào)、狀態(tài)改變回調(diào)和消息回調(diào)。當(dāng)?shù)谝淮伟l(fā)布對象時,回調(diào)管理模塊會立即觸發(fā)發(fā)現(xiàn)回調(diào);當(dāng)取消發(fā)布對象時,回調(diào)管理模塊會立即觸發(fā)銷毀回調(diào);當(dāng)更新對象時,且應(yīng)用程序調(diào)用evokeCallback應(yīng)用程序接口時,回調(diào)管理模塊會觸發(fā)狀態(tài)改變回調(diào);當(dāng)接收到消息時,回調(diào)管理模塊會立即觸發(fā)消息回調(diào)?;卣{(diào)的相關(guān)類圖設(shè)計(jì)如圖7所示。Callback為回調(diào)對象的基類,其定義了抽象接口 execute。DiscoveryCallbacklmpK DestructionCallbacklmpK StateChangeCalIbacklmpl 和MessageCalIbacklmpl都繼承接口 Callback,它們的execute方法由應(yīng)用程序人員填 寫回調(diào)處理邏輯。Proxy為遠(yuǎn)程服務(wù)對象的代理,其維護(hù)一個Callback回調(diào)隊(duì)列,并提供evokeCalIback函數(shù)喚醒回調(diào)并執(zhí)行回調(diào)函數(shù)。如圖8所示,當(dāng)事件通道的Push回調(diào)函數(shù)接收到所訂閱的數(shù)據(jù)后,將該數(shù)據(jù)類型與訂閱的數(shù)據(jù)類型進(jìn)行匹配,然后利用匹配成功的數(shù)據(jù)更新本地代理對象的值。同時判斷收到數(shù)據(jù)的事件頭標(biāo)志位,如果對象第一次發(fā)布,則調(diào)用發(fā)現(xiàn)回調(diào)對象的回調(diào)函數(shù)execute,如果是取消發(fā)布,則調(diào)用銷毀回調(diào)對象的回調(diào)函數(shù)execute,如果不是發(fā)現(xiàn)或銷毀回調(diào),則利用本地代理對象構(gòu)建狀態(tài)改變或消息回調(diào)對象,并存入回調(diào)隊(duì)列。當(dāng)應(yīng)用程序調(diào)用evokeCallback服務(wù)時,回調(diào)管理模塊判斷回調(diào)隊(duì)列是否為空,如果不為空則取出回調(diào)隊(duì)列隊(duì)頭回調(diào)對象并調(diào)用其回調(diào)方法execute。為方便虛擬試驗(yàn)人員使用,將四個模塊的功能封裝成應(yīng)用程序接口 API,主要分為四類I)運(yùn)行管理(I) JoinDomain,加入試驗(yàn)域;⑵ExitDomain,退出試驗(yàn)域。2)交互管理(I)PublishVIO,發(fā)布對象;(2)UnPublishVI0,取消發(fā)布對象;(3) SubscribeToVIO,訂閱對象;(4) UnSubscribeVIO,取消訂閱對象;(5) UpdateVIO,更新對象(6) PublishMessage,發(fā)布消息;(7)UnPubIishMessage,取消發(fā)布消息;(8) SubscribeToMessage,訂閱消息;(9)UnSubscribeMessage,取消訂閱消息;(10) SendMessage,發(fā)送消息。3)時間模塊
(I) SendTime,向時間服務(wù)器發(fā)送請求推進(jìn)時間;(2) WaitTimeForward,等待時間服務(wù)器允許推進(jìn);(3) GetTime,獲得當(dāng)前推進(jìn)時間。4)回調(diào)管理模塊 (I) evokeCallback,喚醒狀態(tài)改變或消息回調(diào)。應(yīng)用程序調(diào)用API的流程如圖9所示I)應(yīng)用程序調(diào)用運(yùn)行管理模塊的接口加入試驗(yàn)域;2)應(yīng)用程序調(diào)用交互管理模塊接口發(fā)布對象或消息,訂閱對象或消息;3)應(yīng)用程序調(diào)用時間推進(jìn)模塊接口請求時間推進(jìn);4)應(yīng)用程序調(diào)用時間推進(jìn)模塊接口等待時間推進(jìn),時間推進(jìn)模塊允許應(yīng)用程序推進(jìn);5)應(yīng)用程序調(diào)用時間管理模塊接口得到當(dāng)前系統(tǒng)時間;6)應(yīng)用程序調(diào)用回調(diào)管理模塊接口喚醒回調(diào),回調(diào)管理模塊觸發(fā)回調(diào),調(diào)用應(yīng)用程序的應(yīng)用邏輯代碼;7)應(yīng)用程序調(diào)用交互管理模塊接口更新對象;8)應(yīng)用程序調(diào)用交互管理模塊接口發(fā)送消息;9)重復(fù)執(zhí)行3 8 ;10)應(yīng)用程序退出時,調(diào)用交互管理模塊接口取消發(fā)布對象或消息,取消訂閱對象或消息;11)應(yīng)用程序調(diào)用運(yùn)行管理模塊接口退出域。通過某領(lǐng)域的虛擬試驗(yàn)證明本發(fā)明的中間件系統(tǒng)具有互操作性、可重用性、跨平臺、實(shí)時等特性,提高了系統(tǒng)的開發(fā)效率,降低了系統(tǒng)的開發(fā)費(fèi)用。本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。
權(quán)利要求
1.一種基于TAO的虛擬試驗(yàn)中間件系統(tǒng),所述TAO (The ACE ORB)是基于ACE按照實(shí)時 CORBA (Common Object Request BrokerArchitecture)標(biāo)準(zhǔn)實(shí)現(xiàn)的 ORB (Object RequestBroker), ACE 指自適應(yīng)通信環(huán)境,即 Adaptive Communication Environment,其特征在于所述中間件系統(tǒng)包括時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊及應(yīng)用程序接口 API ;時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊均通過事件通道傳送數(shù)據(jù),所述事件通道是指TAO的ORB中的事件通道對象;時間推進(jìn)模塊,負(fù)責(zé)整個虛擬試驗(yàn)應(yīng)用系統(tǒng)的時間推進(jìn),時間推進(jìn)模塊分為時間客戶端和時間服務(wù)端兩部分;時間客戶端調(diào)用運(yùn)行管理模塊的命名服務(wù)獲取事件通道,利用事件通道將虛擬試驗(yàn)應(yīng)用程序需要發(fā)送的時間請求發(fā)送給時間服務(wù)端;時間客戶端還利用事件通道從時間服務(wù)端接收推進(jìn)時間,并通知虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序;時間服務(wù)端提供邏輯時間推進(jìn)和實(shí)時時間推進(jìn)兩種服務(wù),邏輯時間推進(jìn)為全數(shù)學(xué)模型搭建的虛擬試驗(yàn)應(yīng)用系統(tǒng)接入提供推進(jìn)服務(wù),實(shí)時時間推進(jìn)為有半實(shí)物或?qū)嵨镌O(shè)備搭建的虛擬試驗(yàn)應(yīng)用系統(tǒng)接入提供服務(wù),時間服務(wù)端通過讀取配置文件確定時間推進(jìn)方式;邏輯時間推進(jìn)時,時間服務(wù)端通過事件通道接收來自應(yīng)用程序發(fā)送的時間推進(jìn)請求,存儲在以優(yōu)先級隊(duì)列實(shí)現(xiàn)的時間隊(duì)列中,定時從隊(duì)列中取最小的時間通過事件通道發(fā)送給應(yīng)用程序;實(shí)時時間推進(jìn)時,定時將從實(shí)時操作系統(tǒng)或?qū)崟r設(shè)備包括實(shí)物設(shè)備或半實(shí)物設(shè)備獲取的精確的真實(shí)時間通過事件通道發(fā)送給應(yīng)用程序;運(yùn)行管理模塊,為時間推進(jìn)模塊、交互管理模塊提供命名服務(wù);創(chuàng)建與銷毀事件通道;創(chuàng)建與銷毀試驗(yàn)域,并對試驗(yàn)域內(nèi)的應(yīng)用程序的加入和退出進(jìn)行管理;所述試驗(yàn)域?yàn)樘摂M試驗(yàn)應(yīng)用程序的集合;交互管理模塊,調(diào)用運(yùn)行管理模塊的命名服務(wù)獲取事件通道,維護(hù)虛擬試驗(yàn)應(yīng)用系統(tǒng)中的對象交互和消息傳遞,保證對象和消息的正確交互,并提供遠(yuǎn)程方法調(diào)用功能;對象交互包括對象發(fā)布、對象訂閱和對象更新,消息傳遞包括消息發(fā)布、消息訂閱和消息發(fā)送;回調(diào)管理模塊,接收事件通道推送的數(shù)據(jù),根據(jù)數(shù)據(jù)類型構(gòu)建不同的回調(diào)對象,在不同時刻喚醒回調(diào)對象,執(zhí)行回調(diào)對象相應(yīng)的方法觸發(fā)回調(diào),調(diào)用虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序的應(yīng)用邏輯代碼;應(yīng)用程序接口 API,對上述四個模塊中時間推進(jìn)模塊的時間客戶端功能,運(yùn)行管理模塊中的試驗(yàn)域管理功能,交互管理模塊的對象交互和消息傳遞功能,回調(diào)管理模塊中的回調(diào)喚醒功能進(jìn)行封裝,為虛擬試驗(yàn)應(yīng)用系統(tǒng)中的應(yīng)用程序提供使用接口。
2.根據(jù)權(quán)利要求I所述的基于TAO的虛擬試驗(yàn)中間件系統(tǒng),其特征在于所述運(yùn)行管理模塊包括命名服務(wù)模塊、事件通道管理模塊和試驗(yàn)域管理模塊,分別提供命名服務(wù)、事件通道和試驗(yàn)域管理;命名服務(wù)模塊通過TAO的命名服務(wù)實(shí)現(xiàn),為時間推進(jìn)模塊、交互管理模塊提供命名服務(wù),提供名字到對象的查找和定位服務(wù)。事件通道管理模塊,管理事件通道的創(chuàng)建與銷毀,事件通道的創(chuàng)建流程為首先讀取配置文件中連接命名服務(wù)的通信方式,初始化0RB,并獲取命名服務(wù);設(shè)置事件通道屬性參數(shù),調(diào)用構(gòu)造函數(shù)創(chuàng)建事件通道對象;調(diào)用命名服務(wù)的綁定操作,將事件通道對象綁定到命名服務(wù),供時間推進(jìn)模塊、交互管理模塊、回調(diào)管理模塊引用;事件通道的銷毀通過調(diào)用析構(gòu)函數(shù)實(shí)現(xiàn);試驗(yàn)域管理模塊包含試驗(yàn)域的創(chuàng)建、銷毀,試驗(yàn)域內(nèi)應(yīng)用程序的加入和退出功能,通過命名服務(wù)創(chuàng)建不同的名字空間實(shí)現(xiàn)試驗(yàn)域的創(chuàng)建,當(dāng)該試驗(yàn)域不再使用或要強(qiáng)制銷毀該試驗(yàn)域時,通過調(diào)用試驗(yàn)域的析構(gòu)函數(shù)來實(shí)現(xiàn)試驗(yàn)域的銷毀;試驗(yàn)域管理模塊為每個域維護(hù)一個應(yīng)用程序集合,應(yīng)用程序加入域時在對應(yīng)域的應(yīng)用程序集合中添加應(yīng)用程序名稱,應(yīng)用程序退出域時,刪除對應(yīng)域的應(yīng)用程序集合中的應(yīng)用程序名稱。
3.根據(jù)權(quán)利要求I所述的基于TAO的虛擬試驗(yàn)中間件系統(tǒng),其特征在于所述交互管理模塊包括關(guān)系表模塊、對象交互模塊、消息傳遞模塊、遠(yuǎn)程方法調(diào)用模塊關(guān)系表模塊為對象交互模塊和消息傳遞模塊提供查詢服務(wù),存儲了虛擬試驗(yàn)應(yīng)用系統(tǒng)中的對象和消息的名稱到對應(yīng)ID的映射關(guān)系;對象交互管理模塊通過應(yīng)用程序接口 API得到需發(fā)布或訂閱的對象名稱,查找關(guān)系表模塊中對應(yīng)的ID,通過運(yùn)行管理模塊中的命名服務(wù)找到事件通道,調(diào)用事件通道對象的接口設(shè)置過濾條件,并重新連接事件通道完成對象的發(fā)布或訂閱;對象交互管理模塊通過應(yīng)用程序接口 API得到需更新的對象數(shù)據(jù),并對數(shù)據(jù)的類型進(jìn)行轉(zhuǎn)換,調(diào)用事件通道的推送接口更新數(shù)據(jù);消息傳遞管理模塊通過應(yīng)用程序接口 API得到需發(fā)布或訂閱的消息名稱,查找關(guān)系表模塊中對應(yīng)的ID,通過運(yùn)行管理模塊中的命名服務(wù)找到事件通道,調(diào)用事件通道對象的接口設(shè)置過濾條件,并重新連接事件通道完成消息的發(fā)布或訂閱;消息傳遞模塊通過應(yīng)用程序接口 API得到需發(fā)送的消息數(shù)據(jù),并對數(shù)據(jù)的類型進(jìn)行轉(zhuǎn)換,調(diào)用事件通道的推送接口發(fā)送消息;對象數(shù)據(jù)緩存一直到試驗(yàn)對象被銷毀,消息為瞬間數(shù)據(jù),發(fā)送完成后被銷毀,不緩存;遠(yuǎn)程方法調(diào)用模塊通過CORBA實(shí)現(xiàn)。
4.根據(jù)權(quán)利要求I所述的基于TAO的虛擬試驗(yàn)中間件系統(tǒng),其特征在于所述回調(diào)管理模塊中構(gòu)建的回調(diào)對象分為四種類型發(fā)現(xiàn)回調(diào)、銷毀回調(diào)、狀態(tài)改變回調(diào)和消息回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用系統(tǒng)中應(yīng)用程序調(diào)用交互管理模塊提供的發(fā)布對象應(yīng)用程序接口 API時,立即觸發(fā)發(fā)現(xiàn)回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用系統(tǒng)應(yīng)用程序調(diào)用交互管理模塊提供的取消對象發(fā)布應(yīng)用程序接口 API時,立即觸發(fā)銷毀回調(diào);當(dāng)虛擬試驗(yàn)應(yīng)用程序調(diào)用交互管理模塊提供的對象更新應(yīng)用程序接口 API時,且應(yīng)用程序調(diào)用喚醒回調(diào)應(yīng)用程序接口 API時,觸發(fā)狀態(tài)改變回調(diào);當(dāng)事件通道接收到消息時,立即觸發(fā)消息回調(diào)。
全文摘要
一種基于TAO的虛擬試驗(yàn)中間件系統(tǒng),包括時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊及應(yīng)用程序接口API;時間推進(jìn)模塊、運(yùn)行管理模塊、交互管理模塊、回調(diào)管理模塊均通過事件通道傳送數(shù)據(jù),所述事件通道是指TAO的ORB中的事件通道對象。本發(fā)明解決了虛擬試驗(yàn)系統(tǒng)執(zhí)行期間試驗(yàn)對象和試驗(yàn)資源間的實(shí)時通信和調(diào)度問題,實(shí)現(xiàn)虛擬試驗(yàn)應(yīng)用邏輯和通信解耦,使基于該中間件開發(fā)的虛擬試驗(yàn)系統(tǒng)具有互操作性、跨平臺等特性。
文檔編號G06F9/44GK102937895SQ201210433660
公開日2013年2月20日 申請日期2012年10月31日 優(yōu)先權(quán)日2012年10月31日
發(fā)明者廖建, 彭健, 郭愛民, 蔡斐華, 王國慶, 趙雯 申請人:中國運(yùn)載火箭技術(shù)研究院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
开原市| 新丰县| 霞浦县| 芜湖市| 潜江市| 合水县| 保康县| 靖西县| 土默特左旗| 甘泉县| 通辽市| 桐柏县| 高要市| 古田县| 新干县| 通海县| 阜宁县| 瑞安市| 六安市| 泊头市| 永登县| 奉节县| 榆树市| 新丰县| 都匀市| 若羌县| 门源| 德惠市| 乌鲁木齐市| 当涂县| 宣化县| 霍山县| 依兰县| 靖西县| 绥棱县| 神农架林区| 石嘴山市| 法库县| 宁海县| 石屏县| 仁布县|