專利名稱:軟件組件管理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)領(lǐng)域,具體而言,尤其涉及一種軟件組件的管理技術(shù)。
背景技術(shù):
組件是近代工業(yè)發(fā)展的產(chǎn)物,目的是功能模塊化,構(gòu)成產(chǎn)品的各個功能組件,分別 可由專業(yè)的廠商生產(chǎn),提高了質(zhì)量,降低了成本,同時對于同樣的組件,可應(yīng)用于多類產(chǎn)品 和多個領(lǐng)域,極大的拓展了技術(shù)的移植和應(yīng)用。軟件工程中的組件,或者說軟件組件是指“系統(tǒng)中一種物理的、可代替的部件、它 封裝了實現(xiàn)并提供了一系列可用的接口。一個組件代表一個系統(tǒng)中實現(xiàn)的物理部分,包括 軟件代碼(源代碼,二進(jìn)制代碼,可執(zhí)行代碼)或者一些類似內(nèi)容,如腳本或者命令文件。” 使用軟件組件技術(shù)的一個最大的好處就是通過將軟件組件化來分解軟件,從而降低的軟件 的復(fù)雜度,提高了軟件的集成度和可重用度。在目前現(xiàn)有使用軟件組件化技術(shù)的軟件產(chǎn)品中,通常存在著程序啟動速度慢、內(nèi) 存占用多、CPU占用率高等問題,這是因為程序啟動時,加載了過多的組件,而每個組件又會 占用一定的內(nèi)存空間和CPU,從而導(dǎo)致整個程序臃腫不堪。而對于組件的動態(tài)管理,目前只 有在嵌入式系統(tǒng)中使用了類似的技術(shù),但這些技術(shù)的實現(xiàn)較為復(fù)雜,且受限于嵌入式系統(tǒng) 自身所支持的技術(shù)。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中組件化軟件產(chǎn)品中存在的程序啟動時,加載了過多的組件而導(dǎo)致 整個程序運(yùn)行慢的問題提出本發(fā)明。為此,本發(fā)明的主要目的在于提供一種軟件組件管理 系統(tǒng)及方法,以解決上述問題至少之一。根據(jù)本發(fā)明的一個方面,本發(fā)明提出了一種軟件組件管理系統(tǒng),包括啟動模塊、組 件管理器、公共接口、至少一個軟件組件;其中,啟動模塊整個程序的入口,與組件管理器交互,通過組件管理器來加載各軟件組 件;組件管理器用來對軟件組件進(jìn)行管理,動態(tài)實現(xiàn)加載、卸載軟件組件等功能;公共接口 定義了一個所有接口必須共同遵守的公共標(biāo)準(zhǔn)和公共能力,所述公共 標(biāo)準(zhǔn)是指包含計數(shù)器,所述公共能力是指增加計數(shù)的能力和減少計數(shù)的能力;軟件組件作為所述軟件組件管理系統(tǒng)的管理對象,為程序提供業(yè)務(wù)功能的各模 塊組件。 進(jìn)一步地,所述組件管理器具體包括,配置文件負(fù)責(zé)存放軟件組件的配置信息,所述組件的配置信息包括組件唯一 標(biāo)識、組件在物理設(shè)備上的訪問路徑、組件包含的接口、組件存活時間;接口查詢單元用于通過接口唯一標(biāo)識來查詢接口入口地址;組件加載單元組件加載單元根據(jù)組件配置信息從物理設(shè)備上將組件加載到應(yīng)用程序系統(tǒng)中;響應(yīng)時間記錄單元用于記錄當(dāng)前已加載每個組件的上次響應(yīng)時間,即當(dāng)前已加 載的每個組件所包含的接口上一次被調(diào)用的時間;組件卸載單元負(fù)責(zé)組件的卸載。進(jìn)一步地,所述公共接口具體指,每個接口都包含計數(shù)器,當(dāng)接口在被使用時所述 計數(shù)器增加、接口被使用完畢后所述計數(shù)器減少、所述計數(shù)器增加時的步進(jìn)必須和減少時 的步進(jìn)一致,所述計數(shù)器記錄了這個接口目前正在被多少使用者所使用。進(jìn)一步地,軟件組件包括業(yè)務(wù)組件、功能組件,所述軟件組件所包含的接口都是由 公共接口繼承而來的,遵守公共接口的標(biāo)準(zhǔn)。進(jìn)一步地,所述組件包含的接口為一個或者多個,是組件的唯一標(biāo)識與接口唯一 標(biāo)識的對照關(guān)系表。進(jìn)一步地,所述組件存活時間,是指當(dāng)一個已加載的組件持續(xù)未活動的時間,超出 所述組件存活時間時,卸載該組件。進(jìn)一步地,所述組件卸載單元在程序啟動時啟動,定期檢測當(dāng)前已加載的所有軟 件組件,當(dāng)某個軟件組件達(dá)到了卸載條件時,將該組件卸載。進(jìn)一步地,所述組件的卸載條件指該組件包含的所有接口目前都沒有被使用,并 且該組件上次響應(yīng)時間已超出了預(yù)定的組件存活時間。與現(xiàn)有技術(shù)相比,本發(fā)明定義一個具有計數(shù)器的公共接口,通過組件管理器管理 每個組件的生命周期,在保持整個軟件程序原有功能不變的情況下,更有效率的分配和使 用系統(tǒng)資源,從而提高了系統(tǒng)的效率。
圖1為本發(fā)明組件管理系統(tǒng)結(jié)構(gòu)圖; 圖2為根據(jù)本發(fā)明優(yōu)選實施例的程序啟動時的示意圖;圖3為根據(jù)本發(fā)明優(yōu)選實施例的組件動態(tài)加載時的示意圖;圖4為根據(jù)本發(fā)明優(yōu)選實施例的組件動態(tài)卸載時的示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖對本發(fā)明作進(jìn)一步 地詳細(xì)說明。本發(fā)明的核心思想是定義一個具有計數(shù)器的公共接口作為所有接口的共同標(biāo)準(zhǔn), 通過制定一定策略來控制組件的生命周期,從而實現(xiàn)組件動態(tài)加載和卸載的管理過程。為更好了理解本發(fā)明的實施,這里先對相關(guān)專業(yè)技術(shù)的術(shù)語進(jìn)行簡單的說明。接口 我們可以將之理解為調(diào)用一項“服務(wù)”的入口,這項“服務(wù)”能夠提供某種能 力(如打電話、進(jìn)行文字聊天、進(jìn)行某項數(shù)學(xué)計算等),并具有一系列的屬性(如接口的 唯一標(biāo)識、接口當(dāng)前被使用的次數(shù)等)。每個接口都具有唯一標(biāo)識,唯一標(biāo)識是指該接口區(qū) 別于其他接口的一個標(biāo)簽,它可以是一組具有特殊意義的數(shù)字,也可以是一串特殊內(nèi)容的 文本,且并不局限于以上兩種方式,唯一標(biāo)識并不一定是絕對唯一、不會重復(fù)的,它僅在使 用該標(biāo)識的工作環(huán)境內(nèi)保持唯一即可。
繼承可以理解為在某“接口”的基礎(chǔ)上,延伸而出一種新的“接口”,新的接口不但 包含原有接口的功能和屬性,并且可以包含新接口自身的新功能和新屬性,而這種延伸我 們就稱之為“繼承”。例如已存在一個“對話框服務(wù)”,我們由此服務(wù)延伸出了 “聊天室對話
框服務(wù)”、“系統(tǒng)設(shè)置對話框服務(wù)”、“通訊錄對話框服務(wù)”等......我們就稱后三種延伸出來
的服務(wù)是繼承于“對話框服務(wù)的”,如果我們在“聊天室對話框服務(wù)”的基礎(chǔ)上繼續(xù)延伸出了 “包含視頻功能的聊天室對話框服務(wù)”,我們就稱“包含視頻功能的聊天室對話框服務(wù)”是直 接繼承于“聊天室對話框服務(wù)”,且間接繼承于“對話框服務(wù)”。如圖1所示,為本發(fā)明的軟件組件管理系統(tǒng),該軟件組件管理系統(tǒng)包括啟動模塊, 組件管理器、公共接口,至少一個軟件組件,其中啟動模塊整個程序的入口,與組件管理器交互,通過組件管理器來加載各軟件組 件;組件管理器用來對軟件組件進(jìn)行動態(tài)管理,動態(tài)實現(xiàn)加載、卸載軟件組件等功 能。公共接口 包含一個計數(shù)器,接口在被使用時計數(shù)器增加、接口被使用完畢后計數(shù) 器減少、計數(shù)器增加時的步進(jìn)必須和減少時的步進(jìn)一致。所謂“計數(shù)器”,它記錄了這個接口 目前正在被多少使用者所使用(使用者并不局限為是用戶,也可能是另一個服務(wù)),而當(dāng)接 口被使用時,計數(shù)器則會增加N(N為整數(shù)),當(dāng)接口被使用完畢后,計數(shù)器則會減少N。需要說明的是本發(fā)明所說的公共接口的設(shè)置是出于管理組件和接口的目的,特 別定義出的一個抽象的接口,它僅包含了所有接口必須共同遵守的一個公共標(biāo)準(zhǔn),而不包 含具體的業(yè)務(wù)能力和屬性。軟件組件是指為程序提供業(yè)務(wù)功能的各模塊,例如文字聊天組件、語音通話組 件、文件傳輸組件、系統(tǒng)設(shè)置組件等。這些組件所包含的接口都是由公共接口繼承而來的, 遵守公共接口的標(biāo)準(zhǔn),并根據(jù)各組件的業(yè)務(wù)定位不同擴(kuò)展出各自的業(yè)務(wù)功能,它們是組件 管理系統(tǒng)的管理對象。本發(fā)明實施例中的組件管理器進(jìn)一步包括配置文件、組件加載單元、接口查詢單 元、響應(yīng)時間記錄單元和組件卸載單元配置文件負(fù)責(zé)存放組件的配置信息,所述組件的配置信息包括組件唯一標(biāo)識、 組件在物理設(shè)備上的訪問路徑、組件所包含的接口、組件在無響應(yīng)時的最大存活時間。其 中,組件唯一標(biāo)識,是指在一定的工作環(huán)境內(nèi),用來區(qū)分和定位組件唯一性的標(biāo)識。組件在物理設(shè)備上的訪問路徑,是指組件在電腦系統(tǒng)中物理存在的絕對或相對路 徑,組件管理器能夠根據(jù)組件的訪問路徑,正常的訪問該組件,如加載組件。組件所包含的接口 一個組件可能包含一個或多個接口,所以組件所包含的接口 實際上也就是一組組件唯一標(biāo)識與接口唯一標(biāo)識的對照關(guān)系表。由組件和接口的包含關(guān)系 可知,當(dāng)某項服務(wù)需要被使用時,首先需要加載包含提供該服務(wù)接口的組件,然后才能夠通 過接口使用該服務(wù),如果組件已經(jīng)加載,則無需重復(fù)加載。組件存活時間,是指當(dāng)一個已加載的組件持續(xù)未活動的時間超出該組件在無響應(yīng) 時的最大存活時間時,卸載該組件。該時間是為了避免頻繁的加載卸載組件而設(shè)置的卸載 組件的時間延遲。該時間通常由本專利的使用者根據(jù)自己所開發(fā)的應(yīng)用程序的業(yè)務(wù)特性具體而定。組件加載單元根據(jù)組件配置信息從物理設(shè)備上將組件加載到應(yīng)用程序系統(tǒng)中;接口查詢單元用于通過接口唯一標(biāo)識來查詢接口入口地址。響應(yīng)時間記錄單元用于記錄當(dāng)前已加載每個組件的上次響應(yīng)時間,即當(dāng)前已加 載的每個組件所包含的接口上一次被調(diào)用的時間。一旦組件所包含的任何一個接口被使 用,則上次響應(yīng)時間會立即更新。組件卸載單元負(fù)責(zé)組件的卸載,在程序啟動時一同啟動,定期檢測當(dāng)前已加載的 所有組件,一旦某個組件達(dá)到了卸載的條件,就會將該組件卸載。組件卸載單元是一個獨立 運(yùn)行的單元,組件卸載條件包括該組件提供的所有接口目前都沒有被使用,并且該組件上 次響應(yīng)時間已超出了組件存活時間。接口的使用者通過接口查詢單元查詢其希望調(diào)用的接口地址。接口查詢單元首先 查詢配置文件,得到包含該接口的組件的唯一標(biāo)識。然后接口查詢單元去查詢響應(yīng)時間記 錄單元,如果發(fā)現(xiàn)該組件唯一標(biāo)識目前沒有被記錄活動時間,則說明該組件目前尚未被加 載。于是接口查詢單元通知組件加載單元來加載該組件,加載成功后,接口查詢單元將接口 地址返回給查詢者,并將通知響應(yīng)時間記錄單元記錄該組件的活動時間。組件在被組件卸 載單元卸載后,組件卸載單元會通知響應(yīng)時間記錄單元刪除該組件的活動時間記錄?;谏鲜鲕浖M件管理系統(tǒng),本發(fā)明的軟件組件管理方法如下步驟1、程序啟動時,啟動模塊開始運(yùn)行,啟動模塊將啟動組件管理器,組件管理器 通過讀取配置文件,將當(dāng)前需要使用的軟件組件加載(如程序主界面組件)。步驟2、當(dāng)程序啟動后,如果需要使用某軟件組件提供的業(yè)務(wù)時,使用者通過組件 管理器查詢提供該業(yè)務(wù)的接口,如果包含被查詢接口的組件目前尚未被加載,則組件管理 器讀取配置文件,得到該組件的訪問路徑,先將該組件加載,然后將該組件接口的訪問入口 地址返回給使用者。例如當(dāng)一個使用者需要使用A接口,使用者通過組件管理器的接口查詢單元得 到A接口的訪問入口地址,此時A接口增加計數(shù)1次,當(dāng)A接口被使用完畢后,A接口減少 計數(shù)1次,當(dāng)A接口的計數(shù)器減少為0時(假設(shè)計數(shù)器初始是從0開始計數(shù)的),則表示A 接口當(dāng)前已經(jīng)沒有任何使用者在使用了,已經(jīng)可以銷毀了,此時A接口會通知組件管理器 將自身銷毀。步驟3、組件管理器中會記錄該組件的當(dāng)次活動情況,將組件所包含接口的計數(shù)器 最近一次改變的時間記錄為該組件的上次響應(yīng)時間,如果在持續(xù)一段時間內(nèi)該組件所包含 的所有接口一直未被調(diào)用,當(dāng)該時間超過該組件存活時間后,組件管理器的組件卸載單元 就會將該組件卸載。如果在無響應(yīng)的時間達(dá)到該組件存活時間之前,該組件的接口被再次 訪問,則上次響應(yīng)時間會重新記錄。如圖2所示,為本發(fā)明優(yōu)選實施例的程序啟動時的示意圖,包括1、應(yīng)用程序啟動時,啟動模塊啟用組件管理器,組件管理器通過讀取配置文件中 的組件配置信息,調(diào)用登錄界面接口、登錄業(yè)務(wù)接口、TCP通訊接口、主界面接口,所以組件 管理器加載了當(dāng)前需要的組件,如圖中底層通訊組件(ID :01)、登錄組件(ID :02)、主界面 組件(ID 03)。需要說明的是在程序啟動時,還不需要使用電話功能、文字聊天功能、文件傳輸功能等,所以其相關(guān)的組件均未被加載,如圖中電話組件(ID:04)、文字聊天組件(ID:05)、 通訊錄組件(ID 06)、系統(tǒng)設(shè)置組件(ID 07)、文件傳輸組件(ID 08)。2、組件管理器記錄了各組件的上次響應(yīng)時間;各被調(diào)用的接口的計數(shù)。如圖3所示意,為本發(fā)明優(yōu)選實施例的組件動態(tài)加載時的示意圖,包括1、在程序的應(yīng)用過程中,用戶在主界面上點擊通訊錄功能標(biāo)簽,希望打開通訊錄 界面進(jìn)行通訊錄查詢,所以主界面接口(03a)通過組件管理器查詢通訊錄界面接口(06a)。2、組件管理器在收到主界面接口(03a)的查詢請求后,組件管理器檢查配置文 件,發(fā)現(xiàn)通訊錄界面接口(06a)是屬于通訊錄組件(06)的,而通訊錄組件(06)目前尚未加 載,所以組件管理器首先加載通訊錄組件(06),然后將通訊錄界面接口(06a)返回給調(diào)用 者,通訊錄界面接口(06a)計數(shù)器增加1。用戶操作通訊錄界面進(jìn)行查詢,通訊錄界面接口(06a)向組件管理器查詢通訊錄 業(yè)務(wù)接口(06b),組件管理器檢查配置文件,發(fā)現(xiàn)通訊錄業(yè)務(wù)接口(06b)是屬于通訊錄組件 (06)的,而通訊錄組件(06)目前已加載,所以組件管理器直接返回通訊錄業(yè)務(wù)接口(06b)。通訊錄業(yè)務(wù)接口(06b)在查詢過程中需要與遠(yuǎn)程的通訊錄數(shù)據(jù)庫建立連接,所以 通訊錄業(yè)務(wù)接口(06b)向組件管理器查詢TCP通訊接口(01a),組件管理器檢查配置文件, 發(fā)現(xiàn)TCP通訊接口(Ola)是屬于底層通訊組件(01)的,而底層通訊組件(01)目前已加載, 所以組件管理器直接返回TCP通訊接口(Ola)。因為此時程序已經(jīng)啟動和登錄完畢,所以登錄過程中使用到的TCP通訊接口計數(shù) 減少1 (變?yōu)?),登錄界面接口計數(shù)減少1 (變?yōu)?),登錄業(yè)務(wù)接口計數(shù)減少1 (變?yōu)?)。而在通訊錄查詢的過程中,所使用到的TCP通訊接口計數(shù)增加1 (變?yōu)?),通訊錄 界面接口增加1(變?yōu)?),通訊錄業(yè)務(wù)接口增加1(變?yōu)?)。主界面因為一直在使用,所以其接口計數(shù)器不變。如圖4所示,為本發(fā)明優(yōu)選實施例的組件動態(tài)卸載時的示意圖,包括若預(yù)先設(shè)置的組件存活時間為10分鐘,當(dāng)程序在登錄了 10分鐘后,因為登錄界面 接口(02a)計數(shù)器為0,登錄業(yè)務(wù)接口(02b)計數(shù)器為0,且登錄組件(02)達(dá)到了其配置的 無響應(yīng)時的最大存活時間,此時已達(dá)到了組件卸載的條件,組件卸載單元自動將登錄組件 (02)卸載。綜上所述,本發(fā)明提出的軟件組件的管理系統(tǒng)及方法,通過定義一個具有計數(shù)器 的公共接口作為所有接口的共同標(biāo)準(zhǔn),通過組件管理器依靠計數(shù)器和組件響應(yīng)時間的處理 策略,來控制組件的生命周期,從而實現(xiàn)組件的動態(tài)加載和卸載的管理過程。本方案可擴(kuò)展 性強(qiáng),機(jī)制簡單,本領(lǐng)域普通技術(shù)人員可以通過上述實施例的描述和附圖來學(xué)習(xí)和使用。
權(quán)利要求
一種軟件組件管理系統(tǒng),包括啟動模塊、組件管理器、公共接口、至少一個軟件組件;其中,啟動模塊整個程序的入口,與組件管理器交互,通過組件管理器來加載各軟件組件;組件管理器用來對軟件組件進(jìn)行管理,動態(tài)實現(xiàn)加載、卸載軟件組件等功能;公共接口定義了一個所有接口必須共同遵守的公共標(biāo)準(zhǔn)和公共能力,所述公共標(biāo)準(zhǔn)是指包含計數(shù)器,所述公共能力是指增加計數(shù)的能力和減少計數(shù)的能力;軟件組件作為所述軟件組件管理系統(tǒng)的管理對象,為程序提供業(yè)務(wù)功能的各模塊組件。
2.如權(quán)利要求1所述的管理系統(tǒng),其特征在于,所述組件管理器具體包括,配置文件負(fù)責(zé)存放軟件組件的配置信息,所述組件的配置信息包括組件唯一標(biāo)識、 組件在物理設(shè)備上的訪問路徑、組件包含的接口、組件存活時間; 接口查詢單元用于通過接口唯一標(biāo)識來查詢接口入口地址; 組件加載單元組件加載單元根據(jù)組件配置信息從物理設(shè)備上將組件加載到應(yīng)用程序 系統(tǒng)中;響應(yīng)時間記錄單元用于記錄當(dāng)前已加載每個組件的上次響應(yīng)時間,即當(dāng)前已加載的 每個組件所包含的接口上一次被調(diào)用的時間; 組件卸載單元負(fù)責(zé)組件的卸載。
3.如權(quán)利要求1所述的管理系統(tǒng),其特征在于,所述公共接口具體指,每個接口都包含計數(shù)器,當(dāng)接口在被使用時所述計數(shù)器增加、接 口被使用完畢后所述計數(shù)器減少、所述計數(shù)器增加時的步進(jìn)必須和減少時的步進(jìn)一致,所 述計數(shù)器記錄了這個接口目前正在被多少使用者所使用。
4.如權(quán)利要求2所述的管理系統(tǒng),其特征在于,軟件組件包括業(yè)務(wù)組件、功能組件,所 述軟件組件所包含的接口都是由公共接口繼承而來的,遵守公共接口的標(biāo)準(zhǔn)。
5.如權(quán)利要求2或3所述的管理系統(tǒng),其特征在于,所述組件包含的接口為一個或者多個,是組件的唯一標(biāo)識與接口唯一標(biāo)識的對照關(guān)系表。
6.如權(quán)利要求2或3所述的管理系統(tǒng),其特征在于,所述組件存活時間,是指當(dāng)一個已加載的組件持續(xù)未活動的時間,超出所述組件存活 時間時,卸載該組件。
7.如權(quán)利要求2或3所述的管理系統(tǒng),其特征在于,所述組件卸載單元在程序啟動時啟動,定期檢測當(dāng)前已加載的所有軟件組件,當(dāng)某個 軟件組件達(dá)到了卸載條件時,將該組件卸載。
8.如權(quán)利要求7所述的管理系統(tǒng),其特征在于,所述組件的卸載條件指該組件包含的所有接口目前都沒有被使用,并且該組件上次響 應(yīng)時間已超出了預(yù)定的組件存活時間。
全文摘要
本發(fā)明提出了一種軟件組件的管理系統(tǒng)及方法,通過定義一個具有計數(shù)器的公共接口作為所有接口的共同標(biāo)準(zhǔn),通過組件管理器依靠計數(shù)器和組件響應(yīng)時間的處理策略,來控制組件的生命周期,從而實現(xiàn)組件的動態(tài)加載和卸載的管理過程。本方案可擴(kuò)展性強(qiáng),機(jī)制簡單,在保持整個軟件程序原有功能不變的情況下,更有效率的分配和使用系統(tǒng)資源,從而提高了系統(tǒng)的效率。
文檔編號G06F9/445GK101989203SQ201010547288
公開日2011年3月23日 申請日期2010年11月9日 優(yōu)先權(quán)日2010年1月5日
發(fā)明者李俊敏, 楊志鵬, 范國華 申請人:深圳中興網(wǎng)信科技有限公司