專利名稱:構件自描述封裝方法及運行的方法
技術領域:
本發(fā)明涉及一種構件的封裝及運行方法,尤其是一種能夠實現(xiàn)構件自描述、自解釋的封裝方法以及該構件的自滾動、動態(tài)升級的運行方法。屬于計算機技術領域。
背景技術:
構件化技術-COM(Component Object Model)由微軟公司提出,在COM技術中強調構件的自描述,強調接口數(shù)據(jù)類型的自描述,以便于從二進制級上把接口與實現(xiàn)分離,并達到接口可以跨地址空間(或者說可以遠程化)的目的。構件及接口數(shù)據(jù)的自描述是COM的理論基礎及立足點之一。
但在現(xiàn)有的具體設計和實現(xiàn)上,迄今為止,現(xiàn)有的構件技術MSCOM并未完全貫徹這種思想。其主要體現(xiàn)包括以下幾點1、在MSCOM中,構件的一些相關運行信息都存放在系統(tǒng)的全局數(shù)據(jù)庫一注冊表中,構件在能夠正確運行之前,必須進行注冊。而構件的相關運行信息本身就應該是構件自描述的內容之一。
2、MSCOM對構件導出接口的描述方法之一是使用類型庫(Type Library)元數(shù)據(jù)(Meta Data,用于描述構件信息的數(shù)據(jù)),類型庫本身是跟構件的DLL(Dynamic Link Library)文件打包在一起的。但類型庫信息卻不是由構件自身來來解釋,而是靠系統(tǒng)程序OLE32.DLL來提取和解釋,這也不符合構件的自描述思想。
3、大多數(shù)情況下,一個構件會使用到另一些構件的某種功能,也就是說構件之間存在相互的依存關系。MSCOM中,構件只有關于自身接口(或者說功能)的自描述,而缺少對構件依賴關系的自描述。因此無法實現(xiàn)構件的滾動運行和動態(tài)升級,而在網(wǎng)絡計算時代的今天,正確的構件依賴關系是構件滾動運行、動態(tài)升級的基礎。
一方面,在COM構件的TypeLib中,描述了構件自身支持的接口、方法等導出信息,這些接口方法可以被構件客戶調用。另一方面,一個構件運行通常還依賴于其它構件,也就是說,構件程序本身也可能是其它構件程序的客戶。
在MSCOM,構件程序沒有關于自身的導入信息的描述,構件依賴關系是建立在全局的注冊表之上,而注冊表信息的增加和修改是通過構件的安裝程序來完成的。這種做法的弊病是1、所有構件的運行都依賴于注冊表,系統(tǒng)在能夠運行前必須進行完整的安裝,并且經(jīng)過多個軟件的反復安裝、卸載后,系統(tǒng)注冊表會變成很龐大并且難以維護。
2、由于注冊表是一個全局數(shù)據(jù)庫,訪問權限不容易控制,注冊表容易成為病毒、黑客軟件的入侵點。舉一個簡單的例子一個構件類CSample在注冊表中對應的路徑是C\Sample\sample.dll,黑客軟件在取得了注冊表的修改權后,可以修改這個路徑,使它指向自己的一個程序,這樣CSample的客戶程序在使用構件類CSample時將運行黑客軟件指定的程序,而不是sample.dll構件。
3、構件間的依賴關系建立在完整安裝的基礎上,如A構件依賴于B,當B沒有安裝到系統(tǒng)中時,由于系統(tǒng)沒有任何關于B構件的信息,這時A構件也就不能正確運行了。
發(fā)明內容
本發(fā)明的主要目的在于提供一種構件自描述封裝方法及運行的方法,它在構件封裝了描述了構件自身支持的接口、方法等導出信息,使構件具有自描述以及自解釋的能力,將接口與實現(xiàn)分離,實現(xiàn)構件接口跨地址空間、遠程化。
本發(fā)明的還一目的在于提供一種構件自描述封裝方法及運行的方法,它封裝了構件導入信息,實現(xiàn)了動態(tài)升級、自滾動運行,大大節(jié)省了本地存儲資源,另外在系統(tǒng)運行前,不必經(jīng)過多個軟件的完整安裝,維護容易。
本發(fā)明的又一目的在于提供一種構件自描述封裝方法及運行的方法,它更具有運行的安全性和靈活性,也使系統(tǒng)對本地資源的依賴大大減輕。
本發(fā)明是根據(jù)如下技術方案實現(xiàn)的一種構件自描述封裝的方法,在構件中封裝描述構件的類信息和導入信息,該類信息和導入信息來源于預先編譯文件,其中,類信息包括描述構件導出的接口及方法列表,并且類信息作為資源數(shù)據(jù)打包設置在構件文件的資源段中,導入信息包括構件所使用到的其它構件的統(tǒng)一資源命名、版本號、更新周期等。
根據(jù)類信息自動生成的構件源程序中,包括取構件類對象的標準導出函數(shù)的實現(xiàn)代碼,實現(xiàn)代碼中除了完成標準的取構件類對象的語義外,還支持使用一系統(tǒng)預定義的特殊類標識來獲取構件的類信息。
當系統(tǒng)或構件客戶需要使用類信息時,用系統(tǒng)預定義的特殊類標識作為輸入?yún)?shù),調用構件的取類對象函數(shù)來取類信息。
另外,構件中封裝有導入信息描述,該信息用于描述構件對其它構件的依賴關系。導入信息的描述包括構件的統(tǒng)一資源命名、版本號、類信息的版本號、修改日期、更新周期,在構件升級或錯誤恢復時使用。通過導入信息預處理器生成構件的導入信息。
進一步地,預處理器工作步驟為步驟1首先讀入編譯源程序;步驟2取一條語句并做語法分析,判斷是否為導入,如果是,則裝載該語句指定的構件文件,如果不是,則到步驟3步驟3把當前語句寫入到臨時的源程序中,回到步驟2;
步驟4裝載構件文件的類信息,如果成功,則到步驟5;否則到步驟3;步驟5從構件資源段的類信息中取出構件的統(tǒng)一資源命名以及版本、最后修改日期、更新周期信息,添加到當前程序的導入信息中;步驟6根據(jù)導入構件的類信息生成有關該構件定義的頭文件,把導入語句修改為頭文件包含語句,寫入臨時源程序中。
步驟7把當前程序的導入信息寫到導入信息文件中。
反復執(zhí)行上述步驟,直到對源程序的語法分析結束,以便對源程序中的每一個導入語句,預處理器都生成一關于導入構件定義的頭文件。
預處理器生成的構件的頭文件中,包括構件的類標識聲明,類標識由全球唯一標識符(GUID)與統(tǒng)一資源命名(URN)組成,導入構件的統(tǒng)一資源命名作為類標識的一個部分,與類標識一起被聲明。
導入信息預處理器生成的導入信息文件包含了構件導入信息的完整描述,包括所使用到的其它構件的統(tǒng)一資源命名、最后修改日期、更新周期等信息,被打包在構件文件的資源段中。
基于上述權利要求完成的自描述封裝構件,本發(fā)明的運行方法,構件客戶運行時使用指定構件類標識,系統(tǒng)自動根據(jù)類標識中的統(tǒng)一資源名稱找到構件文件,并進行裝載。裝載構件文件后,系統(tǒng)根據(jù)類標識中的全球唯一標識符找到相應的構件類。
具體地,系統(tǒng)根據(jù)統(tǒng)一資源名稱裝載構件的過程為步驟1構件客戶通過指定類標識創(chuàng)建構件對象;步驟2系統(tǒng)從類標識中提取出構件的統(tǒng)一資源命名;步驟3使用統(tǒng)一資源命名查找構件程序是否存在,如果存在,則轉到步驟5;否則到步驟4;
步驟4從構件客戶資源段中提取除統(tǒng)一資源命名之外的導入信息,根據(jù)統(tǒng)一資源命名、版本號、更新周期信息從網(wǎng)絡上自動下載構件程序;成功則到步驟5;否則返回到步驟3,或者沒有成功時,也可根據(jù)設定的條件,放棄構件程序的自動下載,直接到結束。
步驟5裝載構件程序并根據(jù)類標識中的全球唯一標識創(chuàng)建構件對象。
通過類標識中的統(tǒng)一資源命名,構件之間形成了鏈狀依賴關系,在一個構件通過指定類標識來使用另一個構件時,系統(tǒng)根據(jù)類標識中的統(tǒng)一資源命名加載另一構件,實現(xiàn)自滾動運行。
系統(tǒng)啟動后,構件第一次被裝載時,系統(tǒng)會從構件的資源段取出構件的類信息,根據(jù)類信息中的構件的更新周期判斷構件是否需要升級,如果更新周期到了,系統(tǒng)會自動依據(jù)構件的統(tǒng)一資源命名到網(wǎng)絡上去下載構件的更新版本,實現(xiàn)動態(tài)升級。
根據(jù)上述技術方案分析可知,本發(fā)明把類信息(類信息)作為描述構件的元數(shù)據(jù),類信息所起的作用與現(xiàn)有技術中的構件(MSCOM)的類型庫相似,類信息由構件定義源文件編譯而來,是該文件的二進制表述。與MSCOM不同的是,MSCOM使用系統(tǒng)程序專用程序來取出、并解釋類型庫信息。
在本發(fā)明中,可以使用一個特殊的類標識從構件中取出類信息,構件元數(shù)據(jù)的解釋不依賴于其它的DLL文件。
再有,在本發(fā)明的構件封裝中,除了構件本身的類信息封裝在構件內外,還對構件的依賴關系進行了封裝。即把一個構件對其它構件的依賴關系也作為構件的元數(shù)據(jù)封裝在構件中,這種元數(shù)據(jù)稱為構件的導入信息。
本發(fā)明構件通過對類信息和導入信息的封裝,可以實現(xiàn)構件的無注冊運行。并可以支持構件的動態(tài)升級和自滾動運行。
圖1為本發(fā)明構件導入信息的生成流程圖;圖2為本發(fā)明URN裝載構件流程圖。
具體實施例方式
參見圖1、2,圍繞著構件的自描述封裝和運行,本發(fā)明采用了如下的措施對現(xiàn)有技術的MSCOM進行改進和擴展本發(fā)明把類信息(類信息)作為描述構件的元數(shù)據(jù),類信息所起的作用與MSCOM的類型庫相似,類信息由CDL(Component Definition Language)文件編譯而來,是CDL文件的二進制表述。與MSCOM不同的是,MSCOM使用系統(tǒng)程序OLE32.DLL來取出并解釋類型庫信息;在本發(fā)明中,可以使用一個特殊的類標識從構件中取出元數(shù)據(jù)信息,構件元數(shù)據(jù)的解釋不依賴于其它的DLL文件。
在本發(fā)明的構件封裝中,除了構件本身的類信息封裝在構件內外,還對構件的依賴關系進行了封裝。即把一個構件對其它構件的依賴關系也作為構件的元數(shù)據(jù)封裝在構件中,我們把這種元數(shù)據(jù)稱為構件的導入信息。
本發(fā)明構件通過對類信息和導入信息的封裝,可以實現(xiàn)構件的無注冊運行。并可以支持構件的動態(tài)升級和自滾動運行。
較為具體地,本發(fā)明構件類信息的生成是構件定義文件的編譯結果,類信息被作為構件程序的元數(shù)據(jù)信息,用于描述構件導出的接口及方法列表。同時類信息也是自動生成構件源程序的基礎。在編譯構件程序時,類信息會作為資源數(shù)據(jù)被打包到構件DLL文件的資源段中。
本發(fā)明有關構件類信息的獲取為在根據(jù)類信息自動生成的構件源程序中,包括了標準構件導出函數(shù)取類對象的實現(xiàn)代碼,取類對象函數(shù)完成了標準的COM語義取構件類對象—用于創(chuàng)建構件對象的對象。對類對象的自動實現(xiàn)中,支持使用一個系統(tǒng)預定義的特殊類標識來獲取構件的元數(shù)據(jù),而不是類對象。
具體為當輸入?yún)?shù)指定的類標識為系統(tǒng)預定義的特殊類標識時,取類對象函數(shù)返回構件類信息的起始地址;當系統(tǒng)或構件客戶需要使用類信息元數(shù)據(jù)時,用上述的特殊類標識作為輸入?yún)?shù),調用構件的取類對象函數(shù)來取。
獲取構件元數(shù)據(jù)步驟如下獲取構件元數(shù)據(jù)時,裝載構件模塊,獲得取類對象函數(shù)的首址,調用取類對象函數(shù)取構件的類信息;這樣,當系統(tǒng)或構件客戶需要使用類信息元數(shù)據(jù)時,就可以用特殊的類標識作為輸入?yún)?shù),調用取類對象函數(shù)來取得。
從以上步驟可以看出,獲取構件類信息的過程不需要其它的系統(tǒng)程序的參與,直接調用構件DLL模塊的取類對象函數(shù)就可以了。
為生成構件導入信息,本發(fā)明要求構件必須指定它的統(tǒng)一資源命名(URN,Uniform Resource Name),URN是一個字符串,這個字符串類似于統(tǒng)一資源名稱URL(Uniform Resource Locator),是關于構件文件的網(wǎng)絡定位信息。本發(fā)明的構件中對URN的定義示例如下version(1.0),uuid(e36 3b985-8a3a-40a6-b88c-b2e10274fe54),urn(http//www.koretide.com/本發(fā)明/samples/hello.dll)通過這種定義,URN起到了唯一標識一個構件程序的作用,構件程序里的構件類由類標識來標識。
為了對構件文件進行快速定位,本發(fā)明對COM標準的類標識進行了擴展,引入了本發(fā)明的類標識,它除了包含構件類的全球唯一標識符(GUID)外,還包括構件程序的URN。
由于在COM的標準API及接口中,對類標識的參數(shù)傳遞都以引用或指針方式傳遞,本發(fā)明把全球唯一標識放在URN之前,就保證了對標準COM的兼容性。也就是說,本發(fā)明的類標識既可以在本發(fā)明平臺上使用,也可以在MSCOM平臺上使用。
除了URN還,對構件導入信息的描述還包括構件的版本號、類信息的版本號,最后修改日期,更新周期等,這些信息在構件升級及錯誤恢復時使用。
如圖1所示,本發(fā)明的構件導入信息的生成具體為本發(fā)明通過對構件源程序的預處理生成構件導入信息。當構件客戶使用一個構件時,必須通過導入預處理語句導入構件的定義。如本發(fā)明導入語句的預處理包括以下步驟A讀入構件源程序。
B取一條語句并做語法分析,判斷當前語句是不是導入,不是則到C,是則到D。
C把當前語句寫入到臨時構件源程序中,轉到B。
D裝載導入語句指定的構件DLL文件,成功則到E,否則到C。
E裝載構件DLL文件的類信息,成功到F,否則到C。
F從構件類信息中取出構件的URN、版本、最后修改日期、更新周期等信息,并添加到當前程序的導入信息中。
G根據(jù)類信息生成有關構件定義的頭文件,并把導入語句修改為頭文件后寫入到臨時構件源程序中。
H重復執(zhí)行A到G,直到對源程序的語法分析結束。
I把當前程序的導入信息寫到導入信息文件中。
在經(jīng)過對構件源程序的預處理后,新生成了三種文件臨時的構件源程序文件。與最初源程序的區(qū)別是把導入語句替換成了頭文件。因為構件編譯器并不能正確處理導入語句,生成的臨時源程序是提供給構件編譯器真正編譯的;
對源程序中的每一個導入語句,預處理器都生成了一個關于構件定義的頭文件。頭文件中聲明了構件的類標識、URN、接口等等信息;當前程序的導入信息文件。導入信息文件中記錄了當前程序所使用到的所有構件的導入信息記錄(URN、版本號、更新周期等等)。
由此,構件的導入信息分成了兩部分,第一部分是URN,基于效率上的考慮,URN以類標識的形式直接聲明在生成的構件頭文件中,每個類標識的后面都跟了一個URN字符串。
導入信息的第二部分是關于構件的版本、最后修改日期、類信息版本、更新周期等信息。由于這些信息并不是經(jīng)常使用,它們被寫入到一個導入信息文件,并且同一可執(zhí)行程序的所有C/C++源程序的導入信息在鏈接之前會被合并成一個。最后在進行鏈接時,程序的導入信息會作為資源數(shù)據(jù)鏈接到DLL或EXE文件的資源段中。
本發(fā)明通過使用帶有URN的類標識,使系統(tǒng)可以自動根據(jù)類標識中的URN信息找到并裝載正確的構件程序,并根據(jù)真正的類標識找到相應的構件類。
通過URN機制的引入,構件程序不需要安裝、注冊過程也同樣能夠被構件客戶端使用,并且由于URN是在編譯時鏈接到構件客戶程序的二進制代碼中,如果結合數(shù)字簽名等安全機制,即使是管理員也無法修改構件的URN,對病毒和黑客程序能起到有效的防范作用。
本發(fā)明運行中基于構件導入信息的構件緩存的方法是在網(wǎng)絡操作系統(tǒng)上,所有的構件程序都存放在系統(tǒng)的構件緩存目錄中,目錄中的構件程序以URN為唯一標識(不是文件名)。
具體地,如圖2所示,系統(tǒng)根據(jù)URN裝載構件的過程如下A構件客戶通過指定類標識來創(chuàng)建構件對象。
B系統(tǒng)從類標識中提取出構件的URN。
C使用URN查找構件程序是否存在,存在則轉到E,否則到D。
D從構件客戶的資源段中提取除URN之外的導入信息,并根據(jù)URN、版本號等信息從網(wǎng)絡上自動下載構件程序(版本不低于導入信息中記錄的版本號)到系統(tǒng)中。成功則轉E,否則返回失敗。
E裝載構件程序并根據(jù)類標識創(chuàng)建構件對象。
再有,本發(fā)明基于構件導入信息的構件自滾動運行及動態(tài)升級方法也正是通過URN等構件導入信息及構件緩存機制的引入,使得只要具備基本的構件運行環(huán)境,本發(fā)明構件或構件客戶程序就可以自滾動的運行。
如構件A依賴于構件B,構件B依賴于C。在某系統(tǒng)中最初只安裝了構件A,在構件A運行時,構件A在創(chuàng)建構件B的構件對象時,通過類標識指定了構件B的URN,系統(tǒng)就可以自動到網(wǎng)絡上下載構件B的程序。同理,在沒有事先安裝構件C的情況下,構件B也能夠得到正確運行。
這種自滾動運行機制給了軟件的使用者極大的方便,軟件的使用者根本不需要了解除了他直接使用的軟件之外的任何信息。軟件的開發(fā)者也不再需要費心盡力的去為一個龐大而關系復雜的軟件制作安裝軟件。
此外,在本發(fā)明在啟動后,一個構件第一次被裝載時,系統(tǒng)會從構件的資源段取出構件的類信息,并根據(jù)類信息中構件的更新周期判斷構件是否需要升級,如果更新周期到了,系統(tǒng)會自動依據(jù)構件的URN到網(wǎng)絡上去下載構件的更新版本。
最后所應說明的是以上實施例僅用以說明而非限制本發(fā)明的技術方案,盡管參照上述實施例對本發(fā)明進行了詳細說明,本領域的普通技術人員應當理解依然可以對本發(fā)明進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應涵蓋在本發(fā)明的權利要求范圍當中。
權利要求
1.一種構件自描述封裝的方法,其特征在于在構件中封裝描述構件的類信息,該類信息來源于預先編譯文件,外界通過構件導出的標準函數(shù),直接從構件中獲取該類信息解釋,完成自解釋。
2.據(jù)權利要求1所述的構件自描述封裝的方法,其特征在于類信息包括描述構件導出的接口及方法列表。
3.據(jù)權利要求2所述的構件自描述封裝的方法,其特征在于類信息作為資源數(shù)據(jù)打包在構件文件的資源段中。
4.據(jù)權利要求1-3之一所述的構件自描述封裝的方法,其特征在于根據(jù)類信息自動生成的構件源程序中,包括取構件類對象的標準導出函數(shù)的實現(xiàn)代碼,實現(xiàn)代碼中除了完成標準的取構件類對象的語義外,還支持使用一系統(tǒng)預定義的特殊類標識來獲取構件的類信息。
5.據(jù)權利要求4所述的構件自描述封裝的方法,其特征在于通過取構件類對象函數(shù)取構件類信息時,函數(shù)返回構件類信息的起始地址;
6.據(jù)權利要求5所述的構件自描述封裝的方法,其特征在于當系統(tǒng)或構件客戶需要使用類信息時,用系統(tǒng)預定義的特殊類標識作為輸入?yún)?shù),調用構件的取類對象函數(shù)來取。
7.據(jù)權利要求4所述的構件自描述封裝的方法,其特征在于獲取構件元數(shù)據(jù)時,先裝載構件模塊,然后得到取構件類對象函數(shù)的首址,最后調用取構件類對象函數(shù)取構件的類信息。
8.一種構件依賴關系自描述封裝的方法,其特征在于在構件中封裝描述導入信息描述,該導入信息描述來源于預先編譯文件,它包括構件使用到的其它構件的統(tǒng)一資源命名,用于描述構件的依賴關系。
9.根據(jù)權利要求8所述的構件依賴關系自描述封裝的方法,其特征在于導入信息的描述包括所依賴的其它構件的版本號或類信息的版本號或修改日期或更新周期,在構件升級或錯誤恢復時使用。
10.根據(jù)權利要求8所述的構件依賴關系自描述封裝的方法,其特征在于通過預處理器對構件源程序中的導入語句進行預處理,從而生成構件的導入信息。
11.根據(jù)權利要求8-10之一所述的構件依賴關系自描述封裝的方法,其特征在于預處理器工作步驟為步驟1首先讀入編譯源程序;步驟2取一條語句并做語法分析,判斷是否為導入,如果是,則裝載該語句指定的構件文件,如果是,則到步驟4步驟3把當前語句寫入到臨時的源程序中,回到步驟2;步驟4裝載構件文件的類信息,如果不成功,則到返回上一步驟3;步驟5從構件資源段的類信息中取出構件的統(tǒng)一資源命名以及版本、最后修改日期、更新周期信息,添加到當前程序的導入信息中;步驟6根據(jù)導入構件的類信息生成有關該構件定義的頭文件,把導入語句修改為頭文件包含語句,寫入臨時源程序中。步驟7把當前程序的導入信息寫到導入信息文件中。
12.根據(jù)權利要求11所述的構件依賴關系自描述封裝的方法,其特征在于反復執(zhí)行上述步驟,直到對源程序的語法分析結束,以便對源程序中的每一個導入語句,預處理器都生成一關于導入構件定義的頭文件。
13.根據(jù)權利要求12所述的構件依賴關系自描述封裝的方法,其特征在于預處理器生成的構件的頭文件中,包括構件的類標識聲明,類標識由全球唯一標識符(GUID)與統(tǒng)一資源命名(URN)組成,導入構件的統(tǒng)一資源命名作為類標識的一個部分,與類標識一起被聲明。
14.根據(jù)權利要求11所述的構件依賴關系自描述封裝的方法,其特征在于導入信息預處理器生成的導入信息文件包含了構件導入信息的完整描述,包括所使用到的其它構件的統(tǒng)一資源命名、最后修改日期、更新周期等信息,被打包在構件文件的資源段中。
15.一種基于上述權利要求完成的自描述封裝構件的運行方法,其特征在于構件客戶運行時使用指定構件類標識,系統(tǒng)自動根據(jù)類標識中的統(tǒng)一資源命名找到構件文件,并進行裝載。
16.根據(jù)權利要求15所述的基于上述權利要求完成的自描述封裝構件的運行方法,其特征在于裝載構件文件后,系統(tǒng)根據(jù)類標識中的全球唯一標識符找到相應的構件類。
17.根據(jù)權利要求15所述的基于上述權利要求完成的自描述封裝構件的運行方法,其特征在于系統(tǒng)根據(jù)統(tǒng)一資源命名裝載構件的過程為步驟1構件客戶通過指定類標識創(chuàng)建構件對象;步驟2系統(tǒng)從類標識中提取出構件的統(tǒng)一資源命名;步驟3使用統(tǒng)一資源命名查找構件程序是否存在,如果存在,則轉到步驟5;步驟4從構件客戶資源段中提取除統(tǒng)一資源命名之外的導入信息,根據(jù)統(tǒng)一資源命名、版本號、更新周期信息從網(wǎng)絡上自動下載構件程序;沒有成功則返回失??;步驟5裝載構件程序并根據(jù)類標識中的全球唯一標識創(chuàng)建構件對象。
18.根據(jù)權利要求17所述的基于上述權利要求完成的自描述封裝構件的運行方法,其特征在于通過類標識中的統(tǒng)一資源命名,構件之間形成了鏈狀依賴關系,在一個構件通過指定類標識來使用另一個構件時,系統(tǒng)根據(jù)類標識中的統(tǒng)一資源命名加載另一構件,實現(xiàn)自滾動運行。
19.根據(jù)權利要求17所述的基于上述權利要求完成的自描述封裝構件的運行方法,其特征在于系統(tǒng)啟動后,構件第一次被裝載時,系統(tǒng)會從構件的資源段取出構件的類信息,根據(jù)類信息中的構件的更新周期判斷構件是否需要升級,如果更新周期到了,系統(tǒng)會自動依據(jù)構件的統(tǒng)一資源命名到網(wǎng)絡上去下載構件的更新版本,實現(xiàn)動態(tài)升級。
全文摘要
一種構件自描述封裝的方法,在構件中封裝描述構件的類信息和導入信息,該類信息和導入信息來源于預先編譯文件。類信息包括描述構件導出的接口及方法列表,導入信息包括構件依賴的其它構件的統(tǒng)一資源命名及版本號等信息。本發(fā)明擴充了標準構件對象模型的自描述能力,特別是在引入了導入信息后,實現(xiàn)了構件的無注冊運行、動態(tài)升級、自滾動運行。
文檔編號G06F9/45GK1514361SQ0216013
公開日2004年7月21日 申請日期2002年12月31日 優(yōu)先權日2002年12月31日
發(fā)明者陳榕, 蘇翼鵬, 杜永文, 梁宇洲, 葉志強, 榕 陳 申請人:北京科泰世紀科技有限公司