專利名稱:一種插件部署和加載的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件插件的加載技術(shù),特別涉及一種插件部署和加載的方法及裝置。
背景技術(shù):
在大型軟件開發(fā)中,為了方便對軟件進(jìn)行功能擴(kuò)展,實(shí)現(xiàn)模塊內(nèi)的高內(nèi)聚,模塊間 的低耦合,為實(shí)現(xiàn)發(fā)布軟件功能的可定制性,往往采用插件式開發(fā),將一個個功能封裝在插 件中實(shí)現(xiàn),這些插件有多種類型,即遵循的插件接口不一樣,而為了處理上的方便,這些不 同的接口可以派生于同一個基礎(chǔ)接口。在綜合型的網(wǎng)管中要管理各種專業(yè)網(wǎng)產(chǎn)品,而每種專業(yè)網(wǎng)產(chǎn)品擁有很多種設(shè)備, 專業(yè)網(wǎng)的特性也各有不同,由于不同設(shè)備之間存在差異,一個網(wǎng)管要管理數(shù)以萬計的設(shè)備 就需要多個進(jìn)程、分布式管理。由于不同進(jìn)程所需部署的功能也不同,因此提供一種軟件架 構(gòu)來開發(fā)這種大型網(wǎng)管,管理不同的專業(yè)網(wǎng),成為我們需要解決的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種插件部署和加載方法,采用大型軟件插件分組管理、 進(jìn)程共享程序目錄和分布式進(jìn)程內(nèi)插件部署及插件加載的方法,解決了大型網(wǎng)管管理不同 的專業(yè)網(wǎng)的問題。本發(fā)明的另一目的在于提供一種插件部署和加載裝置,采用大型軟件插件分組管 理、進(jìn)程共享程序目錄和分布式進(jìn)程內(nèi)插件部署及插件加載的方法,解決了大型網(wǎng)管管理 不同的專業(yè)網(wǎng)的問題。根據(jù)本發(fā)明的一個方面,提供了一種插件部署和加載方法,包括以下步驟A、將待加載的插件進(jìn)行分組;B、建立用于部署進(jìn)程要加載分組后的插件組的插件部署文件;C、部署文件分析模塊根據(jù)插件部署文件及插件組的依賴關(guān)系計算得到插件組依 賴樹;D、程序入口模塊獲取進(jìn)程的進(jìn)程名,啟動進(jìn)程;E、插件加載模塊根據(jù)插件組依賴樹按進(jìn)程加載插件。根據(jù)本發(fā)明的另一方面,提供了一種插件部署和加載裝置,包括插件分組模塊,用于將待加載的插件按類型劃分成適于按進(jìn)程加載的插件組;插件部署模塊,用于建立部署進(jìn)程要加載插件組的插件部署文件;部署文件分析模塊,用于根據(jù)插件部署文件及插件組的依賴關(guān)系計算得到插件組 依賴樹;程序入口模塊,用于獲取所述進(jìn)程的進(jìn)程名,啟動進(jìn)程;插件加載模塊,用于根據(jù)插件組依賴樹按進(jìn)程加載插件。與現(xiàn)有技術(shù)相比較,本發(fā)明的有益效果在于本發(fā)明通過分組形式加載插件,支持分布式管理,進(jìn)程工作目錄和程序目錄分離,實(shí)現(xiàn)了不同功能進(jìn)程共享程序文件。
圖1是本發(fā)明提供的插件部署和加載方法的流程示意圖;圖2是本發(fā)明提供的插件部署和加載裝置的結(jié)構(gòu)示意圖;圖3是本發(fā)明實(shí)施例提供的網(wǎng)管插件分組示意圖;圖4是本發(fā)明實(shí)施例提供的進(jìn)程啟動過程和分析命令行獲取進(jìn)程名稱的示意圖;圖5是本發(fā)明實(shí)施例提供的軟件發(fā)布目錄結(jié)構(gòu)圖。
具體實(shí)施例方式以下結(jié)合附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說明,應(yīng)當(dāng)理解,以下所說明的優(yōu) 選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。圖1顯示了本發(fā)明提供的插件部署和加載方法的流程示意,如圖1所示步驟S101,將待加載的插件進(jìn)行分組。在此之前,需對插件接口進(jìn)行定義建立程序的基礎(chǔ)擴(kuò)展點(diǎn)接口和該基礎(chǔ)擴(kuò)展點(diǎn) 接口的插件基礎(chǔ)擴(kuò)展點(diǎn)接口實(shí)例函數(shù);建立派生于該基礎(chǔ)擴(kuò)展點(diǎn)的派生接口和該派生接口 的插件派生接口實(shí)例函數(shù);定義插件的描述文件格式定義插件ID、插件接口類型和插件 庫名稱。如按產(chǎn)品功能可將插件產(chǎn)品分為產(chǎn)品插件單元PPU,PPU是頂層組,一個PPU下有 多個插件管理單元PMU,PMU下有多個插件功能組PMUFunction,插件功能組下有多個插件 或數(shù)據(jù)文件,這些插件功能組可以有交叉插件和數(shù)據(jù)文件。步驟S102,建立插件部署文件,在該文件中部署進(jìn)程要加載的分組后的插件組,一 個進(jìn)程可能有多個部署文件,進(jìn)程按這些文件的并集加載插件。步驟S103,部署文件分析模塊根據(jù)插件部署文件及插件組的依賴關(guān)系計算得到插 件組依賴樹。步驟S104,程序入口模塊通過分析命令行函數(shù)獲取進(jìn)程的進(jìn)程名,啟動進(jìn)程。此外,程序入口模塊需先創(chuàng)建插件工廠接口,再創(chuàng)建上下文接口,然后解析插件部 署文件、屬性數(shù)據(jù)文件和插件組依賴樹。在此之前,需建立屬性數(shù)據(jù)文件,該文件是定義進(jìn)程在啟動或運(yùn)行過程中需要的 一些名值對,這些屬性文件是分層的,根據(jù)需要可以定義多層。步驟S105,插件加載模塊根據(jù)插件組依賴樹按進(jìn)程加載插件。加載插件有兩種方 式進(jìn)程啟動過程中加載某些插件或運(yùn)行過程中按需加載插件。圖2是本發(fā)明提供的插件部署和加載裝置的結(jié)構(gòu)示意,如圖2所示,該裝置包括插 件定義模塊、插件分組模塊、插件部署模塊、部署文件分析模塊、程序入口模塊、屬性數(shù)據(jù)模 塊和插件加載模塊。其中,插件定義模塊包括插件基礎(chǔ)擴(kuò)展點(diǎn)定義單元、插件派生接口定義單元和插 件描述文件定義單元。插件基礎(chǔ)擴(kuò)展點(diǎn)定義單元建立程序基礎(chǔ)擴(kuò)展點(diǎn)接口和該基礎(chǔ)擴(kuò)展點(diǎn)接口的實(shí)例 函數(shù)。
插件派生接口定義單元建立派生于基礎(chǔ)擴(kuò)展點(diǎn)接口的派生接口和該派生接口的 實(shí)例函數(shù)。插件描述文件定義單元定義插件的描述文件格式,包括插件ID、插件接口的類 型和插件庫名稱。插件分組模塊將待加載的插件劃分成適于按進(jìn)程加載的插件組。插件部署模塊建立部署進(jìn)程要加載插件組的插件部署文件。部署文件分析模塊根據(jù)插件部署文件及插件組的依賴關(guān)系計算得到插件組依賴 樹。程序入口模塊獲取所述進(jìn)程的進(jìn)程名,啟動進(jìn)程,并建立管理插件基礎(chǔ)擴(kuò)展點(diǎn)接 口實(shí)例函數(shù)和插件派生接口實(shí)例函數(shù)的插件工廠接口和建立描述運(yùn)行環(huán)境的上下文接口, 以及解析插件部署文件、屬性數(shù)據(jù)文件和插件組依賴樹。屬性數(shù)據(jù)模塊定義進(jìn)程啟動和運(yùn)行所需名值對的屬性數(shù)據(jù)文件。插件加載模塊根據(jù)插件組依賴樹按進(jìn)程加載插件。圖3顯示了本發(fā)明實(shí)施例提供的網(wǎng)管插件分組示意,如圖3所示,頂層有bn. ppu、 uca. ppu 兩個 PPU,其中 bn. ppu 下有 bn-core-c. pmu>bn-necommon-c. pmu 禾口 bn-res. pmu 多 個PMU,每個PMU下多個插件功能組PMUFunction,如其中bn_res. pmu下有兩個功能組osf 和emf,各包含有一些目錄,且存在共同的目錄common,與common同級的目錄下是一些數(shù)據(jù) 文件、插件及描述文件,其中同級的dll中為普通的動態(tài)庫。圖4顯示了本發(fā)明實(shí)施例提供的進(jìn)程啟動過程和分析命令行獲取進(jìn)程名稱的示 意,如圖4所示,程序入口模塊首先創(chuàng)建插件工廠接口,再創(chuàng)建上下文接口,在上下文的初 始化插件函數(shù)中創(chuàng)建本地系統(tǒng)接口 ILocalSystem,本地系統(tǒng)接口負(fù)責(zé)分析部署及加載啟動 插件。插件工廠接口 IExtensionService、上下文接口 IContext和ILocalSystem對于每個 進(jìn)程必須存在一個實(shí)例。圖5顯示了本發(fā)明實(shí)施例提供的軟件發(fā)布目錄結(jié)構(gòu),如圖5所示,在procs下是 程序和數(shù)據(jù)文件,在works下是一些進(jìn)程對應(yīng)的目錄,進(jìn)程對應(yīng)的目錄下有一些子目錄,如 log目錄用來存放運(yùn)行過程中產(chǎn)生的日志,而cbploy下用來存放插件部署文件和屬性數(shù)據(jù) 文件。下面結(jié)合圖1 圖3對統(tǒng)一網(wǎng)管的需求進(jìn)行說明。(一 )需求來源在統(tǒng)一網(wǎng)管中,需要將各種產(chǎn)品線的設(shè)備在一個網(wǎng)管中管理,各產(chǎn)品線有多種類 型的設(shè)備,各設(shè)備的差異較大。在一個網(wǎng)管中管理多個產(chǎn)品線的設(shè)備,既節(jié)省資源又便于統(tǒng) 一管理,在設(shè)備數(shù)量龐大的情況下,需要分布式的管理。(二)開發(fā)平臺自適配通信環(huán)境 ACE(ADAPTIVE Communication Environment),編譯器 vc7 或 gcc,支持Win32、solaris和Iinux等多個操作系統(tǒng)。(三)插件式開發(fā)的實(shí)現(xiàn)1、定義基礎(chǔ)擴(kuò)展點(diǎn)。class IExtension {public:
IExtension(const char氺version =〃 V 1. O");virtual IExtension () {}virtual int Init (int argc, char^argv[]);virtual int Finish();virtual void SetVersion (const char氺version);virtual const char氺GetVersion();virtual void ProcessDebugCommand(std::string&cmd,::StringList¶ s, std::ostream&os);private:_STD_string m_strVersion ;};Init根據(jù)進(jìn)程啟動參數(shù)初始化插件。Finish用于在擴(kuò)展點(diǎn)銷毀前做清理
工作,如關(guān)閉句柄和釋放內(nèi)存等。GetVersion和SetVersion用于設(shè)置插件版本。 ProcessDebugCommand是一個支持命令行調(diào)適的方法,類似基礎(chǔ)功能可根據(jù)需要添加函數(shù)。插件基礎(chǔ)擴(kuò)展點(diǎn)實(shí)例創(chuàng)建函數(shù)IExtension*Create_Extension (const char*path,CProperties*properties)是插件動態(tài)庫對唯一的導(dǎo)出函數(shù),創(chuàng)建該插件基礎(chǔ) 擴(kuò)展點(diǎn)的實(shí)例,path是插件所在的目錄路徑,properties是該插件屬性的名值對,函數(shù)返 回擴(kuò)展點(diǎn)指針。插件的名稱用‘·,分割字符串,如ican. context, localservice. log表示一個 插件id, ican. context, localservice表示是一個ILocalService對應(yīng)的插件,通過對插 件id力口擴(kuò)展的方式表示其子插件,如ican. context, localservice. log. xxplg表示ican. context, localservice的子插件,這種id有點(diǎn)長,可以采用別名方式來簡化插件id,如log 可以作為 ican. context, localservice. log 的別名。插件描述文件用xml文件定義,文件中定義插件ID、版本、對應(yīng)dll的名稱等,也可 以約定某種類型得子插件由其父插件來加載。2、定義本地服務(wù)提供者接口 ILocalService、服務(wù)接口 IServant和IServant的本 地或遠(yuǎn)程代理IService接口,這些接口派生自IExtension,這些插件實(shí)現(xiàn)了網(wǎng)管的具體功 能,因此這些插件在數(shù)量上有很多,如果需要還可以定義一些其它插件接口。下面給出了這 三個接口的主要方法2. IlLocalService對本進(jìn)程模塊提供服務(wù)virtual void PreInit (IContext^ctx)virtual IDefaultContext氺GetCtx(void)其中,PreInit用于設(shè)置上下文,GetCtx用于獲得上下文。2. 21 Servant對本進(jìn)程或遠(yuǎn)程進(jìn)程提供服務(wù),服務(wù)提供主要通過Get、Set來實(shí)現(xiàn)virtual void PreInit (IContext^ctx)virtual CMsg*Get(CMsg&msgbuf, CMsgHead&headinfo)virtual void Set(CMsg&msgbuf, CMsgHead&headinfo)PreInit用于設(shè)置上下文,Get是有應(yīng)答報文處理函數(shù),CMsg表示報文,headinfo 表示命令碼和用戶等報文頭信息,Set是無應(yīng)答報文處理函數(shù)。
2. 3客戶通過IService實(shí)現(xiàn)對IServant的Get和Set的調(diào)用,通過 IContext: HasServant 可以判斷 servant 是否在本地。virtual void PreInit(IContext^ctx, const char^servantName)virtual void SetServant (IIcanServant^servant)virtual CMsg*Get(CMsg&msgbuf, CMsgHead&headinfo)virtual void Set(CMsg&msgbuf, CMsgHead&headinfo)PreInit用于設(shè)置上下文以及對應(yīng)IServant的名稱servantName, SetServant用 于設(shè)置對應(yīng)IServant的名稱,Get是有應(yīng)答報文處理函數(shù),Set是無應(yīng)答報文處理函數(shù)。3、定義插件分組,按產(chǎn)品功能分為多個PPU,PPU是頂層組,一個PPU下有多個PMU, 一個PMU下有多個PMUFunction。PPU對應(yīng)一個目錄,而PMU對應(yīng)PPU下的一個子目錄,一 個插件功能組可以含有PMU的多個目錄,每個目錄下有多個插件或數(shù)據(jù)文件,這些插件功 能組可能有交叉目錄。PMUFunction中還定義了對其它功能組的依賴關(guān)系。4、定義進(jìn)程部署,在進(jìn)程工作目錄的文件中部署定義,該文件可以有多個,部署定 義文件用于定義本進(jìn)程部署哪些PMUFunction。5、定義 IContext 和 IExtensionService 接口,這些接口可以派生自 IExtension。5. 1 j^X IExtensionService 白勺力夕去virtual IExtension*CreateExtension (const char氺extName, boo 1 isSingleton);virtual void DestroyExtension (IExtension^pcExtension) = O ;virtual StringList GetExtensions (const char*pcSub ject) = 0;CreateExtension按照是否以單例方式創(chuàng)建名為extName的基礎(chǔ)擴(kuò)展點(diǎn)實(shí)例。 DestroyExtension銷毀擴(kuò)展點(diǎn)。GetExtensions獲取主體pcSubject的所有子插件,即用 ‘.’分割的插件ID的部分前綴。5. 2IContext在某個進(jìn)程中創(chuàng)建和運(yùn)行插件的上下文的方法virtual void PreInit (IExtensionService*)virtual ILocalService^GetLocalService(const char*extName, const char氺strpmufunc);virtual IServant^GetServant (const char*extName, const char氺strpmufunc);virtual IService^GetService (const char*extName, const char氺strpmufunc);virtual IExtensionService^GetExtService();virtual bool HasServant(const char*extName, const char^strpmufunc);PreInit用于設(shè)置插件工廠。GetLocalService獲得插件功能組strpmufunc下的 名為extName的ILocalService,strpmufunc為NULL,其中,查找范圍為本進(jìn)程的所有PMU。 GetServant 獲得插件功能組 strpmufunc 下的名為 extName 的 IServant。GetService 獲得 插件功能組strpmufunc下的名為extName的IService。HasServant判斷本進(jìn)程插件功能 組strpmufunc是否存在名為extName的IServant。GetExtService獲得插件工廠。6、ILocalSystem派生于ILocalService,是本進(jìn)程部署分析和插件組分析模塊,
8讀取本進(jìn)程屬性數(shù)據(jù)文件中的名值對,分析本進(jìn)程部署哪些插件組及插件組依賴樹,在本 實(shí)施方式中只要分析部署哪些功能組PmuFimction以及它們的依賴樹,依賴樹中葉子節(jié)點(diǎn) 對父節(jié)點(diǎn)有依賴,然后從樹根節(jié)點(diǎn)分層向葉子節(jié)點(diǎn)加載插件,同一個PMUFunction下的插 件可以按目錄或插件名定義先后加載順序。約定某種原則在程序啟動時加載某些類型插 件,有些類型插件按需加載,如本實(shí)施方式中啟動時加載具有IServant擴(kuò)展點(diǎn)的插件。7、實(shí)現(xiàn)上面各接口功能或插件,發(fā)布軟件。插件及dll按PPU、PMU分目錄放在 Procs目錄下,PMUFunction中含有那些目錄和插件,每個功能組對應(yīng)一個xml描述文件,在 Procs同級別定義works目錄,works目錄下是一些進(jìn)程目錄,存放與進(jìn)程相關(guān)的一些數(shù)據(jù) 文件,如進(jìn)程部署文件和屬性數(shù)據(jù)文件等。8、程序入口模塊通過程序的命令行指定進(jìn)程名稱,通過進(jìn)程名稱知道進(jìn)程的工作 目錄,這樣進(jìn)程入口模塊可以加載不同的進(jìn)程。創(chuàng)建IContext和IExtensionService,傳遞 進(jìn)程工作目錄給ILocalSystem,ILocalSystem負(fù)責(zé)按部署加載啟動時需要的插件,運(yùn)行時 直接調(diào)用IContext按需加載插件。此外,可以根據(jù)本發(fā)明的技術(shù)方案的說明和具體實(shí)施方式
做出各種可能的改變或 替換,如IContext和IExtensionService合并,描述文件不采用xml格式,基礎(chǔ)擴(kuò)展點(diǎn)接口 添加或減少一些方法,或是才用面向過程語言的結(jié)構(gòu)及函數(shù)指針實(shí)現(xiàn)接口。綜上所述,本發(fā)明具有以下技術(shù)效果1、分組管理插件,便于大型軟件對插件進(jìn)行 管理2、可以通過文件定義插件id和類型。3、具有統(tǒng)一的插件基礎(chǔ)接口,便于創(chuàng)建擴(kuò)展點(diǎn)。 4、支持分布式部署。5、進(jìn)程工作目錄和程序目錄分離,便于多個進(jìn)程共享程序文件。6、支 持進(jìn)程相關(guān)屬性名值對,便于進(jìn)程變量的定義。7、由于采用面向?qū)ο蠼涌跈C(jī)制,有很高的抽 象處理能力。此外,方法本身是通用的,不依賴于特定的操作系統(tǒng)和特定的面向?qū)ο笳Z言, 甚至在結(jié)構(gòu)化語言中也能實(shí)現(xiàn)這種插件機(jī)制。盡管上文對本發(fā)明進(jìn)行了詳細(xì)說明,但是本發(fā)明不限于此,本領(lǐng)域技術(shù)人員可以 根據(jù)本發(fā)明的原理進(jìn)行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應(yīng)當(dāng)理解為落入 本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種插件部署和加載方法,其特征在于,包括以下步驟A、將待加載的插件進(jìn)行分組;B、建立用于部署進(jìn)程要加載分組后的插件組的插件部署文件;C、部署文件分析模塊根據(jù)所述插件部署文件及所述插件組的依賴關(guān)系計算得到插件組依賴樹;D、程序入口模塊獲取所述進(jìn)程的進(jìn)程名,啟動進(jìn)程;以及E、插件加載模塊根據(jù)所述插件組依賴樹按所述進(jìn)程加載插件。
2.根據(jù)權(quán)利要求1所述的一種插件部署和加載方法,其特征在于,在所述步驟A之前, 還包括以下步驟建立用于添加插件實(shí)現(xiàn)基礎(chǔ)功能的基礎(chǔ)擴(kuò)展點(diǎn)接口和所述基礎(chǔ)擴(kuò)展點(diǎn)接口的插件基 礎(chǔ)擴(kuò)展點(diǎn)接口實(shí)例函數(shù);建立派生于所述基礎(chǔ)擴(kuò)展點(diǎn)的用于管理不同類型插件的相應(yīng)派生接口和所述派生接 口的插件派生接口實(shí)例函數(shù);以及 定義所述插件接口的類型。
3.根據(jù)權(quán)利要求1所述的一種插件部署和加載方法,其特征在于,在所述步驟D之前, 建立用于定義進(jìn)程啟動和運(yùn)行所需名值對的屬性數(shù)據(jù)文件。
4.根據(jù)權(quán)利要求3所述的一種插件部署和加載方法,其特征在于,在所述步驟D和步驟 E之間,還包括以下步驟所述程序入口模塊建立用于管理所述插件基礎(chǔ)擴(kuò)展點(diǎn)接口實(shí)例函數(shù)和所述插件派生 接口實(shí)例函數(shù)的插件工廠接口;所述程序入口模塊建立用于描述運(yùn)行環(huán)境的上下文接口 ;以及所述程序入口模塊解析所述插件部署文件、所述屬性數(shù)據(jù)文件和所述插件組依賴樹。
5.一種插件部署和加載裝置,其特征在于,包括插件分組模塊,用于將待加載的插件按類型劃分成適于按進(jìn)程加載的插件組; 插件部署模塊,用于建立部署進(jìn)程要加載插件組的插件部署文件; 部署文件分析模塊,用于根據(jù)所述插件部署文件及所述插件組的依賴關(guān)系計算得到插 件組依賴樹;程序入口模塊,用于獲取所述進(jìn)程的進(jìn)程名,啟動進(jìn)程;以及 插件加載模塊,用于根據(jù)所述插件組依賴樹按所述進(jìn)程加載插件。
6.根據(jù)權(quán)利要求5所述的一種插件部署和加載裝置,其特征在于,還包括插件定義模塊,用于定義插件基礎(chǔ)擴(kuò)展點(diǎn)接口、派生接口、所述插件基礎(chǔ)擴(kuò)展點(diǎn)接口的 實(shí)例函數(shù)、所述派生接口的實(shí)例函數(shù)和所述插件接口的類型。
7.根據(jù)權(quán)利要求6所述的一種插件部署和加載裝置,其特征在于,所述插件定義單元 包括插件基礎(chǔ)擴(kuò)展點(diǎn)定義單元,用于建立添加插件實(shí)現(xiàn)基礎(chǔ)功能的基礎(chǔ)擴(kuò)展點(diǎn)接口和所述 基礎(chǔ)擴(kuò)展點(diǎn)接口的插件基礎(chǔ)擴(kuò)展點(diǎn)接口實(shí)例函數(shù);插件派生接口定義單元,用于建立派生于所述基礎(chǔ)擴(kuò)展點(diǎn)的用于管理不同類型插件的 相應(yīng)派生接口和所述派生接口的插件派生接口實(shí)例函數(shù);以及 插件描述文件定義單元,用于定義所述插件接口的類型。
8.根據(jù)權(quán)利要求5所述的一種插件部署和加載裝置,其特征在于,還包括 屬性數(shù)據(jù)模塊,用于定義進(jìn)程啟動和運(yùn)行所需名值對的屬性數(shù)據(jù)文件。
9.根據(jù)權(quán)利要求8所述的一種插件部署和加載裝置,其特征在于,所述程序入口模塊 還用于建立管理所述插件基礎(chǔ)擴(kuò)展點(diǎn)接口實(shí)例函數(shù)和所述插件派生接口實(shí)例函數(shù)的插件 工廠接口 ;建立描述運(yùn)行環(huán)境的上下文接口 ;以及解析所述插件部署文件、所述屬性數(shù)據(jù) 文件和所述插件組依賴樹。
全文摘要
本發(fā)明公開了一種插件部署和加載的方法及裝置,該方法包括以下步驟將待加載的插件進(jìn)行分組;建立用于部署進(jìn)程要加載分組后的插件組的插件部署文件;部署文件分析模塊根據(jù)插件部署文件及插件組的依賴關(guān)系計算得到插件組依賴樹;程序入口模塊獲取進(jìn)程的進(jìn)程名,啟動進(jìn)程;插件加載模塊根據(jù)插件組依賴樹按進(jìn)程加載插件。本發(fā)明通過分組形式加載插件,支持分布式管理,進(jìn)程工作目錄和程序目錄分離,實(shí)現(xiàn)了不同功能進(jìn)程共享程序文件。
文檔編號G06F9/445GK101937353SQ20101029002
公開日2011年1月5日 申請日期2010年9月20日 優(yōu)先權(quán)日2010年9月20日
發(fā)明者張新平, 祝繼洪 申請人:中興通訊股份有限公司