專利名稱:動態(tài)庫管理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù),尤其涉及一種動態(tài)庫管理方法和裝置。
背景技術(shù):
在計算機處理技術(shù)中,通常把一些共用函數(shù)制作成函數(shù)庫,供其他程序使用。這些函數(shù)庫一般分為靜態(tài)庫和動態(tài)庫兩種。靜態(tài)庫在程序編譯時會被連接到目標代碼中,程序運行時不再需要該靜態(tài)庫。動態(tài)庫在程序編譯時并不會被連接到目標代碼中,而是在程序運行時才被載入。在現(xiàn)有的軟件架構(gòu)中,會先建立好底層中的所有動態(tài)庫,外部(前端)直接調(diào)用底層中的動態(tài)庫;當?shù)讓觿討B(tài)庫進行增加或減少時,外部代碼必須進行重新修改才能調(diào)用底層中的動態(tài)庫。這不便于技術(shù)開發(fā)人員進行軟件開發(fā),大大降低了開發(fā)效率,沒有很好的擴展性。雖然可以用插件技術(shù)解決部分問題,但是當前的插件技術(shù)只限制在很單一的一種類型的動態(tài)庫上,比如基于一個編解碼平臺,每個插件的功能都受到了限制。即,不是編碼與編碼的動態(tài)庫,相應(yīng)的插件是不認的。同時,插件技術(shù)都是根據(jù)每個軟件單獨設(shè)計的,沒有通用性,也沒有一個規(guī)范。若采用com技術(shù),系統(tǒng)也能統(tǒng)一管理各種com組件,但是這個管理是由操作系統(tǒng)來完成的,通過注冊表來實現(xiàn),對跨平臺不是很好,其次它的管理是操作系統(tǒng)一級的,不同的軟件之間的com組件會相互影響。
發(fā)明內(nèi)容
本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種動態(tài)庫管理方法和裝置??蓪討B(tài)庫實現(xiàn)統(tǒng)一管理,簡化前端和后端的實現(xiàn),使整個架構(gòu)通用化,更易開發(fā)和擴展。為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種動態(tài)庫管理方法,包括 加載管理動態(tài)庫的動態(tài)庫;
初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中; 所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求;
所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,并根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。其中,所述將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中可包括
調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。同時,所述方法還可進一步包括,預(yù)先生成所述管理動態(tài)庫的動態(tài)庫。
所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫為多個相同或不同類型的底層動態(tài)庫。所述管理動態(tài)庫的動態(tài)庫包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能包括
根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù); 被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù); 所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。另一方面,本發(fā)明實施例還提供了一種動態(tài)庫管理裝置,該裝置包括 加載模塊,用于加載管理動態(tài)庫的動態(tài)庫;
初始化模塊,用于初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中;
管理模塊,用于運行初始化后的所述管理動態(tài)庫的動態(tài)庫,所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求,并根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,再根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。其中,所述初始化模塊還用于,調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。所述裝置還可包括,生成模塊,用于預(yù)先生成所述管理動態(tài)庫的動態(tài)庫。所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫為多個相同或不同類型的底層動態(tài)庫。所述管理動態(tài)庫的動態(tài)庫包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,
所述管理模塊運行的初始化后的所述管理動態(tài)庫的動態(tài)庫還用于,根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù),被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù),所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。在本發(fā)明實施例中通過實現(xiàn)一個管理動態(tài)庫的動態(tài)庫,將底層的動態(tài)庫都注冊到其中,由其來統(tǒng)一管理所有的底層動態(tài)庫,前端通過該管理動態(tài)庫的動態(tài)庫來訪問底層動態(tài)庫的所有功能,這樣當?shù)讓觿討B(tài)庫發(fā)生改變時,只要修改在管理動態(tài)庫的動態(tài)庫中的注冊信息,就可以實現(xiàn)前端的訪問,提高了整個架構(gòu)的通用性。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例中的動態(tài)庫管理方法的一個具體流程示意圖; 圖2是本發(fā)明實施例中的動態(tài)庫管理裝置的一個具體組成示意圖;圖3是本發(fā)明實施例中的動態(tài)庫管理方法的另一個具體流程示意圖; 圖4是本發(fā)明實施例中的管理動態(tài)庫的動態(tài)庫中的表結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。在本發(fā)明實施例中,通過一個管理動態(tài)庫的動態(tài)庫實現(xiàn)前端對底層動態(tài)庫的調(diào)用,由于底層動態(tài)庫只需要在管理動態(tài)庫的動態(tài)庫中進行功能的注冊,前端通過注冊的函數(shù)就可以實現(xiàn)相應(yīng)的功能調(diào)用,使得前端可以通過管理動態(tài)庫的動態(tài)庫提供的統(tǒng)一接口即可,當?shù)讓觿討B(tài)庫發(fā)生改變時,前端并不需要進行代碼開發(fā),極大的提高了系統(tǒng)在開發(fā)的效率。如圖1所示,為本發(fā)明實施例中的動態(tài)庫管理方法的一個具體流程示意圖。該流程包括如下步驟。101、加載管理動態(tài)庫的動態(tài)庫。當然,在本步驟之前還可包括預(yù)先生成所述管理動態(tài)庫的動態(tài)庫的步驟。由于在系統(tǒng)運行時,可能出現(xiàn)多次加載管理動態(tài)庫的動態(tài)庫的情況,因而并不一定在每次加載動作之前都有一生成動作。102、初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。比如,通過調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。其中,所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫可為多個相同或不同類型的底層動態(tài)庫。如這些底層動態(tài)庫可以都是Photoshop的底層動態(tài)庫,也可以是video converter的底層動態(tài)庫,也可以是photoshop和video converter的底層動態(tài)庫的組合,寸寸。103、所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求。104、所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,并根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。在管理動態(tài)庫的動態(tài)庫中可包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,那么所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能可包括根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù);被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù);所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。相應(yīng)于上述的方法流程,本發(fā)明實施例還提供了一種動態(tài)庫管理裝置,如圖2所示,該裝置包括加載模塊20,用于加載管理動態(tài)庫的動態(tài)庫;初始化模塊22,用于初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中;管理模塊24,用
6于運行初始化后的所述管理動態(tài)庫的動態(tài)庫,所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求,并根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,再根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。其中,所述裝置還可包括,生成模塊26 (圖中標識為虛線),用于預(yù)先生成所述管理動態(tài)庫的動態(tài)庫。所述初始化模塊22還用于,調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫為多個相同或不同類型的底層動態(tài)庫。所述管理動態(tài)庫的動態(tài)庫包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,所述管理模塊M運行的初始化后的所述管理動態(tài)庫的動態(tài)庫還用于,根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù),被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù),所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。如圖3所示,為本發(fā)明實施例中的動態(tài)庫管理方法的另一個具體流程示意圖。該流程包括如下步驟。步驟301 預(yù)先生成管理動態(tài)庫的動態(tài)庫。步驟302 外部(界面或業(yè)務(wù)層)加載該管理動態(tài)庫的動態(tài)庫。步驟303 外部調(diào)用管理動態(tài)庫的動態(tài)庫的初始化函數(shù)。步驟304 管理動態(tài)庫的動態(tài)庫進行初始化,加載所有的被管理的底層動態(tài)庫,并調(diào)用它們的注冊函數(shù),讓被管理的底層動態(tài)庫把它支持的功能注冊到該管理動態(tài)庫的動態(tài)庫中,由管理動態(tài)庫的動態(tài)庫統(tǒng)一管理。步驟305 外部(界面或業(yè)務(wù)層)請求詢問該管理動態(tài)庫的動態(tài)庫。步驟306 該管理動態(tài)庫的動態(tài)庫根據(jù)接收的請求詢問向外部返回結(jié)果信息。具體地,當管理動態(tài)庫的動態(tài)庫根據(jù)接收的請求查詢自己的功能注冊表,若存在支持的功能對象,則向外部返回該功能對象;若不存在支持的功能對象,則向外部返回空的信息等以指示不支持。從上所述的實施例可以理解,從控制權(quán)的角度來說,界面(即前端、或稱外部)提供了一個外部程序,用戶雙擊它的時候,系統(tǒng)把控制權(quán)交給了這個程序,這個程序得到了控制權(quán),然后它得以執(zhí)行;該程序執(zhí)行時,先加載管理動態(tài)庫的動態(tài)庫,然后通過調(diào)用管理動態(tài)庫的動態(tài)庫的初始化函數(shù)(即對管理動態(tài)庫的動態(tài)庫進行初始化),把控制權(quán)交給管理動態(tài)庫的動態(tài)庫;管理動態(tài)庫的動態(tài)庫得到控制權(quán)限后,加載所有被管理的動態(tài)庫,并對這些動態(tài)庫的功能進行注冊(如,將這些功能放到自己的功能注冊表中),之后管理動態(tài)庫的動態(tài)庫就有了所有的功能的一個列表;然后管理動態(tài)庫的動態(tài)庫從初始化函數(shù)返回(即初始化結(jié)束),把權(quán)限交回給外部。外部要詢問管理動態(tài)庫的動態(tài)庫的一個功能的時候,外部調(diào)用管理動態(tài)庫的動態(tài)庫的request函數(shù),再次把控制權(quán)交給管理動態(tài)庫的動態(tài)庫,管理動態(tài)庫的動態(tài)庫把結(jié)果返回,控制權(quán)再次回到外部。綜上所述可見,本發(fā)明實施例的核心是實現(xiàn)一個管理動態(tài)庫的動態(tài)庫,功能上, 它的功能相當于windows的注冊表,底層的動態(tài)庫都應(yīng)該注冊到它上面來,由它來統(tǒng)一管理底層的所有動態(tài)庫;而外部的業(yè)務(wù)邏輯層只應(yīng)該通過它來訪問到底層的所有功能,就像 windows的程序通過注冊表來訪問到系統(tǒng)上的組件。
同時,管理動態(tài)庫的動態(tài)庫除了可以支持注冊組件,還支持注冊功能函數(shù),就是把一些通用的函數(shù)的地址注冊進來,然后用一個動態(tài)的地址表保存著,一個函數(shù)也對應(yīng)一個 IID,外部通過此核心的管理動態(tài)庫中轉(zhuǎn)來訪問到真實的函數(shù)地址;如果一個功能有多個組件實現(xiàn)了,像direct show那樣選擇一個組件(自動連接,也可手動連接)。在本發(fā)明的一些具體實施例中,該管理動態(tài)庫的動態(tài)庫要實現(xiàn)的函數(shù)可包括 Init 遍歷當前目錄下的所有dll,并調(diào)用它們的注冊函數(shù);
Regedit:加載指定動態(tài)庫,并調(diào)用它的注冊函數(shù); Unregedit:卸載指定動態(tài)庫; Uninit:反初始化;
Request:查詢函數(shù),查詢到底層是否實現(xiàn)了指定功能; Get_info:返回所有的注冊信息,調(diào)試分析用。相應(yīng)的,被管理的動態(tài)庫要實現(xiàn)的函數(shù)包括
Regedit 把自己支持的功能與對應(yīng)的接口注冊到管理的動態(tài)庫里,讓上層可以訪問到自己支持的功能,也要把自己對一個功能支持的完美程序注冊進去,為上層調(diào)用時提供一個選擇性,如果另一個組件也實現(xiàn)了我們的功能,它的實現(xiàn)比我們完美,那么應(yīng)該調(diào)用它而不是自己;
Unregedit:上層要卸載自己的時候,會調(diào)用這個函數(shù),做一些相應(yīng)的處理; Request:功能請求函數(shù),用來讓上層詢問是否支持一個指定功能。因此,本發(fā)明實施例所提供的方法和裝置,可以動態(tài)地增加和減少管理的動態(tài)庫, 而上層無需進行重新修改即能調(diào)用底層中的動態(tài)庫。并且,與現(xiàn)有技術(shù)中的插件不同,本發(fā)明實施例所提供的方法和裝置并不只限制在管理很單一的一種類型的動態(tài)庫上。同時,為了實現(xiàn)安全性,管理動態(tài)庫的動態(tài)庫可實現(xiàn)兩張函數(shù)指針表,一個是存放將底層動態(tài)庫的功能注冊進來的函數(shù)指針,叫表A,一個則由管理動態(tài)庫的動態(tài)庫生成,叫表B,都存放指針。A表與B表中的指針是一一對應(yīng)的關(guān)系,上層調(diào)用B表中的函數(shù),B表中的函數(shù)跳轉(zhuǎn)到統(tǒng)一入口函數(shù),第一入口函數(shù)再跳轉(zhuǎn)到A表中對應(yīng)的函數(shù),A表中的函數(shù)指針是指向插件中對應(yīng)的函數(shù)的。上層調(diào)用的所有功能都會經(jīng)過統(tǒng)一入口函數(shù),如圖4所示??梢栽诮y(tǒng)一入口函數(shù)進行安全驗證,與過濾功能等等。這整個過程就像操作系統(tǒng)的系統(tǒng)調(diào)用一樣,B表對應(yīng)的是操作系統(tǒng)的API表,統(tǒng)一入口函數(shù)相當于操作系統(tǒng)的系統(tǒng)調(diào)用入口(或叫中斷入口,在P3之后的CPU叫快速系統(tǒng)調(diào)用入口),A表相當于操作系統(tǒng)內(nèi)核中的API表。另外,通過本發(fā)明實施例提供的技術(shù)方案,當兩個軟件都是按照這樣的方法去管理時,比如一個是photoshop,別一個是video Converter,那么這兩個底層(底層的所有動態(tài)庫)可以合并,相當于把所有的功能插件放一起就行了,這個新的底層將同時提供 photoshop與video Converter的功能。就像emacs這個軟件一樣,可以用它來打游戲,可以用它來寫代碼,可以用它來聽音樂,也可以用它來收發(fā)郵件。這是一種二進制級的復(fù)合的關(guān)系,也是一種組合的關(guān)系。這樣一個架構(gòu)的設(shè)計方法,由于動態(tài)庫是二進制級的,因此是二進制級的組合,二進制級的重用。綜上可知,在本發(fā)明實施例中通過實現(xiàn)一個管理動態(tài)庫的動態(tài)庫,將底層的動態(tài)庫都注冊到其中,由其來統(tǒng)一管理所有的底層動態(tài)庫,前端通過該管理動態(tài)庫的動態(tài)庫來訪問底層動態(tài)庫的所有功能,這樣當?shù)讓觿討B(tài)庫發(fā)生改變時,只要修改在管理動態(tài)庫的動態(tài)庫中的注冊信息,就可以實現(xiàn)前端的訪問,提高了整個架構(gòu)的通用性。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部 分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。以上所揭露的僅為本發(fā)明一種較佳實施例而已,當然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種動態(tài)庫管理方法,其特征在于,所述方法包括加載管理動態(tài)庫的動態(tài)庫;初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中;所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求;所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,并根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。
2.如權(quán)利要求1所述的動態(tài)庫管理方法,其特征在于,所述將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中包括調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。
3.如權(quán)利要求1所述的動態(tài)庫管理方法,其特征在于,所述方法還包括,預(yù)先生成所述管理動態(tài)庫的動態(tài)庫。
4.如權(quán)利要求1至3中任一項所述的動態(tài)庫管理方法,其特征在于,所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫為多個相同或不同類型的底層動態(tài)庫。
5.如權(quán)利要求4所述的動態(tài)庫管理方法,其特征在于,所述管理動態(tài)庫的動態(tài)庫包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能包括根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù);被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù);所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。
6.一種動態(tài)庫管理裝置,其特征在于,所述裝置包括加載模塊,用于加載管理動態(tài)庫的動態(tài)庫;初始化模塊,用于初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中;管理模塊,用于運行初始化后的所述管理動態(tài)庫的動態(tài)庫,所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求,并根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,再根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。
7.如權(quán)利要求6所述的動態(tài)庫管理裝置,其特征在于,所述初始化模塊還用于,調(diào)用所述底層動態(tài)庫的注冊函數(shù),將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中。
8.如權(quán)利要求6所述的動態(tài)庫管理裝置,其特征在于,所述裝置還包括,生成模塊,用于預(yù)先生成所述管理動態(tài)庫的動態(tài)庫。
9.如權(quán)利要求6至8中任一項所述的動態(tài)庫管理裝置,其特征在于,所述管理動態(tài)庫的動態(tài)庫管理的底層動態(tài)庫為多個相同或不同類型的底層動態(tài)庫。
10.如權(quán)利要求9所述的動態(tài)庫管理裝置,其特征在于,所述管理動態(tài)庫的動態(tài)庫包括前端調(diào)用函數(shù)表、統(tǒng)一入口函數(shù)和底層調(diào)用函數(shù)表,所述管理模塊運行的初始化后的所述管理動態(tài)庫的動態(tài)庫還用于,根據(jù)所述前端的訪問請求調(diào)用所述前端調(diào)用函數(shù)表中的函數(shù),被調(diào)用的所述前端調(diào)用函數(shù)表中的函數(shù)跳轉(zhuǎn)到所述統(tǒng)一入口函數(shù),所述統(tǒng)一入口函數(shù)再跳轉(zhuǎn)到所述底層調(diào)用函數(shù)表中對應(yīng)的函數(shù)。
全文摘要
本發(fā)明實施例公開了一種動態(tài)庫管理方法和裝置,該方法包括加載管理動態(tài)庫的動態(tài)庫;初始化所述管理動態(tài)庫的動態(tài)庫,所述初始化包括所述管理動態(tài)庫的動態(tài)庫加載管理的底層動態(tài)庫,并將所述底層動態(tài)庫支持的功能注冊到所述管理動態(tài)庫的動態(tài)庫中;所述管理動態(tài)庫的動態(tài)庫接收前端發(fā)送的訪問請求;所述管理動態(tài)庫的動態(tài)庫根據(jù)接收的所述訪問請求查詢注冊的底層動態(tài)庫支持的功能,并根據(jù)查詢結(jié)果向所述前端返回所述前端請求的底層動態(tài)庫支持的功能對象或返回結(jié)果為不支持。采用本發(fā)明,可對動態(tài)庫實現(xiàn)統(tǒng)一管理,簡化前端和后端的實現(xiàn),使整個架構(gòu)通用化,更易開發(fā)和擴展。
文檔編號G06F9/44GK102331931SQ20111020876
公開日2012年1月25日 申請日期2011年7月25日 優(yōu)先權(quán)日2011年7月25日
發(fā)明者姚育平 申請人:深圳市萬興軟件有限公司