一種實現(xiàn)插件的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)插件的方法和裝置。其中,所公開一種實現(xiàn)插件的方法包括:在主程序進程外設置插件引擎,當主程序需要調用插件時,所述插件引擎設置一個獨立于主程序的進程來啟動插件。由于插件的進程是獨立于主程序的,因此在插件的進程由于本身的質量問題而崩潰時,不會對主程序本身造成任何影響。
【專利說明】一種實現(xiàn)插件的方法和裝置
【技術領域】
[0001]本發(fā)明涉及計算機軟件【技術領域】,具體涉及一種實現(xiàn)插件的方法裝置。
【背景技術】
[0002]插件是一種遵循一定規(guī)范的應用程序接口編寫出來的程序?,F(xiàn)有技術常常利用插件來自由擴充主程序的功能,例如在IE中,安裝相關的插件后,WEB瀏覽器能夠直接調用插件程序,用于處理特定類型的文件。
[0003]但現(xiàn)有技術實現(xiàn)插件的方式往往是在主程序進程內直接插入插件,將插件的執(zhí)行作為主程序進程不可缺少的一部分。
[0004]這種實現(xiàn)插件的方法,插件往往是主程序處理核心任務的組件,插件都與主程序在一個進程內,這樣當某個或某些插件崩潰時,必然會導致整個主程序崩潰,這樣不但主程序的功能得不到擴展,還會使得主程序本身固有的功能的實現(xiàn)受到影響,安裝有該主程序的設備的工作性能也無法實現(xiàn)。而由于插件的由不同的機構或個人來開發(fā),常常出現(xiàn)個別插件由于質量差出現(xiàn)崩潰問題,因此這種方式導致主程序非常不穩(wěn)定,從而給用戶的使用帶來惡劣的體驗。
【發(fā)明內容】
[0005]有鑒于此,本發(fā)明的目的是提供一種實現(xiàn)插件的方法和裝置,保證主程序的執(zhí)行不因插件質量的參差不齊而出現(xiàn)崩潰的問題。
[0006]為了解決上述問題,本發(fā)明實提供了一種實現(xiàn)插件的方法,在主程序進程外設置插件引擎,該方法包括:
[0007]當主程序需要調用插件時,所述插件引擎設置一個獨立于主程序的進程來啟動插件。
[0008]其中,所述插件引擎設置一個獨立于主程序的進程來啟動插件包括:
[0009]讀取插件的配置信息,根據(jù)插件的配置信息對應更改主程序的相關參數(shù);
[0010]當用戶調用主程序相關參數(shù)時,根據(jù)相應的配置信息,設置一個獨立于主程序的進程調入并啟動插件的實施程序。
[0011]其中,所述插件的配置信息包括:
[0012]界面配置信息,用于配置插件的界面;
[0013]事件配置信息,用于定義插件的各種事件響應方式;和/或,
[0014]實施配置信息,用于定義實施進程的調用機制與參數(shù)生成過程以及調用實施進程的各種規(guī)則。
[0015]其中,所述主程序有界面時,所述界面配置信息包括界面接口元素、界面元素、和/或界面樣式;或
[0016]當所述主程序沒有界面時,所述界面配置信息包括插件調入點信息。
[0017]其中,進一步包括:[0018]當所述插件中包含子插件時,讀取所述子插件的配置信息;
[0019]根據(jù)所述子插件的配置信息,相應修改主程序和/或所述插件的相關參數(shù);
[0020]當用戶調用主程序和/或所述插件的相關參數(shù)時,建立獨立的進程啟動所述插件和/或所述子插件的實施程序。
[0021]其中,所述根據(jù)插件的配置信息對應更改主程序的相關參數(shù)包括:
[0022]根據(jù)所述插件的界面配置信息,改變所述主程序的界面;或讀取所述插件的調入點信息;
[0023]根據(jù)所述插件的事件配置信息,修改所述主程序的事件響應處理。
[0024]其中,所述事件包括:插件實施進程的回調事件,通過所述回調事件,所述插件可以回調到主程序或父程序。
[0025]本發(fā)明實施例還提供了 一種實現(xiàn)插件的裝置,設置于主程序進程外,包括:
[0026]第一模塊,用于讀取插件的配置信息;
[0027]第二模塊,用于當主程序需要調用插件時,向主程序提供插件的信息以供主程序加載,同時根據(jù)所述插件的信息設置獨立的進程啟動插件。
[0028]其中,所述第二模塊包括:
[0029]第一子模塊,用于根據(jù)插件的配置信息修改主程序相關參數(shù);
[0030]第二子模塊,用于當用戶調用主程序的相關參數(shù)時,建立獨立的進程啟動插件的實施程序。
[0031]由于本發(fā)明所提供的技術方案為在主程序外設置插件引擎,通過插件引擎控制插件的調用,使插件的進程獨立于主程序,從而插件的崩潰不會影響到主程序的進程。進一步的,將插件的配置信息和實施程序分離,在主程序需要實際調用插件時,才真正觸發(fā)插件的實施程序,節(jié)省了系統(tǒng)資源,提高了插件的加載速度,同時獲得更加靈活的插件調用方式。
【專利附圖】
【附圖說明】
[0032]圖1為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。
[0033]圖2為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。
[0034]圖3為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。
[0035]圖4為本發(fā)明一實施例公開的一種插件調用機制的示意圖。
【具體實施方式】
[0036]下面將結合附圖及實施例對本發(fā)明的技術方案進行更詳細的說明。
[0037]本發(fā)明公開了一種實現(xiàn)插件的方法,在主程序進程外設置插件引擎,通過插件引擎來控制插件的調用問題,插件引擎在調用插件時保證插件的進程獨立于主程序,從而在插件出現(xiàn)問題時不會影響到主程序的進程。
[0038]圖1為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。如圖1所示,該方法包括:
[0039]步驟101:在主程序進程外設置插件引擎。插件引擎可供主程序調用,是用于管理各種插件信息的組件。主程序對插件的任何操作都經過插件引擎,主程序只跟插件引擎來交互。[0040]步驟102:當主程序需要調用插件時,插件引擎讀取插件的信息,向主程序提供插件的信息以供主程序加載,同時根據(jù)插件的所述信息設置獨立的進程啟動插件。
[0041]其中,插件的信息可以是插件的原數(shù)據(jù)信息,包括插件的配置信息和實施程序,在本發(fā)明一實施例中,插件的配置信息和實施程序可以是獨立的兩部分,在本發(fā)明另一實施例中,兩者可以是一個整體。
[0042]當主程序在執(zhí)行過程中需要調用插件以擴展功能時,首先會詢問插件引擎有關插件的信息,如有哪些插件要生成自己的菜單項,這些菜單項調用的插件實施進程是什么,存儲在何處。根據(jù)插件的這些信息,主程序可以獲取插件事件響應方式,同時更改自己的事件響應方式,這樣才能在后續(xù)響應插件的事件。當插件的一個事件被觸發(fā)時(如用戶點擊主程序上的界面時觸發(fā)),插件引擎可以調用一個獨立的進程來啟動插件,生成跟用戶交互的某個或某些界面元素以及響應過程。某一個事件可以由多個小事件組成,這種情況下,插件下還包含子插件。
[0043]由于每個插件都由不同的事件觸發(fā),這些插件均會在獨立與主程序進程的不同的進程中執(zhí)行,即使插件進程崩潰也不會影響到主程序進程的正常執(zhí)行。同時由于各個插件的進程也是相互獨立的,一個插件進程的崩潰也不會影響到其他插件進程的執(zhí)行。
[0044]圖2為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。本實施例是在上述實施例的基礎上,把插件的配置信息部分與實施程序部分相分離,即本實施例插件是由配置信息和實施程序兩個彼此分離的部分組成。其中,插件的配置信息為插件引擎執(zhí)行插件的實施程序所需要的各項參數(shù),插件的實施程序負責插件的具體實施,通過接收的參數(shù)完成某項插件的任務。
[0045]步驟201:在主程序進程外設置插件引擎。
[0046]步驟202:當主程序需要調用插件時,首先啟動插件引擎,插件引擎讀取被調用插件的配置信息。
[0047]通常,預先將插件的配置信息儲存在定義好的相應目錄中,插件引擎會在相應目錄中查找和讀取相應的插件配置信息。
[0048]插件的配置信息具體包括:插件的界面配置信息、事件配置信息和實施配置信肩、O
[0049]界面配置信息用于配置插件的各種界面元素,包括配置插件的界面元素和界面接口元素。
[0050]其中配置插件的界面接口元素包括配置主程序里需要嵌入的插件界面接口,比如插件的菜單項,插件的按鈕欄,插件的彈出菜單項等等。
[0051]插件的界面元素一般由文本框,列表框,單選框,復選框等基本的GUI界面元素構成,比如可以包括對話框,確定框,文件詢問框,錯誤提示框等。用來在插件的事件響應過程中跟用戶進行交互,還可以定義一些交互的變量用來生成插件實施進程的調用參數(shù)。
[0052]插件的界面配置信息還可以配置界面樣式信息。插件的界面樣式信息用于實現(xiàn)插件界面元素的樣式的靈活配置。可以單個配置界面樣式也可以整體配置,整體配置的方式可以統(tǒng)一插件的整體風格,單個配置可以進行界面元素的個性化配置。每個插件都可以根據(jù)用戶的不同要求定義插件的界面樣式,例如可以像c S S那樣靈活的對插件界面改頭換面。[0053]插件的事件配置信息定義插件的各種事件響應方式。具體來說,插件的事件配置信息定義包括插件的界面元素對事件響應的處理和插件的實施程序在執(zhí)行過程中的各種事件響應處理。其中,在定義界面元素對事件響應的處理時,對于沒有界面的主程序,就需要定義主程序對插件的調入點信息。
[0054]需要強調的是,該部分還定義了一個重要的事件,即插件實施進程的回調事件,實質上就是插件實施進程的回調接口。通過該回調接口,可以回調到主程序或父程序。
[0055]插件的實施配置信息,該部分負責插件實施進程的配置,可以配置實施進程的調用機制與參數(shù)生成過程以及調用實施進程的各種規(guī)則,如需要定義對實施進程調用的接口,以實現(xiàn)主程序對實施進程的調用。
[0056]步驟203:插件引擎根據(jù)插件的配置信息,修改主程序相關參數(shù),使得主程序在后續(xù)與插件的事件建立關系,并支持相應插件的事件響應。
[0057]插件引擎讀取插件的配置信息后,將插件的配置信息反饋給主程序,根據(jù)相應的配置信息改變主程序的界面和事件。具體來說包括:
[0058]I)界面部分
[0059]插件的界面接口元素:根據(jù)插件的配置信息直接在主程序的界面里添加插件的菜單項,插件的按鈕欄,插件的彈出菜單項等等。
[0060]插件的界面元素:根據(jù)插件的配置信息,在事件相應過程中,跳出對話框,確定框,文件詢問框,錯誤提示框等。
[0061]插件界面元素的樣式,根據(jù)插件的配置信息,用來實現(xiàn)插件界面樣式的靈活配置。
[0062]若主程序沒有界面,則需要根據(jù)讀取到的插件調入點信息確定插件的調入點。
[0063]2)事件部分
[0064]插件引擎還需要根據(jù)配置信息對應更改主程序的事件響應處理。
[0065]步驟204:當用戶調用主程序的相關參數(shù)時,觸發(fā)一個事件,插件引擎建立獨立的進程啟動插件的實施程序。
[0066]在具體的實施例中,當用戶點擊插件在主程序的界面(比如某個菜單項或按鈕)時,觸發(fā)相應插件的事件,事件觸發(fā)后為該實施進程建立單獨的進程,該進程獨立與主程序的進程。
[0067]本實施例所提供的方法并不僅限于調用一個插件,可以同時調用多個插件,即一個主程序可以調用多個插件進程,而各個插件的進程又是相互獨立的。
[0068]在本實施例中,將插件的配置信息和實施程序完全隔離,在主程序需要實際調用插件時,才真正觸發(fā)插件的實施程序,節(jié)省了系統(tǒng)資源,提高了插件的加載速度,同時獲得更加靈活的插件調用方式。
[0069]在本發(fā)明另一實施例中,為插件開發(fā)者提供界面定義接口、事件定義接口、樣式定義接口等,插件開發(fā)者只需要簡單的配置就可以生成自己的插件,極大地簡化了插件開發(fā)的復雜度。
[0070]在本發(fā)明一實施例中,當前被調用的插件中又可以包含另一個插件,則在當前被調用插件的實施程序的執(zhí)行過程中,進一步調用另一個插件,另一個插件定義為當前被調用插件的子插件。圖3為本發(fā)明一實施例公開的一種實現(xiàn)插件的方法的流程圖。如圖3所示,該方法包括如下步驟:[0071]步驟301:在主程序進程外設置插件引擎。
[0072]步驟302:插件引擎讀取將被調用的插件(后續(xù)稱為父插件)以及其子插件的配置信息,包括插件與子插件的關系信息(如子插件下可能還包含更低一層次的子插件)。
[0073]步驟303:插件引擎將父插件的配置信息以及與主程序相關的子插件配置信息返回給主程序,主程序根據(jù)返回的父插件配置信息和子插件配置信息修改主程序相關參數(shù),渲染界面元素以及對插件的觸發(fā)事件,使得主程序在后續(xù)與插件的事件建立關系,并支持相應插件的事件響應。
[0074]如果沒有任何與主程序相關的子插件,則插件引擎僅返回父插件配置信息給主程序。
[0075]這里,如果某些子插件的界面信息需要顯示在主程序界面上,那么這些子插件就可以稱為與主程序相關的插件。
[0076]步驟304:插件引擎將與父插件相關的子插件配置信息返回給父插件,父插件根據(jù)返回的子插件配置信息修改父插件相關參數(shù),使得父插件在后續(xù)與插件的事件建立關系,并支持相應插件的事件響應。
[0077]這里,如果某些子插件的界面信息需要顯示在父插件界面上,那么這些子插件就可以稱為與父插件相關的插件。
[0078]具體來說,每個插件相對于其子插件而言就是其主程序,即插件與子插件之間通過插件引擎進行交互。
[0079]步驟305:當用戶調用主程序或者父插件的相關參數(shù)時,觸發(fā)一個事件,插件引擎建立獨立的進程啟動事件對應的父插件或子插件的實施程序。
[0080]如當用戶點擊主程序上與父插件A相關的功能按鈕時,插件引擎建立獨立進程啟動父插件的實施程序,彈出對話框,如果用戶此時進一步點擊對話框中與某個子插件相關的功能按鈕時,插件引擎建立獨立進程啟動該子插件的實施程序。圖4為上述實施例所示的插件調用機制的示意圖。
[0081]綜合以上實施例所公開的技術方案,可以通過設置于主程序進程外的插件引擎啟用多個插件進程,多個插件的實施進程都是相互獨立的,且都在主程序進程外。一個插件進程也可以包含多個子插件進程,各個子插件實施進程互相獨立。插件與主程序之間,子插件與插件之間又通過回調接口互相合作,共同完成任務。
[0082]本發(fā)明實施例還提供了一種實現(xiàn)插件的裝置,根據(jù)上述描述即可知道,該實現(xiàn)插件的裝置可以是插件引擎。本發(fā)明所提供的實現(xiàn)插件的裝置,設置于主程序進程外,用于控制插件的調用,包括:
[0083]第一模塊,用于讀取插件的信息;第一模塊和插件之間具有信息傳輸通道,可以從插件處獲得該插件的配置信息;
[0084]第二模塊,用于當主程序需要調用插件時,向主程序提供插件的信息以供主程序加載,同時根據(jù)所述插件的信息設置獨立的進程啟動插件。
[0085]其中,第二模塊又包括:
[0086]第一子模塊,用于根據(jù)插件的配置信息修改主程序相關參數(shù);
[0087]第二子模塊,用于當用戶調用主程序的相關參數(shù)時,建立獨立的進程啟動插件的實施程序。[0088]本領域技術人員可以根據(jù)上述規(guī)則,類推出其他各種設置方案,本發(fā)明可有其他多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員可以根據(jù)本發(fā)明做出各種相應的改變和變形,但這些相應的改變和變形都屬于本發(fā)明的權利要求保護的范圍。
【權利要求】
1.一種實現(xiàn)插件的方法,其特征在于,在主程序進程外設置插件引擎, 當主程序需要調用插件時,所述插件引擎設置一個獨立于主程序的進程來啟動插件。
2.根據(jù)權利要求1所述的方法,其特征在于,所述插件引擎設置一個獨立于主程序的進程來啟動插件包括: 讀取插件的配置信息,根據(jù)插件的配置信息對應更改主程序的相關參數(shù); 當用戶調用主程序相關參數(shù)時,根據(jù)相應的配置信息,設置一個獨立于主程序的進程調入并啟動插件的實施程序。
3.根據(jù)權利要求2所述的方法,其特征在于,所述插件的配置信息包括: 界面配置信息,用于配置插件的界面; 事件配置信息,用于定義插件的各種事件響應方式;和/或, 實施配置信息,用于定義實施進程的調用機制與參數(shù)生成過程以及調用實施進程的各種規(guī)則。
4.根據(jù)權利要求2所述的方法,其特征在于,所述主程序有界面時,所述界面配置信息包括界面接口元素、界面元素、和/或界面樣式;或 當所述主程序沒有界面時,所述界面配置信息包括插件調入點信息。
5.根據(jù)權利要求2所述的方法,其特征在于,進一步包括: 當所述插件中包含子插件時,讀取所述子插件的配置信息; 根據(jù)所述子插件的配置信息,相應修改主程序和/或所述插件的相關參數(shù); 當用戶調用主程序和/或所述插件的相關參數(shù)時,建立獨立的進程啟動所述插件和/或所述子插件的實施程序。
6.根據(jù)權利要求3所述的方法,其特征在于,所述根據(jù)插件的配置信息對應更改主程序的相關參數(shù)包括: 根據(jù)所述插件的界面配置信息,改變所述主程序的界面;或讀取所述插件的調入點信息; 根據(jù)所述插件的事件配置信息,修改所述主程序的事件響應處理。
7.根據(jù)權利要求3或6所述的方法,其特征在于,所述事件包括:插件實施進程的回調事件,通過所述回調事件,所述插件可以回調到主程序或父程序。
8.一種實現(xiàn)插件的裝置,其特征在于,設置于主程序進程外,包括: 第一模塊,用于讀取插件的配置信息; 第二模塊,用于當主程序需要調用插件時,向主程序提供插件的信息以供主程序加載,同時根據(jù)所述插件的信息設置獨立的進程啟動插件。
9.根據(jù)權利要求8所述的裝置,其特征在于,所述第二模塊包括: 第一子模塊,用于根據(jù)插件的配置信息修改主程序相關參數(shù); 第二子模塊,用于當用戶調用主程序的相關參數(shù)時,建立獨立的進程啟動插件的實施程序。
【文檔編號】G06F9/48GK103544058SQ201210244214
【公開日】2014年1月29日 申請日期:2012年7月16日 優(yōu)先權日:2012年7月16日
【發(fā)明者】王東臨 申請人:天津書生投資有限公司