專利名稱:支持普適計(jì)算的構(gòu)件管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及構(gòu)件化軟件設(shè)計(jì),尤其涉及一種支持普適計(jì)算的構(gòu)件管理方法。
背景技術(shù):
在傳統(tǒng)的開發(fā)技術(shù)下,大規(guī)模的軟件往往會出現(xiàn)系統(tǒng)分析復(fù)雜,開發(fā)周期長,維護(hù)費(fèi)用增高及功能擴(kuò)展困難的問題。不僅如此,隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,軟件需要具有開放的系統(tǒng)結(jié)構(gòu)和跨越多個異構(gòu)平臺的能力,軟件如果嚴(yán)重依賴于操作系統(tǒng)和特定的網(wǎng)絡(luò)服務(wù),會導(dǎo)致應(yīng)用系統(tǒng)開放性很差。開發(fā)者為了適應(yīng)不同的應(yīng)用環(huán)境而不得不開發(fā)不同的代碼,這樣會出現(xiàn)大量的重復(fù)勞動,嚴(yán)重的影響著軟件生產(chǎn)效率和軟件質(zhì)量的提高。
構(gòu)件化技術(shù)的出現(xiàn)解決了長期困擾軟件工程界的種種難題。所謂軟件構(gòu)件指的是可以重用的軟件單元,它能夠被用來構(gòu)造其它軟件。它可以是被封裝的對象類、一些功能模塊、軟件框架、軟件系統(tǒng)模型、軟件文檔等等。軟件構(gòu)件不依靠于某一個系統(tǒng),可以被功能向上的構(gòu)件所替代,并且具有實(shí)際的功能意義。基于構(gòu)件化的軟件開發(fā),就是從構(gòu)件庫中選擇適用的構(gòu)件,通過構(gòu)件的組裝和控制來構(gòu)造應(yīng)用軟件。構(gòu)件化技術(shù)使得軟件具有良好的平臺兼容性、結(jié)構(gòu)開放性、規(guī)??勺冃?、系統(tǒng)可配置性以及代碼重用的能力。
從廣義上來說,構(gòu)件有如下的幾個基本特點(diǎn)。1、構(gòu)件是可獨(dú)立配置的單元,因此構(gòu)件必須自包容;2、構(gòu)件強(qiáng)調(diào)與環(huán)境和其它構(gòu)件的分離,因此構(gòu)件的實(shí)現(xiàn)是嚴(yán)格封裝的,外界沒機(jī)會或沒必要知道構(gòu)件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié);3、構(gòu)件可以在適當(dāng)?shù)沫h(huán)境中被復(fù)合使用,因此構(gòu)件需要提供清楚的接口規(guī)范,可以與環(huán)境交互;4、構(gòu)件不應(yīng)當(dāng)是持續(xù)的,即構(gòu)件沒有個體特有的屬性,理解為構(gòu)件不應(yīng)當(dāng)與自身副本區(qū)別。
從以上四個特點(diǎn)可以看出,構(gòu)件沿襲了對象的封裝特性,但同時并不局限在一個對象,其內(nèi)部可以封裝一個或多個類、原型對象甚至過程,結(jié)構(gòu)是靈活的。構(gòu)件突出了自包容和被包容的特性,構(gòu)件化對軟件開發(fā)的工程化是非常重要的,有了構(gòu)件才能通過構(gòu)件的組裝、互連,實(shí)現(xiàn)軟件的工程化開發(fā)。構(gòu)件化是一種前沿的軟件設(shè)計(jì)思想,對整個軟件行業(yè)的發(fā)展有著推動作用。如果回顧經(jīng)典的工業(yè)化革命,不難得出一些有益的啟示功能再復(fù)雜的產(chǎn)品都是由大量標(biāo)準(zhǔn)的零件組成,零件在生產(chǎn)線上裝配成一個成品,所有零件在成品中共同發(fā)揮作用。分工越細(xì)致、專業(yè)生產(chǎn)的程度越高,總體生產(chǎn)效率就越高。而構(gòu)件技術(shù)所扮演的角色就是把零件、生產(chǎn)線和裝配運(yùn)行的概念運(yùn)用在軟件工業(yè)中,可以預(yù)見,軟構(gòu)件技術(shù)是軟件產(chǎn)業(yè)化革命的必然發(fā)展趨勢。
“構(gòu)件化”可以說是跨世紀(jì)軟件技術(shù)發(fā)展的一個趨勢,它解決了傳統(tǒng)軟件難以重用、維護(hù)和更新、系統(tǒng)不易于用戶定制的缺點(diǎn)。雖然目前支持構(gòu)件化軟件技術(shù)的系統(tǒng)也不少,但還沒有統(tǒng)一的標(biāo)準(zhǔn)實(shí)施方案,每個公司設(shè)計(jì)構(gòu)件的方法都不一樣(如COM、JAVA),它們都主要是為了解決構(gòu)件的獨(dú)立性、高可重用性、移植性以及構(gòu)件的可維護(hù)性的問題。
計(jì)算機(jī)發(fā)展到今天,普適計(jì)算已經(jīng)由理想逐漸轉(zhuǎn)變成現(xiàn)實(shí)。隨著計(jì)算機(jī)科學(xué)的進(jìn)步,我們生活的空間中會充斥著越來越多的無線的嵌入式設(shè)備,如掌上電腦,BP機(jī)、車載智能設(shè)備、筆記本計(jì)算機(jī)、手表、智能卡、智能手機(jī)、機(jī)頂盒、POS銷售機(jī)、屏幕電話,它們的尺寸大小不一樣,提供的功能不一樣,存在的形式也不一樣。有的把一個類作為構(gòu)件,有的把一個服務(wù)作為構(gòu)件,有的甚至把好幾個應(yīng)用程序捆綁在一起作為構(gòu)件;這樣的局面就造成了構(gòu)件異構(gòu),使得構(gòu)件之間難以兼容。更令人頭疼的是,普適計(jì)算環(huán)境下的構(gòu)件還具有數(shù)目眾多、移動性強(qiáng)的特點(diǎn),某一個構(gòu)件可能隨時離開(或者進(jìn)入)某一個設(shè)備的“視線”,這就造成構(gòu)件難以管理。這些問題都是有待解決的。
普適計(jì)算軟件系統(tǒng)應(yīng)該滿足的四個要求1、有效利用活動空間普適計(jì)算的活動空間的含義非常廣泛;可以是一間臥室,也可以是一個庭院。各式的嵌入式設(shè)備必須與活動空間有機(jī)的融合在一起。比如說,在一間屋子里,嵌入式計(jì)算設(shè)備可以根據(jù)室內(nèi)溫度和亮度來控制是否應(yīng)該開啟暖氣和電燈;同樣環(huán)境的變化也可以引起嵌入式設(shè)備的功能變化。
2、對用戶透明用戶不必關(guān)心嵌入式計(jì)算設(shè)備的工作過程,而應(yīng)該是在不經(jīng)意中就能享受到各種優(yōu)質(zhì)服務(wù)。這就要求嵌入式設(shè)備能夠感知用戶的意圖,自動適應(yīng)各種可能的情況。
3、局部可測量性計(jì)算的活動空間和周圍環(huán)境有很密切的交互,但是可利用的網(wǎng)絡(luò)帶寬資源卻非常有限。因此當(dāng)一個嵌入式計(jì)算設(shè)備離開后,活動空間必須感知這各行為,切斷和這個設(shè)備的聯(lián)系;同樣當(dāng)一個計(jì)算設(shè)備進(jìn)入后,活動空間必須和這個新來的設(shè)備取得聯(lián)系。這樣做的目的在于能夠讓移動用戶減少與距離遠(yuǎn)的設(shè)備發(fā)生關(guān)聯(lián),盡量讓移動用戶與小范圍內(nèi)的設(shè)備有關(guān)聯(lián);從而保證計(jì)算資源的有效利用率。
4、對不平衡負(fù)載的屏蔽所處的環(huán)境不同,計(jì)算設(shè)備的數(shù)量也不同。在會議室、辦公室、實(shí)驗(yàn)室中,可能存在很多的嵌入式設(shè)備;而在一些信息相對閉塞、器材較少的地方,如草坪、花園、足球場里,計(jì)算設(shè)備就屈指可數(shù)。普適計(jì)算要求屏蔽掉這些不平衡的情況,給用戶提供統(tǒng)一的環(huán)境。
從軟件系統(tǒng)的角度來講,普適計(jì)算環(huán)境下,各種小型計(jì)算設(shè)備在位置不斷移動的過程中或在地理位置分布很廣的范圍內(nèi),在不穩(wěn)定的通信條件下實(shí)現(xiàn)聯(lián)機(jī)事務(wù)處理和企業(yè)核心數(shù)據(jù)訪問.這些小型計(jì)算設(shè)備,具有多種通信手段,如移動通信網(wǎng)絡(luò)、紅外、藍(lán)牙、衛(wèi)星,能與互聯(lián)網(wǎng)或企業(yè)內(nèi)部網(wǎng)相連,但這種連接不是固定的連接,而是間斷的連接。因此,普適計(jì)算學(xué)要新的軟件結(jié)構(gòu),使得用戶可以使用這些設(shè)備進(jìn)行復(fù)雜的聯(lián)機(jī)事務(wù)處理和信息訪問。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種支持普適計(jì)算的構(gòu)件管理方法。
1)除了一般構(gòu)件自身的封裝外,通過構(gòu)件容器對構(gòu)件進(jìn)行二次封裝,并提供構(gòu)件的運(yùn)行時環(huán)境,解決構(gòu)件粒度不統(tǒng)一的問題;2)通過構(gòu)件控制塊來管理構(gòu)件運(yùn)行時的信息,其中包含構(gòu)件描述信息和控制信息,每一個構(gòu)件都唯一對應(yīng)一個構(gòu)件控制塊,它是構(gòu)件動態(tài)性的集中反映,是系統(tǒng)對構(gòu)件進(jìn)行識別和控制的依據(jù);3)引入了構(gòu)件注冊器來記錄某種設(shè)備能感知到的所有構(gòu)件,實(shí)現(xiàn)構(gòu)件的動態(tài)注冊、替換、添加和刪除。
本發(fā)明的優(yōu)點(diǎn)是在構(gòu)件的基礎(chǔ)上進(jìn)一步封裝,從而支持普適計(jì)算環(huán)境下的高度異構(gòu)、高可移動性、高度透明性的特點(diǎn)。使得不同粒度、不同廠商的構(gòu)件也能夠很好的兼容;實(shí)現(xiàn)網(wǎng)絡(luò)構(gòu)的動態(tài)注冊、替換、添加和刪除。
圖1是構(gòu)件容器對構(gòu)件的封裝示意圖;圖2是構(gòu)件控制塊的結(jié)構(gòu)及舉例說明示意圖;圖3是構(gòu)件注冊器對構(gòu)件的管理示意圖;圖4是感知空間示意圖;圖5是訪問構(gòu)件過程的流程示意圖。
具體實(shí)施例方式
本發(fā)明是基于嶄新的軟件設(shè)計(jì)思想——面向構(gòu)件設(shè)計(jì)方法,在我們的設(shè)計(jì)中“一切都是構(gòu)件”。發(fā)明主要解決了兩個難題構(gòu)件的異構(gòu)問題、構(gòu)件的移動性問題。本發(fā)明的詳細(xì)描述如下支持普適計(jì)算的構(gòu)件管理系統(tǒng)軟件應(yīng)該解決一下關(guān)鍵問題1、發(fā)現(xiàn)機(jī)制當(dāng)用戶把一個新設(shè)備帶入一個空間或在已有的設(shè)備上采用新的構(gòu)件時,這種構(gòu)件和其它可用的構(gòu)件以及設(shè)備之間是如何相互地發(fā)現(xiàn)以及在它們之間需要進(jìn)行哪些交互。同時普適計(jì)算系統(tǒng)是一個逐漸擴(kuò)展的系統(tǒng),這個過程應(yīng)該不要求重新啟動系統(tǒng),或重寫已有代碼,這也是以發(fā)現(xiàn)機(jī)制作為基礎(chǔ)的。目前已經(jīng)有一些這方面的技術(shù)基礎(chǔ)。
2、自適應(yīng)普適計(jì)算系統(tǒng)中各種設(shè)備擁有的資源是不同的和變化的,從最小的系統(tǒng)到嵌入計(jì)算能力的物體,到可攜帶計(jì)算設(shè)備,再到基礎(chǔ)設(shè)施中的部件,它們在計(jì)算能力、存儲容量、電池容量、交互手段因素上都有著很大的差異;設(shè)備在不同的環(huán)境中移動時,可用的無線網(wǎng)絡(luò)的帶寬也是不同的。這就需要解決自適應(yīng)的問題。它包括內(nèi)容的轉(zhuǎn)化和交互界面的轉(zhuǎn)化兩部分。前者解決數(shù)據(jù)傳輸過程中因?yàn)橘Y源的限制而對數(shù)據(jù)做的處理;后者是因?yàn)樵O(shè)備的交互機(jī)制的不同,需要把同一個交互接口映射到不同的交互機(jī)制下完成。
3、對物理實(shí)體的管理因?yàn)樵谄者m計(jì)算系統(tǒng)中,物理世界中的物體都同時具有信息空間中的意義,普適計(jì)算的系統(tǒng)軟件就必須對這些物理實(shí)體具有一定的管理能力。普適計(jì)算的系統(tǒng)軟件就是一種物理空間的操作系統(tǒng),它與目前的操作系統(tǒng)的不同之處就是它需要把物理實(shí)體也管理起來。這里的管理有兩層含義把物理實(shí)體看作一種資源,需要建立對這些資源的位置、結(jié)構(gòu)、功能的表示,而且需要反應(yīng)動態(tài)的實(shí)際情況。這需要覺察上下文計(jì)算的支持。當(dāng)物理實(shí)體嵌入有傳感、計(jì)算、效應(yīng)能力時,必須提供對它們的高層接口,即相當(dāng)于傳統(tǒng)的驅(qū)動程序。
4、構(gòu)件間協(xié)調(diào)機(jī)制普適計(jì)算系統(tǒng)是一個分布的系統(tǒng),如何把各種分布的構(gòu)件之間紛繁復(fù)雜的互聯(lián)、通信、協(xié)作以一種統(tǒng)一和有機(jī)的方式組織!管理起來”而使系統(tǒng)展示出一個協(xié)調(diào)的行為和功能,這就是協(xié)調(diào)機(jī)制的作用。目前已有的各種分布式組件結(jié)構(gòu)可以認(rèn)為是一種協(xié)調(diào)機(jī)制,但它們直接用來支持普適計(jì)算系統(tǒng)是不合適的,因?yàn)橛脤ο髞沓橄笃者m計(jì)算中的構(gòu)件是不合適的。
如圖1所示,我們使用構(gòu)件容器(Vessel)來對組件進(jìn)行封裝。構(gòu)件容器為封裝在其中的構(gòu)件提供了運(yùn)行時所需要的環(huán)境,構(gòu)件在這個環(huán)境內(nèi)運(yùn)行,它的所有通信都是通過構(gòu)件容器來進(jìn)行的。構(gòu)件一旦被裝載進(jìn)了容器,那么對于外界來說就像被裝入硬盤盒的硬盤,只有其對外的接口可以被訪問,而且對于這些接口的訪問都必須要通過構(gòu)件容器來進(jìn)行。
構(gòu)件容器提供的運(yùn)行時所需要的環(huán)境包括在需要時激活構(gòu)件或者在一段時間內(nèi)不需要時鈍化構(gòu)件,從而保護(hù)有限的系統(tǒng)資源,如主內(nèi)存和CPU資源等等;為常用的構(gòu)件的各種服務(wù)接口提供一個適配層,該適配層避免了客戶程序通過直接向構(gòu)件請求服務(wù)帶來的麻煩和存在的安全隱患;為構(gòu)件提供一個回調(diào)的適配層,構(gòu)件容器可以通過這個回調(diào)層在感興趣的事件和消息發(fā)生時通知構(gòu)件;為客戶提供一些可以配置的構(gòu)件參數(shù),用以動態(tài)修改構(gòu)件的屬性。
構(gòu)件容器為包含在其中的構(gòu)件提供了一個構(gòu)件監(jiān)視器,用以完成對構(gòu)件生命周期策略的監(jiān)控。它負(fù)責(zé)其中包括以什么方式創(chuàng)建構(gòu)件,創(chuàng)建永久構(gòu)件還是臨時構(gòu)件,什么時候需要激活構(gòu)件,什么時候需要鈍化構(gòu)件,什么時候需要銷毀構(gòu)件;另外,客戶還可以通過監(jiān)視器提供的接口來告知構(gòu)件容器每種構(gòu)件的實(shí)例已經(jīng)不再需要了。
不同廠商生產(chǎn)的構(gòu)件的各異的,構(gòu)件被封裝成一個黑箱,外界不可能知道它的內(nèi)部實(shí)現(xiàn)情況。然而客戶在獲取構(gòu)件之前,必須獲得關(guān)于該構(gòu)件足夠多的信息,才能更有效的訪問它。為此我們引入了構(gòu)件控制塊CCB(ComponentControl Block)來提供和管理這些有用的信息。
如圖1所示,構(gòu)件控制塊與構(gòu)件是一一對應(yīng)的關(guān)系,每當(dāng)系統(tǒng)創(chuàng)建一個構(gòu)件,就會設(shè)置一個構(gòu)件控制塊,再利用構(gòu)件控制塊對構(gòu)件進(jìn)行管理和控制;同樣當(dāng)構(gòu)件被撤消時,系統(tǒng)就收回其構(gòu)件控制塊,構(gòu)件也隨之消亡。所以,構(gòu)件控制塊是構(gòu)件存在的惟一標(biāo)志。構(gòu)件控制塊的在構(gòu)件管理中的作用相當(dāng)于進(jìn)程控制塊PCB在進(jìn)程管理中所起的作用。
構(gòu)件和它的控制塊一起被封裝在構(gòu)件容器中。如圖2所示,構(gòu)件控制塊記錄了很多關(guān)于構(gòu)件的元信息,可以分為構(gòu)件描述信息和控制信息,其中包括構(gòu)件的標(biāo)志符,構(gòu)件的屬性,構(gòu)件的擁有者(網(wǎng)絡(luò)中的某個普適計(jì)算設(shè)備),構(gòu)件的創(chuàng)建時間,構(gòu)件的壽命,構(gòu)件的粒度(類級、服務(wù)級還是功能模塊級),構(gòu)件的存儲信息,構(gòu)件的功能描述,構(gòu)件的接口描述。我們把構(gòu)件和它的控制塊捆綁在一起,這樣不管是什么粒度什么功能的構(gòu)件都可以方便的進(jìn)行管理。
值得注意的是,構(gòu)件控制塊對元信息的描述必須采用廣泛使用的注釋語言和建模語言(即XML和UML),這可以使得構(gòu)件元信息對絕大多數(shù)系統(tǒng)是可識別的。我們甚至不必提前知道構(gòu)件是什么粒度,而只需要從構(gòu)件控制塊中讀出該構(gòu)件的具體信息,考察該構(gòu)件的是否滿足用戶的需要,構(gòu)件是否具有共享屬性,存儲空間能否容納該構(gòu)件的問題,然后根據(jù)構(gòu)件控制塊中對接口的描述訪問該構(gòu)件。同時還需要建立自適應(yīng)服務(wù)環(huán)境的系統(tǒng)管理配置構(gòu)件庫,完成構(gòu)件化嵌入式系統(tǒng)服務(wù)環(huán)境的應(yīng)激特性和動態(tài)重構(gòu)的要求,用統(tǒng)一的構(gòu)件接口和構(gòu)件服務(wù)模式滿足不同應(yīng)用個性的要求,將構(gòu)件組合成服務(wù)的具體細(xì)節(jié)屏蔽在服務(wù)環(huán)境之中,并且提供基本的構(gòu)件化的應(yīng)用零件,為構(gòu)件化的服務(wù)提供可以適應(yīng)環(huán)境與需求的個性及動態(tài)變化的應(yīng)激特性。
構(gòu)件容器、構(gòu)件監(jiān)視器以及構(gòu)件控制塊很好的解決了構(gòu)件的封裝、構(gòu)件的生命周期管理,以及構(gòu)件粒度不統(tǒng)一帶來的異構(gòu)的問題。接下來我們用構(gòu)件注冊器來解決的是構(gòu)件高度移動性帶來的問題。
普適計(jì)算對計(jì)算環(huán)境提出了新的定義和要求。人們對計(jì)算環(huán)境的理解將由個人計(jì)算機(jī)轉(zhuǎn)變?yōu)橐粋€物理空間,這個物理空間中有各種各樣的計(jì)算設(shè)備。我們把整個物理空間,而不是其中的單個設(shè)備看作一個計(jì)算系統(tǒng);它需要屏蔽掉了物理空間中各個設(shè)備的細(xì)節(jié),向上提供了標(biāo)準(zhǔn)程序接口,使得這個物理空間變成了一個能被感知的空間。我們設(shè)計(jì)的操作系統(tǒng)就是要對這個物理空間的資源進(jìn)行管理,使應(yīng)用程序能夠與物理空間進(jìn)行交互。我們將客觀存在的、有組織的、可擴(kuò)展的包含一定計(jì)算能力的空間叫做物理空間;將每一個普適計(jì)算設(shè)備所有可獲及的構(gòu)件所形成的空間叫做感知空間Aware Space,如圖4所示。
普適計(jì)算中的各種計(jì)算設(shè)備之間往往是通過無線方式來進(jìn)行通信的(比如紅外與藍(lán)牙等技術(shù)),這種通訊方式在很大程度上會受到通訊距離的限制。任何一個設(shè)備都有一定的感知空間(Aware Space),如圖4所示;設(shè)備無法感知到在感知空間以外的構(gòu)件。為此,我們引入了構(gòu)件注冊器CR(Component Recorder)來記錄某種設(shè)備可以感知到的所有構(gòu)件。支持網(wǎng)絡(luò)分布式環(huán)境的構(gòu)件化服務(wù)能夠充分利用網(wǎng)絡(luò)資源,利用重用代碼,獲得可動態(tài)組合的靈活的構(gòu)件化服務(wù),以較高的效率實(shí)現(xiàn)比較復(fù)雜的功能。
如圖3所示,構(gòu)件注冊器定期檢測感知空間中的構(gòu)件,始終保持可用構(gòu)件的最新記錄。每當(dāng)新構(gòu)件進(jìn)入感知空間一段時間之后,就會被檢測到;并且在構(gòu)件注冊器中會加入一條關(guān)于這個新構(gòu)件的記錄信息。同樣的道理,如果已經(jīng)登記的某個構(gòu)件從感知空間中離開,構(gòu)件注冊器定期檢測后發(fā)現(xiàn)構(gòu)件不復(fù)存在,就會把它的記錄刪除。
為了更加有效的管理構(gòu)件,構(gòu)件注冊器的記錄分為兩個部分,第一部分記錄該設(shè)備擁有的本地構(gòu)件,第二部分記錄感知空間中其它設(shè)備的構(gòu)件。本地?fù)碛械臉?gòu)件相對穩(wěn)定,由該設(shè)備自行管理;而網(wǎng)絡(luò)構(gòu)件的變動比較頻繁,設(shè)備對它只有使用權(quán)而沒有管理權(quán)。在系統(tǒng)初始化時,首先把本地構(gòu)件的所有記錄存放在構(gòu)件注冊器中;然后檢測感知空間中當(dāng)時所有的網(wǎng)絡(luò)構(gòu)件,也把它們的記錄加入到構(gòu)件注冊器中。在系統(tǒng)運(yùn)行時,本地構(gòu)件記錄的添加或者刪除是由該設(shè)備決定的,管理起來非常容易;而網(wǎng)絡(luò)構(gòu)件則需要定期進(jìn)行檢測是否存在、是否可用。
網(wǎng)絡(luò)構(gòu)件有三種狀態(tài)就緒狀態(tài)、活動狀態(tài)和僵死狀態(tài)。構(gòu)件動態(tài)注冊采用租借的方式,系統(tǒng)一旦發(fā)現(xiàn)某個網(wǎng)絡(luò)構(gòu)件后就確定一個租借期限,當(dāng)租借期限結(jié)束后,構(gòu)件注冊器判斷該網(wǎng)絡(luò)構(gòu)件是否仍然可用,從而確定下一次租借期限,在租借期間的構(gòu)件處于就緒狀態(tài),它隨時準(zhǔn)備被系統(tǒng)使用;當(dāng)系統(tǒng)需要調(diào)用網(wǎng)絡(luò)構(gòu)件完成某項(xiàng)任務(wù)的時候,這個構(gòu)件就由就緒狀態(tài)轉(zhuǎn)變?yōu)榛顒訝顟B(tài),構(gòu)件便開始了真正的工作;構(gòu)件把任務(wù)完成后,又將返回到就緒狀態(tài);當(dāng)網(wǎng)絡(luò)構(gòu)件被刪除,或者離開了系統(tǒng)可以感知到的空間,或者系統(tǒng)沒有足夠的權(quán)限訪問它,該構(gòu)件就處于僵死狀態(tài),僵死的構(gòu)件不能被系統(tǒng)調(diào)用。網(wǎng)絡(luò)構(gòu)件只有在活動狀態(tài)的時候才占用系統(tǒng)資源。
系統(tǒng)為了完成某個任務(wù),需要符合某些要求的構(gòu)件(比如說要求該構(gòu)件完成功能A AND構(gòu)件所需存儲空間小于B兆AND構(gòu)件的生命值大于C秒)。系統(tǒng)向CR提出要求,查找是否有能夠滿足這些要求的構(gòu)件。如果這樣的構(gòu)件不存在,則向系統(tǒng)返回空值;如果這樣的構(gòu)件存在并且唯一,則讀取構(gòu)件控制塊的完整信息,按照接口要求訪問構(gòu)件;如果這樣的構(gòu)件不止一個,則讀取所有這些滿足條件的構(gòu)件控制塊的完整信息,然后比較這些構(gòu)件的性能和網(wǎng)絡(luò)代價(本地構(gòu)件網(wǎng)絡(luò)代價為零),從而選出最佳構(gòu)件訪問之。
值得注意的是,由于我們的設(shè)計(jì)采用了“一切都是構(gòu)件”的思想,構(gòu)件注冊器構(gòu)件注冊器本身也是一個構(gòu)件,只不過它比較特殊,它是系統(tǒng)在初始化時就自動生成的,它是系統(tǒng)所必須擁有的一個構(gòu)件。這樣的設(shè)計(jì)大大方便了對構(gòu)件的管理,因?yàn)槌藰?gòu)件以外再也沒有別的東西。
實(shí)施例解析MPEG4編碼文件,并播放視頻流。這個例子中共有兩個可計(jì)算設(shè)備一臺跑在是Linux操作系統(tǒng)上的個人計(jì)算機(jī),一臺是跑在RT Linux上面的PDA;這兩個設(shè)備都配有藍(lán)牙接口,并且可以通過藍(lán)牙接口進(jìn)行相互之間的通訊。該例子一共設(shè)計(jì)了四個構(gòu)件解析MPEG4的構(gòu)件,顯示視頻的構(gòu)件,解析JPEG的構(gòu)件,顯示圖像的構(gòu)件;剛開始的時候,這四個構(gòu)件都在個人計(jì)算機(jī)上運(yùn)行。
第一步,在個人計(jì)算機(jī)上初始化上述四個構(gòu)件。其中解析MPEG4的構(gòu)件的初始化過程如下首先,申請一個構(gòu)件控制塊并且把構(gòu)件的各種元信息寫入它的構(gòu)件控制塊中,如圖2所示;然后,用構(gòu)件監(jiān)視器管理該構(gòu)件的生命周期策略;接下來,把構(gòu)件和它的控制塊、監(jiān)視器一起封裝到構(gòu)件容器中;最后,由構(gòu)件容器提供構(gòu)件的運(yùn)行環(huán)境,所有訪問都必須通過構(gòu)件容器進(jìn)行。其它三個構(gòu)件的初始化過程也基本相同。
第二步,我們把PDA逐漸靠近個人計(jì)算機(jī)。在一定距離范圍內(nèi),PDA和個人計(jì)算機(jī)就可以通過藍(lán)牙接口進(jìn)行通訊了。這時,PDA檢測到了個人計(jì)算機(jī)上面的四個構(gòu)件,并把它們的記錄存放到構(gòu)件注冊器上。構(gòu)件此時處于就緒狀態(tài),但并不占用PDA的存儲空間和計(jì)算資源。
第三步,PDA需要對MPEG4的文件進(jìn)行解碼,并且播放這個文件。這時搜索構(gòu)件注冊器中的構(gòu)件,查詢是否有能夠滿足要求的構(gòu)件。由于在第二步中,解析MPEG4的構(gòu)件和顯示視頻的構(gòu)件都已經(jīng)在構(gòu)件注冊器上登記,因此可以容易的找出這兩個構(gòu)件。接著,通過訪問這兩個構(gòu)件的構(gòu)件控制塊獲得足夠的信息包括構(gòu)件的功能、構(gòu)件的接口、構(gòu)件所占空間的大小。最后,PDA就可以利用這兩個構(gòu)件完成解碼和播放任務(wù)了。執(zhí)行任務(wù)時,構(gòu)件就由就緒狀態(tài)轉(zhuǎn)變?yōu)榛顒訝顟B(tài),將占用PDA的存儲空間和計(jì)算資源,如附圖5所示。
第四步,MPEG4的文件播放完以后,解析MPEG4的構(gòu)件和顯示視頻的構(gòu)件就要放棄系統(tǒng)資源,重新返回到就緒狀態(tài)。接下來,如果我們讓PDA再一次遠(yuǎn)離個人計(jì)算機(jī),超出了藍(lán)牙作用的范圍,上述四個構(gòu)件就不再可用了,將處于僵死狀態(tài),同樣也不占用PDA的存儲空間和計(jì)算資源。
權(quán)利要求
1.一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于1)除了構(gòu)件自身的封裝外,通過構(gòu)件容器對構(gòu)件進(jìn)行二次封裝,并提供構(gòu)件的運(yùn)行時環(huán)境,解決構(gòu)件粒度和接口不統(tǒng)一的問題;2)通過構(gòu)件控制塊來管理構(gòu)件運(yùn)行時的元信息,其中包含構(gòu)件描述信息和控制信息,每一個構(gòu)件都唯一對應(yīng)一個構(gòu)件控制塊,它是構(gòu)件動態(tài)性的集中反映,是系統(tǒng)對構(gòu)件進(jìn)行識別和控制的依據(jù);3)引入了構(gòu)件注冊器來記錄某種設(shè)備能感知到的所有構(gòu)件,實(shí)現(xiàn)構(gòu)件的動態(tài)注冊、替換、添加和刪除。
2.根據(jù)權(quán)利要求1所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的通過構(gòu)件容器對構(gòu)件進(jìn)行二次封裝構(gòu)件容器為封裝在其中的構(gòu)件提供了運(yùn)行時所需要的環(huán)境,構(gòu)件在這個環(huán)境內(nèi)運(yùn)行,它的所有通信都是通過構(gòu)件容器來進(jìn)行的;構(gòu)件一旦被裝載進(jìn)了容器,那么客戶端則只能通過構(gòu)件容器的對外接口來訪問構(gòu)件;在構(gòu)件容器中,還提供了構(gòu)件監(jiān)視器來完成對構(gòu)件生命周期策略的監(jiān)控。
3.根據(jù)權(quán)利要求1所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件控制塊來管理構(gòu)件運(yùn)行時的元信息,其中包含構(gòu)件描述信息和控制信息構(gòu)件控制塊與構(gòu)件是一一對應(yīng)的關(guān)系,每當(dāng)系統(tǒng)創(chuàng)建一個構(gòu)件,就會為構(gòu)件設(shè)置一個控制塊,利用它對構(gòu)件進(jìn)行管理和控制;同樣,當(dāng)構(gòu)件將被撤消時,系統(tǒng)就收回構(gòu)件控制塊,構(gòu)件也隨之消亡;構(gòu)件控制是構(gòu)件存在的惟一標(biāo)志;構(gòu)件控制塊的在構(gòu)件管理中的作用相當(dāng)于進(jìn)程控制塊在進(jìn)程管理中所起的作用;構(gòu)件信息的描述采用的是廣泛使用的注釋語言和建模語言,即XML和UML,這使得構(gòu)件信息對絕大多數(shù)系統(tǒng)是可識別的。
4.根據(jù)權(quán)利要求1所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件注冊器來記錄某種設(shè)備能感知到的所有構(gòu)件始終保持可用構(gòu)件的最新記錄;每當(dāng)新構(gòu)件進(jìn)入系統(tǒng)的感知空間一段時間之后,就會被檢測到;并且在注冊器中會加入一條關(guān)于這個新構(gòu)件的記錄信息;同樣的道理,如果已經(jīng)登記的某個構(gòu)件從系統(tǒng)的感知空間中離開,注冊器定期檢測后發(fā)現(xiàn)該構(gòu)件不復(fù)存在,就會把它的記錄刪除。
5.根據(jù)權(quán)利要求1或2所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的運(yùn)行時所需要的環(huán)境包括1)在需要時激活構(gòu)件或者在一段時間內(nèi)不需要時鈍化構(gòu)件,從而保護(hù)有限的系統(tǒng)資源,即主內(nèi)存和CPU資源;2)為常用的構(gòu)件的各種服務(wù)接口提供一個適配層,該適配層避免了客戶程序通過直接向構(gòu)件請求服務(wù)帶來的麻煩和存在的安全隱患;3)為構(gòu)件提供一個回調(diào)的適配層,構(gòu)件容器通過這個回調(diào)層在感興趣的事件和消息發(fā)生時通知構(gòu)件;4)為客戶提供可配置的構(gòu)件參數(shù),用以動態(tài)修改構(gòu)件的屬性。
6.根據(jù)權(quán)利要求2所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件監(jiān)視器來完成對構(gòu)件生命周期策略的監(jiān)控,其中包括以什么方式創(chuàng)建構(gòu)件,創(chuàng)建永久構(gòu)件還是臨時構(gòu)件,什么時候需要激活構(gòu)件,什么時候需要鈍化構(gòu)件,什么時候需要銷毀構(gòu)件;另外,客戶能夠通過監(jiān)視器提供的接口來告知構(gòu)件容器種構(gòu)件的實(shí)例已經(jīng)不再需要了。
7.根據(jù)權(quán)利要求1或3所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件描述信息和控制信息,其中包括構(gòu)件的標(biāo)志符、構(gòu)件的屬性、構(gòu)件的擁有者即網(wǎng)絡(luò)中的某個普適計(jì)算設(shè)備、構(gòu)件的創(chuàng)建時間、構(gòu)件的壽命、構(gòu)件的粒度,即是對象級、服務(wù)級、還是功能模塊級、構(gòu)件的存儲信息、構(gòu)件的功能描述、構(gòu)件的接口描述,我們把構(gòu)件和它的控制塊捆綁在一起,這樣不管是什么粒度什么功能的構(gòu)件都可以方便的進(jìn)行管理。
8.根據(jù)權(quán)利要求3所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件元信息的描述采用的是廣泛使用的注釋語言和建模語言,即XML和UML這使得構(gòu)件信息對絕大多數(shù)系統(tǒng)是可識別的;通過這些信息,我們甚至不必提前知道構(gòu)件是什么粒度,而只需要從構(gòu)件控制塊中讀出該構(gòu)件的具體信息,考察該構(gòu)件的是否滿足需要,構(gòu)件是否具有共享屬性,存儲空間能否容納該構(gòu)件問題,然后根據(jù)控制塊中對構(gòu)件接口的描述訪問該構(gòu)件。
9.根據(jù)權(quán)利要求4所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的構(gòu)件的最新記錄分為兩個部分第一部分記錄該設(shè)備擁有的本地構(gòu)件,第二部分記錄感知空間中其它設(shè)備的構(gòu)件情況;本地?fù)碛械臉?gòu)件相對穩(wěn)定,由該設(shè)備自行管理,而網(wǎng)絡(luò)構(gòu)件有三種狀態(tài),變動比較頻繁,設(shè)備對它只有使用權(quán)而沒有管理權(quán);在系統(tǒng)初始化時,首先把本地構(gòu)件的所有記錄存放在構(gòu)件注冊器中,然后檢測系統(tǒng)中當(dāng)時所有的網(wǎng)絡(luò)構(gòu)件,把它們的記錄也加入到構(gòu)件注冊器中;在系統(tǒng)運(yùn)行時,本地構(gòu)件記錄的添加或者刪除是由該設(shè)備決定的,管理起來非常容易,而網(wǎng)絡(luò)構(gòu)件則需要定期進(jìn)行檢測是否存在、是否可用。
10.根據(jù)權(quán)利要求4或9所述的一種支持普適計(jì)算的構(gòu)件管理方法,其特征在于所說的網(wǎng)絡(luò)構(gòu)件有三種狀態(tài)就緒狀態(tài)、活動狀態(tài)和僵死狀態(tài);構(gòu)件動態(tài)注冊采用租借的方式,系統(tǒng)一旦發(fā)現(xiàn)網(wǎng)絡(luò)中某個共享構(gòu)件后就確定一個租借期限,當(dāng)租借期限結(jié)束后,構(gòu)件注冊器判斷該網(wǎng)絡(luò)構(gòu)件是否仍然可用,從而確定下一次租借期限,在租借期間的構(gòu)件處于就緒狀態(tài),它隨時準(zhǔn)備被系統(tǒng)使用;當(dāng)系統(tǒng)需要調(diào)用網(wǎng)絡(luò)構(gòu)件完成某項(xiàng)任務(wù)的時候,這個構(gòu)件就由就緒狀態(tài)轉(zhuǎn)變?yōu)榛顒訝顟B(tài),構(gòu)件便開始了真正的工作;構(gòu)件把任務(wù)完成后,又將返回到就緒狀態(tài);當(dāng)網(wǎng)絡(luò)構(gòu)件被刪除,或者離開了系統(tǒng)可以感知到的空間,或者系統(tǒng)沒有足夠的權(quán)限訪問它,該構(gòu)件就處于僵死狀態(tài),僵死的構(gòu)件不能被系統(tǒng)調(diào)用。
全文摘要
本發(fā)明公開了一種支持普適計(jì)算的構(gòu)件管理方法。1) 除了一般構(gòu)件自身的封裝外,通過構(gòu)件容器對構(gòu)件進(jìn)行二次封裝,并提供構(gòu)件的運(yùn)行時環(huán)境,解決構(gòu)件粒度不統(tǒng)一的問題;2) 通過構(gòu)件控制塊來管理構(gòu)件運(yùn)行時的元信息,其中包含構(gòu)件描述信息和控制信息,每一個構(gòu)件都唯一對應(yīng)一個構(gòu)件控制塊,它是構(gòu)件動態(tài)性的集中反映,是系統(tǒng)對構(gòu)件進(jìn)行識別和控制的依據(jù);3) 引入了構(gòu)件注冊器來記錄某種設(shè)備能感知到的所有構(gòu)件,實(shí)現(xiàn)構(gòu)件的動態(tài)注冊、替換、添加和刪除。本發(fā)明的優(yōu)點(diǎn)是在構(gòu)件的基礎(chǔ)上進(jìn)一步封裝,從而支持普適計(jì)算環(huán)境下的高度異構(gòu)、高可移動性、高度透明性的特點(diǎn)。使得不同粒度、不同廠商的構(gòu)件也能夠很好的兼容;實(shí)現(xiàn)網(wǎng)絡(luò)構(gòu)的動態(tài)注冊、替換、添加和刪除。
文檔編號G06F9/46GK1581085SQ200410018438
公開日2005年2月16日 申請日期2004年5月15日 優(yōu)先權(quán)日2004年5月15日
發(fā)明者姜周, 陳文智, 吳斌 申請人:浙江大學(xué)