專利名稱:一種構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于"平臺+構(gòu)件"軟件架構(gòu)技術(shù)領(lǐng)域,特別涉及一種構(gòu)件可以反向調(diào)
用平臺,以及構(gòu)件間進行"類組播"通信的方法。
背景技術(shù):
"平臺+構(gòu)件"的軟件架構(gòu)是基于"平臺"的開發(fā)和基于"構(gòu)件"的開發(fā)CBD 二者的有機結(jié)合。在這種系統(tǒng)架構(gòu)中,"平臺"通常將系統(tǒng)的通用基礎(chǔ)功能進行集成,并提供統(tǒng)一的集成框架;而"構(gòu)件"提供某方面特定的或?qū)I(yè)性功能。"構(gòu)件"通過"平臺"提供的統(tǒng)一集成框架集成到"平臺"上,與"平臺" 一起構(gòu)成一個整體的應(yīng)用系統(tǒng)。這種傳統(tǒng)意義上的"平臺+構(gòu)件"系統(tǒng)架構(gòu)可以用圖l來說明。 在這種傳統(tǒng)意義上的系統(tǒng)架構(gòu)中,構(gòu)件和平臺之間功能和數(shù)據(jù)交互一般存在兩種方式 —種是,領(lǐng)域平臺調(diào)用構(gòu)件的功能函數(shù)來完成某些特定的任務(wù)或計算,而構(gòu)件一般是不能反向調(diào)用平臺的計算服務(wù)的,即平臺的計算功能是很難暴露給構(gòu)件使用的,如圖2所示。這種情形下,平臺是一個可執(zhí)行程序且不具有二次開發(fā)功能和接口 ,而構(gòu)件是集成到平臺上運行的動態(tài)鏈接庫。 另一種是,平臺具有二次開發(fā)功能,即除了上述平臺調(diào)用構(gòu)件功能之外,平臺還提供一系列開發(fā)包(一般為動態(tài)鏈接庫DLL),第三方(即開發(fā)用戶)可以使用平臺開發(fā)包提供的基礎(chǔ)功能來開發(fā)應(yīng)用系統(tǒng)。此時,雖然調(diào)用平臺開發(fā)包功能的可以是構(gòu)件也可以是某種程序片段,但用戶開發(fā)的應(yīng)用系統(tǒng)最終是一個與平臺獨立的可執(zhí)行程序EXE,而不是集成到平臺上執(zhí)行的動態(tài)鏈接庫。"平臺+構(gòu)件"的這種模式,是目前最為流行的軟件開發(fā)方式,如科學(xué)計算領(lǐng)域的MATLAB。這種具有二次開發(fā)能力的"平臺+構(gòu)件"架構(gòu)模式的系統(tǒng)結(jié)構(gòu)如圖3所示。 上述兩種系統(tǒng)結(jié)構(gòu)是"平臺+構(gòu)件"架構(gòu)模式系統(tǒng)一般的表現(xiàn)形式,即傳統(tǒng)意義上的基于平臺的開發(fā)和基于構(gòu)件的開發(fā)模式。第一種模式中,開發(fā)的構(gòu)件和平臺集成在一起構(gòu)成一個完整的應(yīng)用系統(tǒng);而第二種模式中,基于平臺開發(fā)的應(yīng)用系統(tǒng)獨立于平臺運行。
第一種模式中,平臺其實不具有二次開發(fā)能力,因此只能平臺調(diào)用構(gòu)件的功能。這種模式帶來的優(yōu)點是系統(tǒng)具有統(tǒng)一的集成框架、操作界面和使用風(fēng)格,集成也相對簡單。但其缺點是由于平臺不提供二次能力,因此構(gòu)件不能調(diào)用平臺上的基礎(chǔ)功能,對于那些需要類似于平臺的基礎(chǔ)和通用功能的構(gòu)件來說,這是很大的缺陷。這種缺陷帶來的不僅僅是構(gòu)件對基礎(chǔ)功能和某些算法的重復(fù)開發(fā),如果構(gòu)件對平臺的基礎(chǔ)功能存在依賴關(guān)系(即構(gòu)件功能的執(zhí)行需要平臺提供上下文環(huán)境),那么此時構(gòu)件與平臺的互動將變得很困難。這種情況下,如果由于依賴關(guān)系而構(gòu)件需要調(diào)用或啟動平臺的某項功能(或服務(wù)),一般是通過數(shù)據(jù)庫、文件或消息機制來完成。如,構(gòu)件向數(shù)據(jù)庫寫一個"平臺調(diào)用地圖"的要求,而平臺需要通過某種輪詢機制來訪問數(shù)據(jù)庫以獲得"調(diào)用地圖"的要求。但這種機制的前提是構(gòu)件和平臺之間必須事先存在某種"契約",即平臺如何解析數(shù)據(jù)庫記錄的約定。文件方式和消息機制也同樣需要這種"契約"。這種"契約"方式雖然能解決一定的問題,但"契約"的約定往往很難,且效率很低(如數(shù)據(jù)庫訪問、文件讀取效率都比較低,輪詢機制有時對系統(tǒng)資源開銷較大)。因此,總體而言,由于平臺不提供二次開發(fā)功能接口,而帶來系統(tǒng)的可擴展性比較差。 第二種模式中,平臺提供二次開發(fā)功能接口,從某種程度上克服了第一種模式的不足,但帶來的問題是由于沒有統(tǒng)一的集成框架和系統(tǒng)操作方式,因此開發(fā)出來的系統(tǒng)在集成性、可互操作性、可擴展性、使用風(fēng)格和界面的規(guī)范性以及維護性等方面存在嚴(yán)重不足。另外,如果一旦平臺開發(fā)包依賴于平臺的某種服務(wù)(即開發(fā)包動態(tài)庫中某些服務(wù)其實是由平臺來提供的,而不是在開發(fā)包來完成的,那些包含許多計算量比較大而相互依賴的基礎(chǔ)功能的平臺往往會將這些基礎(chǔ)功能以服務(wù)的形式提供,而不是將其放入開發(fā)包中,這樣開發(fā)包就會"瘦"許多,否則開發(fā)包過大就會造成開發(fā)困難或運行時開銷過大。如系統(tǒng)動力學(xué)計算平臺Adams就是這樣一種開發(fā)模式),那么在運行應(yīng)用系統(tǒng)的同時也必須運行平臺,這樣就可能存在不必要的系統(tǒng)開銷(因為許多情況下,平臺的服務(wù)是不需要的。雖然可以通過人工的方式來啟動和關(guān)閉平臺,但由于我們難以確定系統(tǒng)需要平臺服務(wù)的時機,因此最好將平臺一直處于運行狀態(tài))。 另外,還有一種情況是上述兩種模式都無能為力的,即一個系統(tǒng)的多個構(gòu)件需要同時接收外部系統(tǒng)(或其它網(wǎng)絡(luò)節(jié)點上的系統(tǒng)或構(gòu)件)的一個消息或數(shù)據(jù)。這就是所謂的"類組播"通信。"類組播"通信,即一個應(yīng)用程序內(nèi)的一組構(gòu)件同時接收來自另一個網(wǎng)絡(luò)節(jié)點上應(yīng)用程序(或其構(gòu)件)的同一個數(shù)據(jù)包,與一般意義上的網(wǎng)絡(luò)節(jié)點間的組播通信有著完全不同的機理和技術(shù)基礎(chǔ)。但如果把前者的應(yīng)用程序比作后者的網(wǎng)絡(luò),前者的構(gòu)件比作后者分布在節(jié)點上的應(yīng)用程序,那么前者與后者有著相似的組播通信效果,因此我們稱之為"類組播"通信。"類組播"通信與網(wǎng)絡(luò)組播通信有著同樣的需求,即減少網(wǎng)絡(luò)流量提高網(wǎng)絡(luò)通信效率。如果把一個構(gòu)件當(dāng)作一個應(yīng)用系統(tǒng)來看,構(gòu)件與應(yīng)用系統(tǒng)一樣,即多個構(gòu)件接收同一個數(shù)據(jù)包的情形是大量存在的。
發(fā)明內(nèi)容
( — )發(fā)明目的 本發(fā)明的目的是針對"平臺+構(gòu)件"架構(gòu)模式下傳統(tǒng)的二次開發(fā)方法存在的缺陷
和不足,提出一種構(gòu)件反向調(diào)用平臺及構(gòu)件間"類組播"通信的方法,并基于該方法提出一種嶄新的基于"平臺"的軟件二次開發(fā)模式。
發(fā)明內(nèi)容
—種構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,其中,構(gòu)件通過平臺中的二次開發(fā)代理RDA反向調(diào)用平臺功能或平臺中構(gòu)件的功能,所述二次開發(fā)代理RDA包括COM對象、COM對象接口及其智能指針、功能代理和通信代理,該方法包括以下步驟
S1 :構(gòu)件通過RDA提供的COM接口智能指針調(diào)用RDA的COM對象;
S2 :C0M對象響應(yīng)COM接口智能指針的功能調(diào)用請求; S3 :COM對象通過功能代理調(diào)用平臺功能、平臺中構(gòu)件的功能或另一個平臺中構(gòu)
件的功能,所述功能代理包含平臺功能接口或平臺中構(gòu)件的功能接口。
其中,所述步驟Sl前包括步驟
5
構(gòu)件獲取所述平臺的COM接口智能指針。 其中,所述步驟S3中,COM對象通過功能代理調(diào)用平臺中構(gòu)件功能或另一個平臺 中構(gòu)件的功能時,構(gòu)件通過二次開發(fā)代理RDA向平臺中的或另一個平臺中的多個構(gòu)件同時 發(fā)送功能調(diào)用請求或交互數(shù)據(jù),具體包括以下步驟 S301 :當(dāng)構(gòu)件請求功能調(diào)用或發(fā)送數(shù)據(jù)時,構(gòu)件將功能調(diào)用請求或交互數(shù)據(jù)發(fā)送 到平臺中的或網(wǎng)絡(luò)上另一個平臺中的通信代理處; S302 :請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件所在平臺的RDA內(nèi)的事件連接點響應(yīng)通信 代理的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù); S303 :請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件內(nèi)的監(jiān)聽器與事件連接點建立連接,監(jiān)聽 事件連接點并獲取所述數(shù)據(jù)或響應(yīng)功能調(diào)用。
其中,所述步驟S3前包括步驟 所述功能代理封裝平臺功能接口和構(gòu)件功能的接口 ,實現(xiàn)平臺功能和構(gòu)件功能在 RDA內(nèi)的映射。 —種基于上述的基于構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的系統(tǒng),包 括 COM調(diào)用模塊,構(gòu)件通過RDA提供的COM接口智能指針調(diào)用RDA的COM對象;
COM對象模塊,用于響應(yīng)COM接口智能指針的功能調(diào)用請求; 功能映射模塊,用于COM對象通過功能代理調(diào)用平臺功能、平臺中構(gòu)件的功能或
另一個平臺中構(gòu)件的功能。
其中,該系統(tǒng)還包括 智能指針獲取模塊,用于構(gòu)件獲取所述平臺的COM接口智能指針。
其中,功能映射模塊中COM對象通過功能代理調(diào)用平臺中構(gòu)件功能或另一個平臺 中構(gòu)件的功能時,構(gòu)件通過二次開發(fā)代理RDA向平臺中或另一個平臺中多個構(gòu)件同時請求 功能調(diào)用或交互數(shù)據(jù),具體包括 通信代理模塊,用于當(dāng)構(gòu)件請求功能調(diào)用或發(fā)送數(shù)據(jù)時,構(gòu)件將功能調(diào)用請求或 交互數(shù)據(jù)發(fā)送到平臺中的或網(wǎng)絡(luò)上另一個平臺中的通信代理處; 通信代理回調(diào)服務(wù)模塊,用于請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件所在平臺的RDA內(nèi) 的事件連接點響應(yīng)通信代理的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù);
事件監(jiān)聽模塊,用于請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件內(nèi)的監(jiān)聽器與事件連接點建 立連接,監(jiān)聽事件連接點并獲取所述數(shù)據(jù)或響應(yīng)功能調(diào)用。
其中,該系統(tǒng)還包括 功能代理模塊,用于封裝平臺功能接口和構(gòu)件功能的接口,實現(xiàn)平臺功能和構(gòu)件 功能在RDA內(nèi)的映射。
(三)有益效果 本發(fā)明所述構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法具有如下有益效果 [OO39] (1)通過構(gòu)件(動態(tài)鏈接庫)對平臺(可執(zhí)行程序)功能的反向調(diào)用機制,很容 易將平臺中的基礎(chǔ)功能暴露給構(gòu)件調(diào)用,提供了一種嶄新的基于"平臺"的軟件二次開發(fā) 模式;構(gòu)件無需對平臺基礎(chǔ)功能進行重復(fù)開發(fā),從而實現(xiàn)軟件最大程度的復(fù)用,提高開發(fā)效 率;構(gòu)件與平臺之間的交互由于采用COM對象智能指針機制的進程內(nèi)通信,因此比傳統(tǒng)的
6通過數(shù)據(jù)庫或文件的數(shù)據(jù)交換機制效率更高更靈活;構(gòu)件與平臺之間由于采用了面向接口的功能調(diào)用機制,比傳統(tǒng)的面向"契約"的機制更加符合軟件開發(fā)習(xí)慣,提高系統(tǒng)集成靈活性降低開發(fā)難度。 (2)通過構(gòu)件間的"類組播"通信機制,多個構(gòu)件可以同時接收外部系統(tǒng)(或其它網(wǎng)絡(luò)節(jié)點上的系統(tǒng)或構(gòu)件)的一個消息或數(shù)據(jù),為基于"平臺+構(gòu)件"架構(gòu)模式的軟件提供了一種嶄新的構(gòu)件交互模式,解決了許多"平臺+構(gòu)件"的應(yīng)用系統(tǒng)構(gòu)件間"類組播"交互的實際需求,并可以降低基于"平臺+構(gòu)件"系統(tǒng)在構(gòu)件間通信時的網(wǎng)絡(luò)傳輸量,而且不需要網(wǎng)絡(luò)組播通信所謂的組播策略和算法,因此該"類組播"通信機制使用十分方便而靈活。
(3)通過平臺提供的統(tǒng)一通信機制和交互接口,實現(xiàn)了平臺或構(gòu)件之間統(tǒng)一的互操作機制,保證了基于平臺開發(fā)的軟件系統(tǒng)之間的互操作性;通過平臺提供的統(tǒng)一集成框架,不僅提高系統(tǒng)的集成性,提高開發(fā)集成的效率,還可實現(xiàn)構(gòu)件與平臺的集成運行,而無需構(gòu)件與平臺分屬于不同的可執(zhí)行程序而獨立運行多個進程,從而提高系統(tǒng)運行效率,降低系統(tǒng)的運行成本;由于構(gòu)件集成到平臺上構(gòu)成一個完整的應(yīng)用系統(tǒng),平臺提供統(tǒng)一的集成框架和操作界面及操作方式,一次相比傳統(tǒng)的基于動態(tài)鏈接庫(DLL)的二次開發(fā)模式而言,使開發(fā)的應(yīng)用系統(tǒng)操作界面和風(fēng)格更加規(guī)范、更容易安裝維護、擴展性更強。
圖1是傳統(tǒng)意義上"平臺+構(gòu)件"架構(gòu)模式的應(yīng)用系統(tǒng)結(jié)構(gòu);
圖2是平臺不具備二次開發(fā)能力的"平臺+構(gòu)件"系統(tǒng)基本結(jié)構(gòu);
圖3是傳統(tǒng)的平臺具有二次開發(fā)能力的"平臺+構(gòu)件"系統(tǒng)基本結(jié)構(gòu);
圖4是基于本發(fā)明的"平臺+構(gòu)件"架構(gòu)系統(tǒng)中構(gòu)件與平臺雙向調(diào)用原理 圖5是根據(jù)本發(fā)明的基于"平臺+構(gòu)件"架構(gòu)系統(tǒng)的構(gòu)件反向調(diào)用平臺的方法中構(gòu)件反向調(diào)用平臺及平臺中構(gòu)件功能的原理圖; 圖6是根據(jù)本發(fā)明的基于"平臺+構(gòu)件"架構(gòu)系統(tǒng)的構(gòu)件反向調(diào)用平臺的方法中構(gòu)件反向調(diào)用平臺及平臺中構(gòu)件功能時序圖; 圖7是根據(jù)本發(fā)明的基于"平臺+構(gòu)件"架構(gòu)系統(tǒng)的構(gòu)件反向調(diào)用平臺的方法的"類組播"通信示意圖,其中,虛線箭頭表示構(gòu)件反向調(diào)用平臺功能,實線箭頭表示網(wǎng)絡(luò)上系統(tǒng)1和系統(tǒng)2構(gòu)件間"類組播"通信,系統(tǒng)1和系統(tǒng)2都是基于"平臺+構(gòu)件"架構(gòu)的軟件系統(tǒng) 圖8是圖7中通信代理采用RTI通信代理的實例,其中,虛線箭頭表示構(gòu)件反向調(diào)用平臺功能,實線箭頭表示網(wǎng)絡(luò)上仿真系統(tǒng)1和仿真系統(tǒng)2構(gòu)件間"類組播"通信,仿真系統(tǒng)1和仿真系統(tǒng)2都是基于"平臺+構(gòu)件"架構(gòu)的軟件系統(tǒng); 圖9是根據(jù)本發(fā)明的基于"平臺+構(gòu)件"架構(gòu)系統(tǒng)的構(gòu)件反向調(diào)用平臺的方法的"類組播"通信中多個構(gòu)件同時接收外部系統(tǒng)的同一個數(shù)據(jù)示例圖。
具體實施例方式
本發(fā)明提出的構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,結(jié)合附圖和實施例說明如下。 如圖4所示,領(lǐng)域平臺中所有需要暴露的基礎(chǔ)功能和基本算法全部可以通過一個叫做"二次開發(fā)代理RDA (Re-Development Agent)"的模塊來代理,構(gòu)件通過RDA來調(diào)用平 臺的基礎(chǔ)功能和算法(平臺基礎(chǔ)功能可能由某些基礎(chǔ)構(gòu)件來實現(xiàn),也可能是位于平臺中的 代碼塊),實現(xiàn)平臺功能的二次開發(fā)。這樣,其實實現(xiàn)了構(gòu)件與平臺之間功能和算法的雙向 調(diào)用,即平臺不僅可以調(diào)用構(gòu)件的特定功能,構(gòu)件也可以調(diào)用平臺的基礎(chǔ)功能。平臺不僅提 供二次開發(fā)代理RDA,還提供統(tǒng)一的集成框架,構(gòu)件通過集成框架集成到平臺上與平臺構(gòu)成 一個有機的整體應(yīng)用系統(tǒng)。 如圖5所示,平臺中的RDA (Re-Development Agent)包括功能代理、一個COM對象, COM對象提供一個統(tǒng)一的COM接口以及該接口對應(yīng)的COM接口智能指針。構(gòu)件獲取COM接 口智能指針調(diào)用平臺中的COM對象,COM對象響應(yīng)COM接口智能指針的功能調(diào)用請求并通 過調(diào)用RDA的功能代理進行功能映射來完成構(gòu)件對平臺功能或平臺中構(gòu)件的功能的反向 調(diào)用。RDA的功能代理是平臺內(nèi)基礎(chǔ)功能及平臺中構(gòu)件功能暴露給調(diào)用構(gòu)件的服務(wù)接口 ,該 功能代理和平臺的基礎(chǔ)功能以及平臺中構(gòu)件功能一一對應(yīng)。構(gòu)件獲取COM接口智能指針可 通過兩種方式,一是構(gòu)件導(dǎo)出一個函數(shù),平臺通過該導(dǎo)出函數(shù)將智能指針傳遞到構(gòu)件內(nèi);二 是構(gòu)件通過一個消息函數(shù)(平臺實現(xiàn)消息函數(shù),即平臺提供給所有構(gòu)件的接口形式相同的 導(dǎo)出函數(shù))來從平臺中獲取智能指針。 圖6所示,為構(gòu)件反向調(diào)用平臺功能的時序圖。過程1、2、3、4反映了構(gòu)件對平臺
一次功能調(diào)用的順序,5、6、7反映的是構(gòu)件間通信的過程。平臺功能實體指的是實現(xiàn)平臺基
礎(chǔ)功能的實際代碼,該代碼可能位于平臺(即屬于平臺功能)中,也有可能位于另外一個構(gòu)
件(即構(gòu)件通過RDA調(diào)用另外一個構(gòu)件的功能)中。而調(diào)用功能的構(gòu)件與功能實體可以位
于同一個平臺內(nèi),也可以位于不同的平臺內(nèi),平臺可以分布在不同的網(wǎng)絡(luò)節(jié)點上。 本發(fā)明采用"類組播"通信機制用來解決"平臺+構(gòu)件"架構(gòu)系統(tǒng)中構(gòu)件間的交互。
在構(gòu)件反向調(diào)用平臺中構(gòu)件功能時,存在多個構(gòu)件的交互,尤其是一個構(gòu)件通過二次開發(fā)
代理RDA向平臺內(nèi)或另一個平臺中多個構(gòu)件同時發(fā)送數(shù)據(jù)時,就需要進行"類組播"通信。
本發(fā)明中在RDA內(nèi)設(shè)置通信代理和COM對象事件連接點機制來實現(xiàn)"類組播"通信。如圖
7所示,在二次開發(fā)代理RDA內(nèi)建立一個COM對象事件連接點C和一個通信代理,C和通信
代理相關(guān)聯(lián),發(fā)送數(shù)據(jù)的構(gòu)件通過網(wǎng)絡(luò)通信將數(shù)據(jù)發(fā)送到通信代理處,事件連接點C響應(yīng)
通信代理的回調(diào)服務(wù),回調(diào)服務(wù)中包含要轉(zhuǎn)送的數(shù)據(jù)。在每個構(gòu)件中建立一個事件連接點C
的監(jiān)聽器,并與C建立連接,監(jiān)聽C的事件,從而通過連接點C響應(yīng)通信代理的回調(diào)服務(wù)獲
取數(shù)據(jù)。 實施例1 本實施例中,仿真系統(tǒng)l和仿真系統(tǒng)2都是基于本發(fā)明的"平臺+構(gòu)件"架構(gòu) 的軟件系統(tǒng)。在基于高層體系結(jié)構(gòu)HLA(High LevelArchitecture)的分布式交互仿真 中,位于某個成員內(nèi)的多個模型構(gòu)件需要訂購?fù)粋€交互數(shù)據(jù),而根據(jù)HLA運行支持系統(tǒng) RTI (Runtimelnfrastructure)的要求, 一個成員只能駐留一個RTI代理(RTIamb),這就意 味著成員中的某個模型構(gòu)件在請求功能調(diào)用或發(fā)送交互數(shù)據(jù)時,其功能調(diào)用或發(fā)送的交互 數(shù)據(jù)只能到達(dá)另一個成員的RTIamb處,然后通過RTIamb以某種機制再轉(zhuǎn)送到訂購該數(shù)據(jù) 的每個模型構(gòu)件,通過本發(fā)明的在RDA內(nèi)建立COM對象事件連接點的方法就能實現(xiàn)這種機 制,如圖8所示,仿真環(huán)境中的某個成員(仿真系統(tǒng)2)上的模型構(gòu)件(構(gòu)件0)向網(wǎng)絡(luò)上另 一個成員(仿真系統(tǒng)l)上的多個模型構(gòu)件(如構(gòu)件1、構(gòu)件2和構(gòu)件3)同時請求功能調(diào)用
8或發(fā)送交互數(shù)據(jù)時,仿真系統(tǒng)2的構(gòu)件0將功能調(diào)用請求或交互數(shù)據(jù)發(fā)送到仿真系統(tǒng)1的RTIamb處,仿真系統(tǒng)1的RDA內(nèi)的事件連接點C響應(yīng)RTIamb的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù),仿真系統(tǒng)1的模型構(gòu)件1、模型構(gòu)件2和模型構(gòu)件3內(nèi)的監(jiān)聽器與事件連接點C建立連接,監(jiān)聽事件連接點C,事件連接點C在響應(yīng)RTIamb回調(diào)服務(wù)的同時,將功能請求或交互數(shù)據(jù)同時轉(zhuǎn)發(fā)給構(gòu)件1、構(gòu)件2和構(gòu)件3的監(jiān)聽器,這樣構(gòu)件1、構(gòu)件2和構(gòu)件3就同時獲取到了所需要的交互數(shù)據(jù)或進行相應(yīng)的功能響應(yīng)。
在上述過程中,由于COM對象事件連接點會自動監(jiān)測與監(jiān)聽器的連接數(shù),因此發(fā)送方(仿真系統(tǒng)2)構(gòu)件只需要向需要數(shù)據(jù)的某個節(jié)點(仿真系統(tǒng)l)發(fā)送一個數(shù)據(jù)包,仿真系統(tǒng)l內(nèi)建立了監(jiān)聽器的所有構(gòu)件就可以同時接收這同一個數(shù)據(jù)包??梢姡@種"類組播"的目標(biāo)節(jié)點(構(gòu)件)數(shù)量由數(shù)據(jù)接收方(構(gòu)件)的監(jiān)聽器數(shù)量動態(tài)自動的決定,不存在網(wǎng)絡(luò)組播通信所謂的組播策略和算法問題,因此該"類組播"通信機制使用十分方便而靈活。例如位于同一個仿真節(jié)點上的水面艦艇實體和潛艇實體同時"訂購"岸上觀通站的敵情監(jiān)視信息,以評估本實體可能的敵方威脅。如圖9所示,為艦艇和潛艇同時"訂購"相同的觀通站信息的交互示意圖。這里,水面艦艇和潛艇實體的仿真模型分別由兩個構(gòu)件(如艦艇模型構(gòu)件和潛艇模型構(gòu)件)來實現(xiàn)。為了減少通信鏈路上的數(shù)據(jù)傳輸次數(shù),觀通站模型構(gòu)件將"公布"給艦艇和潛艇的監(jiān)視信息打為一個"數(shù)據(jù)包",通過信息戰(zhàn)仿真系統(tǒng)的通信代理RTIamb發(fā)送到艦艇構(gòu)件和潛艇構(gòu)件所處平臺(海戰(zhàn)仿真系統(tǒng))的RTIamb處,艦艇和潛艇構(gòu)件通過上述COM對象事件連接點機制的"類組播"通信來獲得該信息包并提取屬于本構(gòu)件需要的信息。 基于本發(fā)明的構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的系統(tǒng),包括COM調(diào)用模塊,構(gòu)件通過RDA提供的COM接口智能指針調(diào)用RDA的COM對象;COM對象模塊,用于響應(yīng)COM接口智能指針的功能調(diào)用請求;功能映射模塊,用于COM對象通過功能代理調(diào)用平臺功能、平臺中構(gòu)件的功能或另一個平臺中構(gòu)件的功能。其中,該系統(tǒng)還包括智能指針獲取模塊,用于構(gòu)件獲取所述平臺的COM接口智能指針。其中,功能映射模塊中COM對象通過功能代理調(diào)用平臺中構(gòu)件功能或另一個平臺中構(gòu)件的功能時,構(gòu)件通過二次開發(fā)代理RDA向平臺中或另一個平臺中多個構(gòu)件同時請求功能調(diào)用或交互數(shù)據(jù),具體包括通信代理模塊,用于當(dāng)構(gòu)件請求功能調(diào)用或發(fā)送數(shù)據(jù)時,構(gòu)件將功能調(diào)用請求或交互數(shù)據(jù)發(fā)送到平臺中的或網(wǎng)絡(luò)上另一個平臺中的通信代理處;通信代理回調(diào)服務(wù)模塊,用于請求數(shù)據(jù)或響應(yīng)
功能調(diào)用的構(gòu)件RDA內(nèi)的事件連接點響應(yīng)通信代理的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù);事件監(jiān)聽模塊,用于請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件內(nèi)的監(jiān)聽器與事件連接點建立連接,監(jiān)聽事件連接點并獲取所述數(shù)據(jù)或響應(yīng)功能調(diào)用。其中,該系統(tǒng)還包括功能代理模塊,用于封裝平臺功能接口和構(gòu)件功能的接口 ,實現(xiàn)平臺功能和構(gòu)件功能的在RDA內(nèi)的映射。 以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應(yīng)由權(quán)利要求限定。
9
權(quán)利要求
一種構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,其特征在于,構(gòu)件通過平臺中的二次開發(fā)代理RDA反向調(diào)用平臺功能或平臺中構(gòu)件的功能,所述二次開發(fā)代理RDA包括COM對象、COM對象接口及其智能指針、功能代理和通信代理,該方法包括以下步驟S1構(gòu)件通過RDA提供的COM接口智能指針調(diào)用RDA的COM對象;S2COM對象響應(yīng)COM接口智能指針的功能調(diào)用請求;S3COM對象通過功能代理調(diào)用平臺功能、平臺中構(gòu)件的功能或另一個平臺中構(gòu)件的功能,所述功能代理包含平臺功能接口或平臺中構(gòu)件的功能接口。
2. 如權(quán)利要求1所述的構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,其特征在于, 所述步驟SI前包括步驟構(gòu)件獲取所述平臺的COM接口智能指針。
3. 如權(quán)利要求1所述的構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,其特征在于, 所述步驟S3中,COM對象通過功能代理調(diào)用平臺中構(gòu)件功能或另一個平臺中構(gòu)件的功能 時,構(gòu)件通過二次開發(fā)代理RDA向平臺中的或另一個平臺中的多個構(gòu)件同時發(fā)送功能調(diào)用 請求或交互數(shù)據(jù),具體包括以下步驟5301 :當(dāng)構(gòu)件請求功能調(diào)用或發(fā)送數(shù)據(jù)時,構(gòu)件將功能調(diào)用請求或交互數(shù)據(jù)發(fā)送到平 臺中的或網(wǎng)絡(luò)上另一個平臺中的通信代理處;5302 :請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件所在平臺的RDA內(nèi)的事件連接點響應(yīng)通信代理 的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù);5303 :請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件內(nèi)的監(jiān)聽器與事件連接點建立連接,監(jiān)聽事件 連接點并獲取所述數(shù)據(jù)或響應(yīng)功能調(diào)用。
4. 如權(quán)利要求l-3任一所述的構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,其特征 在于,所述步驟S3前包括步驟所述功能代理封裝平臺功能接口和構(gòu)件功能的接口 ,實現(xiàn)平臺功能和構(gòu)件功能在RDA 內(nèi)的映射。
5. —種基于權(quán)利要求1所述的基于構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的 系統(tǒng),其特征在于,包括COM調(diào)用模塊,構(gòu)件通過RDA提供的COM接口智能指針調(diào)用RDA的COM對象; COM對象模塊,用于響應(yīng)COM接口智能指針的功能調(diào)用請求;功能映射模塊,用于COM對象通過功能代理調(diào)用平臺功能、平臺中構(gòu)件的功能或另一 個平臺中構(gòu)件的功能。
6. 如權(quán)利要求5所述的基于構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的系統(tǒng),其 特征在于,還包括智能指針獲取模塊,用于構(gòu)件獲取所述平臺的COM接口智能指針。
7. 如權(quán)利要求5所述的基于構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的系統(tǒng),其 特征在于,功能映射模塊中COM對象通過功能代理調(diào)用平臺中構(gòu)件功能或另一個平臺中構(gòu) 件的功能時,構(gòu)件通過二次開發(fā)代理RDA向平臺中或另一個平臺中多個構(gòu)件同時請求功能 調(diào)用或交互數(shù)據(jù),具體包括通信代理模塊,用于當(dāng)構(gòu)件請求功能調(diào)用或發(fā)送數(shù)據(jù)時,構(gòu)件將功能調(diào)用請求或交互 數(shù)據(jù)發(fā)送到平臺中的或網(wǎng)絡(luò)上另一個平臺中的通信代理處;通信代理回調(diào)服務(wù)模塊,用于請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件所在平臺的RDA內(nèi)的事件連接點響應(yīng)通信代理的回調(diào)服務(wù),所述回調(diào)服務(wù)包含所述的功能請求或交互數(shù)據(jù);事件監(jiān)聽模塊,用于請求數(shù)據(jù)或響應(yīng)功能調(diào)用的構(gòu)件內(nèi)的監(jiān)聽器與事件連接點建立連接,監(jiān)聽事件連接點并獲取所述數(shù)據(jù)或響應(yīng)功能調(diào)用。
8.如權(quán)利要求5-7所述的基于構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法的系統(tǒng),其特征在于,還包括功能代理模塊,用于封裝平臺功能接口和構(gòu)件功能的接口,實現(xiàn)平臺功能和構(gòu)件功能在RDA內(nèi)的映射。
全文摘要
本發(fā)明公開了一種構(gòu)件反向調(diào)用平臺及構(gòu)件間類組播通信的方法,構(gòu)件通過二次開發(fā)代理RDA反向調(diào)用平臺或平臺中構(gòu)件的功能,包括步驟構(gòu)件通過平臺提供的COM接口智能指針調(diào)用平臺中的COM對象;COM對象通過功能映射調(diào)用平臺或平臺中構(gòu)件的功能;構(gòu)件間的“類組播”通信,包括步驟發(fā)送數(shù)據(jù)的構(gòu)件將數(shù)據(jù)發(fā)送到通信代理處;RDA內(nèi)的事件連接點響應(yīng)通信代理的回調(diào)服務(wù);構(gòu)件內(nèi)的監(jiān)聽器監(jiān)聽事件連接點獲取回調(diào)服務(wù)中的數(shù)據(jù)?;谏鲜龇椒ǖ南到y(tǒng)包括COM調(diào)用模塊、COM對象模塊、功能代理模塊、通信代理模塊、通信代理回調(diào)服務(wù)模塊和事件監(jiān)聽模塊。本發(fā)明能提高開發(fā)效率、降低系統(tǒng)運行成本,“類組播”通信降低“平臺+構(gòu)件”系統(tǒng)在構(gòu)件間通信時的網(wǎng)絡(luò)傳輸量。
文檔編號G06F9/44GK101739255SQ20091024137
公開日2010年6月16日 申請日期2009年11月30日 優(yōu)先權(quán)日2009年11月30日
發(fā)明者葉東, 李元, 王永剛, 陳小青, 馬豐文, 馬亞平 申請人:馬亞平;李元