專利名稱:一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法及客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法及客戶端。
背景技術(shù):
隨著計算機(jī)的發(fā)展,在客戶端上可以運(yùn)行各種各樣類型的應(yīng)用,比如網(wǎng)頁(web)應(yīng)用、非開源軟件(ark)應(yīng)用及GF應(yīng)用等。當(dāng)客戶端運(yùn)行某種類型的應(yīng)用時,需要加載運(yùn)行該應(yīng)用的運(yùn)行環(huán)境及宿主程序,然后才能運(yùn)行應(yīng)用。這就需要可以獲取到該應(yīng)用的運(yùn)行環(huán)境程序及宿主程序。目前,獲取到該應(yīng)用的運(yùn)行環(huán)境程序及宿主程序的方式為:各種應(yīng)用的運(yùn)行環(huán)境都存儲在客戶端的動態(tài)鏈接庫(DLL)中,在應(yīng)用的配置文件中設(shè)置調(diào)用該DLL所存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,在運(yùn)行應(yīng)用時,根據(jù)應(yīng)用的配置文件中設(shè)置調(diào)用該DLL所存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,調(diào)用該DLL所存儲的運(yùn)行環(huán)境獲得;應(yīng)用將宿主程序與自身一起進(jìn)行數(shù)據(jù)包打包處理,在獲取宿主程序時直接解析數(shù)據(jù)包獲得。但是,采用這種方式獲取該應(yīng)用的運(yùn)行環(huán)境程序及宿主程序存在缺點(diǎn),第一,由于要在應(yīng)用的數(shù)據(jù)包中承載宿主程序,所以會使得數(shù)據(jù)包體積臃腫,且對宿主程序無法進(jìn)行擴(kuò)展處理;第二,對于不同類型的應(yīng)用,所需要的運(yùn)行環(huán)境不同,所要鏈接的DLL也不同,所以對于每個應(yīng)用的配置文件,都要單獨(dú)設(shè)置調(diào)用該DLL所存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,給開發(fā)應(yīng)用的人員 造成麻煩。當(dāng)然,對于該DLL所存儲的運(yùn)行環(huán)境,也可以采取多實(shí)例化,也就是通過調(diào)用不同的參數(shù)得到的為不同的運(yùn)行環(huán)境,這時,應(yīng)用的配置文件中就需要設(shè)置這些參數(shù),在調(diào)用該DLL所存儲的運(yùn)行環(huán)境時將不同的參數(shù)寫入,但是,對于客戶端的應(yīng)用層來說,在安裝該運(yùn)行環(huán)境時,比較難以根據(jù)不同的參數(shù)區(qū)分不同應(yīng)用的運(yùn)行環(huán)境,且應(yīng)用的配置文件的編寫也比較復(fù)雜。綜上,目前在應(yīng)用運(yùn)行時,如何簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境程序及宿主程序成為了一個亟待解決的問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法,該方法能夠簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境程序及宿主程序。本發(fā)明還提供了一種實(shí)現(xiàn)應(yīng)用運(yùn)行的客戶端,該客戶端能夠簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境程序及宿主程序。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法,設(shè)置每種應(yīng)用類型的加載器,加載器設(shè)置對應(yīng)應(yīng)用類型的動態(tài)鏈接庫DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,該方法還包括:
接收應(yīng)用運(yùn)行指令后,中心進(jìn)程從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程;子進(jìn)程根據(jù)接收的該信息安裝對應(yīng)該應(yīng)用類型的加載器;子進(jìn)程控制該加載器運(yùn)行,加載器根據(jù)設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序;子進(jìn)程運(yùn)行該應(yīng)用。一種實(shí)現(xiàn)應(yīng)用運(yùn)行的客戶端,包括:中央處理器、加載器設(shè)置模塊及加載器模塊,其中,加載器設(shè)置模塊,用于設(shè)置每種應(yīng)用類型的加載器到加載器模塊中,該加載器中設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息;中央處理器,用于采用中心進(jìn)程接收應(yīng)用運(yùn)行指令,從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程,子進(jìn)程控制該加載器運(yùn)行,運(yùn)行該應(yīng)用;加載器模塊 中,用于在中央處理器的子進(jìn)程控制下,根據(jù)設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序。由上述的技術(shù)方案可見,本發(fā)明設(shè)置每種應(yīng)用類型的加載器,該加載器中設(shè)置對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,應(yīng)用的配置文件中設(shè)置安裝該加載器的信息,當(dāng)要運(yùn)行該應(yīng)用時,根據(jù)應(yīng)用的配置文件中設(shè)置的安裝該加載器的信息,安裝該加載器,然后運(yùn)行該加載器,由加載器根據(jù)設(shè)置調(diào)用對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境及宿主程序。這樣,在應(yīng)用的配置文件中就無需設(shè)置所對應(yīng)的DLL存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,也無需加載宿主程序,使得應(yīng)用開放容易,在運(yùn)行時只要安裝加載器,就可以簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境及宿主程序。
圖1為本發(fā)明實(shí)施例提供的實(shí)現(xiàn)應(yīng)用運(yùn)行的方法流程圖;圖2為本發(fā)明實(shí)施例提供的實(shí)現(xiàn)應(yīng)用運(yùn)行的客戶端結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例提供的加載器調(diào)用示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。為了簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境程序及宿主程序,本發(fā)明實(shí)施例設(shè)置每種應(yīng)用類型的加載器,該加載器中設(shè)置對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,應(yīng)用的配置文件中設(shè)置安裝該加載器的信息,當(dāng)要運(yùn)行該應(yīng)用時,根據(jù)應(yīng)用的配置文件中設(shè)置的安裝該加載器的信息,安裝該加載器,然后運(yùn)行該加載器,由加載器根據(jù)設(shè)置調(diào)用對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境及宿主程序。這樣,在應(yīng)用的配置文件中就無需設(shè)置所對應(yīng)的DLL存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,也無需加載宿主程序,使得應(yīng)用開放容易,在運(yùn)行時只要安裝加載器即可。在這里,應(yīng)用可以為各種網(wǎng)頁或軟件。
圖1為本發(fā)明實(shí)施例提供的實(shí)現(xiàn)應(yīng)用運(yùn)行的方法流程圖,本發(fā)明實(shí)施例以在客戶端為例進(jìn)行說明,當(dāng)然,可以理解的是,本發(fā)明實(shí)施例提供的方法也可以在其他設(shè)備中完成,或多個設(shè)備交互完成,這里并不限制,設(shè)置每種應(yīng)用類型的加載器,該加載器中設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,其具體步驟為:步驟101、客戶端接收某種應(yīng)用類型運(yùn)行指令;在該步驟中,某種應(yīng)用類型運(yùn)行指令是用戶發(fā)送的,也就是用戶采用鼠標(biāo)點(diǎn)擊某個應(yīng)用,客戶端檢測到該點(diǎn)擊操作,確定用戶發(fā)送了某種應(yīng)用類型運(yùn)行指令;步驟102、客戶端的中心進(jìn)程從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,并將該信息發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程;在該步驟中,該應(yīng)用的配置文件中還預(yù)先設(shè)置了對應(yīng)該應(yīng)用類型的加載器信息;在該步驟中,客戶端的中心進(jìn)程會進(jìn)行當(dāng)前客戶端運(yùn)行情況,指定一個子進(jìn)程運(yùn)行該應(yīng)用,這是現(xiàn)有技術(shù),這里不再贅述;步驟103、客戶端的子進(jìn)程根據(jù)接收的該信息安裝對應(yīng)該應(yīng)用類型的加載器;
步驟104、在客戶端的子進(jìn)程控制下,該加載器運(yùn)行,加載器根據(jù)設(shè)置調(diào)用對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序;在該步驟中,加載器中設(shè)置的宿主程序信息可以為宿主程序,也可以為調(diào)用宿主程序的調(diào)用信息,這時,宿主程序已經(jīng)存儲在客戶端中了 ;在該步驟完成后,客戶端的子進(jìn)程將該加載器卸載;步驟105、客戶端的子進(jìn)程運(yùn)行應(yīng)用。圖2為本發(fā)明實(shí)施例提供的實(shí)現(xiàn)應(yīng)用運(yùn)行的客戶端結(jié)構(gòu)示意圖,包括:中央處理器、加載器設(shè)置模塊及加載器模塊,其中,加載器設(shè)置模塊,用于設(shè)置每種應(yīng)用類型的加載器到加載器模塊中,該加載器中設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息;中央處理器,用于采用中心進(jìn)程接收應(yīng)用運(yùn)行指令,從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程,子進(jìn)程控制該加載器運(yùn)行,運(yùn)行該應(yīng)用;加載器模塊中,用于在中央處理器的子進(jìn)程控制下,根據(jù)設(shè)置調(diào)用對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序。在該客戶端中,中央處理器,還用于子進(jìn)程在運(yùn)行完該加載器后,卸載該加載器。在該客戶端中,加載器模塊為一個DLL模塊。在本發(fā)明實(shí)施例中,在客戶端中為每種應(yīng)用類型提供一個加載器,由加載器屏蔽運(yùn)行該應(yīng)用類型所需要的運(yùn)行環(huán)境及宿主程序等,加載運(yùn)行該應(yīng)用類型所需要的運(yùn)行環(huán)境及宿主環(huán)境都由該加載器完成。每種應(yīng)用類型只需要在配置文件中指定對應(yīng)應(yīng)用類型的加載器信息即可。在本發(fā)明實(shí)施例中,各種應(yīng)用類型的運(yùn)行環(huán)境及宿主程序只與該應(yīng)用類型對應(yīng)的加載器交互,加載器在加載到要運(yùn)行該應(yīng)用類型的子進(jìn)程后,就直接運(yùn)行加載該應(yīng)用類型的運(yùn)行環(huán)境及宿主程序,完成后,要運(yùn)行該應(yīng)用類型的子進(jìn)程就可以卸載該加載器。為了使得加載器可以被多次加載和卸載,加載器在設(shè)置卸載時不設(shè)置任何條件。
在本發(fā)明實(shí)施例中,加載器是一個標(biāo)準(zhǔn)的DLL模塊,擁有標(biāo)準(zhǔn)的DLL導(dǎo)出接口,力口載器為所對應(yīng)應(yīng)用類型的中轉(zhuǎn),負(fù)責(zé)對所對應(yīng)應(yīng)用類型的運(yùn)行環(huán)境及宿主程序進(jìn)行管理,在管理過程中,可以進(jìn)行擴(kuò)展。在本發(fā)明實(shí)施例中,所述應(yīng)用為網(wǎng)頁時,所述客戶端為運(yùn)行網(wǎng)頁的客戶端;所述應(yīng)用為軟件時,所述客戶端為運(yùn)行軟件的客戶端。在本發(fā)明實(shí)施例中,所述客戶端為移動的運(yùn)行應(yīng)用的客戶端。圖3為本發(fā)明實(shí)施例提供的加載器調(diào)用示意圖,如圖所示,在子進(jìn)程獲取到應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息時,也就是圖中QplusAPP.exe中存儲的信息后,就可以確定出是哪一個應(yīng)用類型對應(yīng)的加載器,圖中包括三種類型的加載器-網(wǎng)頁應(yīng)用加載器(webapp.dll)、Ark應(yīng)用加載器(Arkapp.dll)及Gf應(yīng)用加載器(Gfapp.dll),然后子進(jìn)程加載對應(yīng)的加載器,對應(yīng)的加載器就可以調(diào)用對應(yīng)的運(yùn)行環(huán)境及宿主程序了。在本發(fā)明實(shí)施例中,在客戶端中設(shè)置了不同的指令來與加載器及應(yīng)用進(jìn)行交互:啟動指令為RunCommand,szDLLPath為加載器的dll路徑,一般包括在應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息中,szCo_and為加載器所采用的命令行參數(shù),用于指示裝載運(yùn)行環(huán)境及宿主程序;appID用于標(biāo)識各個應(yīng)用,taskID為子進(jìn)程進(jìn)行本次運(yùn)行應(yīng)用的標(biāo)識,用于調(diào)用或通知使用。在各個命令、指令和命令行參數(shù)使用時,可以攜帶appID及taskID標(biāo)識。本發(fā)明實(shí)施例為加載器設(shè)置了多個指令與外部進(jìn)行交互,包括:KStartup 為初始化指令,會攜帶 taskID 及 IQPlusPlatform, IQPlusPlatform 表示進(jìn)程對加載器提供服務(wù), 負(fù)責(zé)進(jìn)程間通信和消息過程注冊;2、Run為啟動應(yīng)用指令,攜帶appID及taskID ;3、Exit為退出應(yīng)用指令,攜帶appID及taskID ;4, OnCallAPI為接收調(diào)用指令,接受子進(jìn)程的調(diào)用,提供服務(wù);5、OnResult為接收調(diào)用結(jié)果指令,反饋接收調(diào)用結(jié)果;6、Cleanup O為反初始化指令,在客戶端的中心進(jìn)程從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息時,采用RunCommand獲取,并將該加載器信息發(fā)送給運(yùn)行應(yīng)用的子進(jìn)程,指示子進(jìn)程加載RunCommand所獲取的加載器。從上述方案可以看出,本發(fā)明實(shí)施例提出的實(shí)現(xiàn)應(yīng)用多態(tài)化統(tǒng)一加載的方案,提高了應(yīng)用的可擴(kuò)展性。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法,其特征在于,設(shè)置每種應(yīng)用類型的加載器,加載器設(shè)置對應(yīng)應(yīng)用類型的動態(tài)鏈接庫DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,該方法還包括: 接收應(yīng)用運(yùn)行指令后,中心進(jìn)程從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程; 子進(jìn)程根據(jù)接收的該信息安裝對應(yīng)該應(yīng)用類型的加載器; 子進(jìn)程控制該加載器運(yùn)行,加載器根據(jù)設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序; 子進(jìn)程運(yùn)行該應(yīng)用。
2.如權(quán)利要求1所述的方法,其特征在于,所述宿主程序信息為宿主程序或調(diào)用宿主程序的調(diào)用信息。
3.如權(quán)利要求1所述的方法,其特征在于,在加載運(yùn)行環(huán)境及宿主程序之后,在子進(jìn)程運(yùn)行應(yīng)用之前,該方法還包括: 子進(jìn)程卸載該加載器。
4.如權(quán)利要求1所述的方法,其特征在于,所述中心進(jìn)程從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息采用的為運(yùn)行指令RunCo_and。
5.如權(quán)利要求1所述的方法 ,其特征在于,所述加載器信息包括加載器路徑szDLLPath ; 所述加載器在加載運(yùn)行環(huán)境及宿主程序時,采用Startup指令進(jìn)行初始化,采用運(yùn)行指令RunCommand啟動,采用szCommand命令行參數(shù)進(jìn)行加載,且Startup指令、運(yùn)行指令RunCommand及szCommand命令分別攜帶有標(biāo)識應(yīng)用的應(yīng)用標(biāo)識,及本次運(yùn)行的運(yùn)行標(biāo)識taskIDo
6.一種實(shí)現(xiàn)應(yīng)用運(yùn)行的客戶端,其特征在于,包括:中央處理器、加載器設(shè)置模塊及加載器模塊,其中, 加載器設(shè)置模塊,用于設(shè)置每種應(yīng)用類型的加載器到加載器模塊中,該加載器中設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息; 中央處理器,用于采用中心進(jìn)程接收應(yīng)用運(yùn)行指令,從該應(yīng)用的配置文件中調(diào)用安裝對應(yīng)該應(yīng)用類型的加載器信息,發(fā)送給要運(yùn)行該應(yīng)用的子進(jìn)程,子進(jìn)程控制該加載器運(yùn)行,運(yùn)行該應(yīng)用; 加載器模塊中,用于在中央處理器的子進(jìn)程控制下,根據(jù)設(shè)置對應(yīng)應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,加載運(yùn)行環(huán)境及宿主程序。
7.如權(quán)利要求6所述的客戶端,其特征在于,所述中央處理器,還用于子進(jìn)程在運(yùn)行完該加載器后,卸載該加載器。
8.如權(quán)利要求6所述的客戶端,其特征在于,所述加載器模塊為一個DLL模塊。
9.如權(quán)利要求6 8任一所述的客戶端,其特征在于,所述應(yīng)用為網(wǎng)頁時,所述客戶端為運(yùn)行網(wǎng)頁的客戶端; 所述應(yīng)用為軟件時,所述客戶端為運(yùn)行軟件的客戶端。
10.如權(quán)利要求6 8任一所述的客戶端,其特征在于,所述客戶端為移動的運(yùn)行應(yīng)用的客戶端。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)應(yīng)用運(yùn)行的方法及客戶端,本發(fā)明設(shè)置每種應(yīng)用類型的加載器,該加載器中設(shè)置對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境的鏈接信息及宿主程序信息,應(yīng)用的配置文件中設(shè)置安裝該加載器的信息,當(dāng)要運(yùn)行該應(yīng)用時,根據(jù)應(yīng)用的配置文件中設(shè)置的安裝該加載器的信息,安裝該加載器,然后運(yùn)行該加載器,由加載器根據(jù)設(shè)置調(diào)用對應(yīng)該種應(yīng)用類型的DLL存儲的運(yùn)行環(huán)境及宿主程序。這樣,在應(yīng)用的配置文件中就無需設(shè)置所對應(yīng)的DLL存儲的運(yùn)行環(huán)境的靜態(tài)或動態(tài)鏈接信息,也無需加載宿主程序,使得應(yīng)用開放容易,在運(yùn)行時只要安裝加載器,就可以簡單且方便地獲取到應(yīng)用的運(yùn)行環(huán)境及宿主程序。
文檔編號G06F9/445GK103246525SQ20121002504
公開日2013年8月14日 申請日期2012年2月6日 優(yōu)先權(quán)日2012年2月6日
發(fā)明者游晶, 彭勇, 鄒代柱 申請人:騰訊科技(深圳)有限公司