基于插件機制的軟件系統(tǒng)及其實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種基于插件機制的軟件系統(tǒng),同時也公開了該軟件系統(tǒng)實現(xiàn)動態(tài)檢測插件機制的方法。該軟件系統(tǒng)包括多個插件、插件框架和基礎運行環(huán)境;插件框架中包括多個插槽、插槽調(diào)度模塊和插槽協(xié)調(diào)模塊,插件通過插槽與插件框架進行數(shù)據(jù)交換;插件具有配置文件,插件框架通過掃描配置文件的有無實現(xiàn)插件的即插即用。利用本發(fā)明,可以減少軟件系統(tǒng)的維護時間和成本,實現(xiàn)敏捷項目管理,快速響應客戶需求。這將改變軟件難于設計、難于管理、難于維護等局面,有效降低軟件的設計難度、管理難度、維護難度。
【專利說明】基于插件機制的軟件系統(tǒng)及其實現(xiàn)方法
【技術領域】
[0001]本發(fā)明涉及一種基于插件機制的軟件系統(tǒng),同時也涉及該軟件系統(tǒng)實現(xiàn)動態(tài)檢測插件機制的方法,屬于計算機軟件【技術領域】。
【背景技術】
[0002]20世紀60年代以來,隨著第三代計算機的產(chǎn)生,計算機的硬件性能發(fā)生了翻天覆地的變化,運行大型的復雜軟件系統(tǒng)已經(jīng)成為可能。然而,相應的軟件開發(fā)技術卻難以滿足大型軟件系統(tǒng)的開發(fā)需要,因而造成如下的諸多問題:
[0003]1.大多數(shù)大型軟件開發(fā)項目的成本都超過預算,開發(fā)進度一再拖延;
[0004]2.軟件產(chǎn)品質(zhì)量不可靠,大型軟件系統(tǒng)存在缺陷(bug)幾乎成為不可避免的問題;
[0005]3.軟件產(chǎn)品難以維護,后期的使用與維護會產(chǎn)生高額費用。
[0006]隨著信息技術的發(fā)展,軟件作為一種信息技術的主要載體日益滲透到社會政治、經(jīng)濟、文化乃至生活的各個方面和各個層次。軟件無所不在,其需求愈來愈多,復雜度愈來愈高,可用性要求愈來愈強。如何高效地開發(fā)和生產(chǎn)可靠、可信的軟件,是軟件領域一直面對的重大問題。
[0007]為此,在申請?zhí)枮镻CT/US2002/016425的PCT國際申請中,提出了一種用于允許客戶應用程序與服務器組件應用程序通信的框架體系結構系統(tǒng),包括:服務器引擎,用于向服務器提供客戶訪問,所述服務器引擎進一步包括:用于提供服務的服務器組件;用于提供所述服務的功能的所述服務器組件內(nèi)的具體實現(xiàn);以及用于允許客戶應用程序訪問所述具體實現(xiàn)的接口機制。
[0008]在申請?zhí)枮?01210158952.7的中國發(fā)明專利申請中,公開了一種基于文檔樹和消息泵的插件式軟件設計方法,按功能將軟件拆分成多個插件,一個插件對應著一個或多個功能模塊,每個插件分為模型層、視圖層和控制層,將所有插件中模型層里的數(shù)據(jù)和文檔抽取出來構成一個樹形結構的管理文檔。該技術方案加快和簡化了模塊間通信的速度,提高了系統(tǒng)的擴展性和可維護性。在插件視圖管理方面,采用框架容器統(tǒng)一管理視圖,易于軟件功能的擴展。
【發(fā)明內(nèi)容】
[0009]本發(fā)明所要解決的首要技術問題在于提供一種基于插件機制的軟件系統(tǒng)。
[0010]本發(fā)明所要解決的另一技術問題在于提供上述軟件系統(tǒng)實現(xiàn)動態(tài)檢測插件機制的方法。
[0011]為實現(xiàn)上述的發(fā)明目的,本發(fā)明采用下述的技術方案:
[0012]一種基于插件機制的軟件系統(tǒng),包括多個插件、插件框架和基礎運行環(huán)境;
[0013]所述插件框架中包括多個插槽、插槽調(diào)度模塊和插槽協(xié)調(diào)模塊,所述插件通過所述插槽與所述插件框架進行數(shù)據(jù)交換;[0014]所述插件具有配置文件,所述插件框架通過掃描所述配置文件的有無實現(xiàn)所述插件的即插即用。
[0015]其中較優(yōu)地,所述插件是以插件框架為基礎,按照預定的插件標準并結合特定的業(yè)務功能需求制作的軟件模塊;所述插槽是一個內(nèi)置標準協(xié)議的基礎軟件包。
[0016]其中較優(yōu)地,所述基礎運行環(huán)境包括操作系統(tǒng)、數(shù)據(jù)庫、WEB服務器和腳本服務器。
[0017]其中較優(yōu)地,所述插槽調(diào)度模塊用于依據(jù)業(yè)務需要,為所述插槽調(diào)用相應的插件。
[0018]其中較優(yōu)地,所述插件協(xié)調(diào)模塊用于實現(xiàn)各個插件之間的協(xié)作,共同完成一個功能業(yè)務。
[0019]其中較優(yōu)地,所述配置文件為XML格式。
[0020]一種實現(xiàn)動態(tài)檢測插件機制的方法,包括如下步驟:
[0021]插件框架定時掃描插件安裝的配置文件;如果新增加了配置文件,則判斷為新增加了插件,進一步檢測該插件的版本;如果新加入的插件版本比當前正在運行的插件版本更新,則插槽加載這個新加入的插件,卸載老的插件;否則,仍然保留當前運行的插件。
[0022]其中較優(yōu)地,如果所述插件在運行過程中需要卸載,則將對應所述插件的配置文件刪除;所述插件框架在定時掃描過程中,如果所述插槽發(fā)現(xiàn)某個插件所對應的配置文件不存在,立即卸載所述插件、回收資源。
[0023]利用本發(fā)明,可以減少軟件系統(tǒng)的維護時間和成本,實現(xiàn)敏捷項目管理,快速響應客戶需求。這將改變軟件難于設計、難于管理、難于維護等局面,有效降低軟件的設計難度、管理難度、維護難度。
【專利附圖】
【附圖說明】
[0024]圖1為基于插件機制的軟件系統(tǒng)整體架構示意圖;
[0025]圖2為插件與插槽之間的連接關系示意圖。
【具體實施方式】
[0026]對比硬件與軟件的發(fā)展歷史來看,兩者最后發(fā)展的結果大相徑庭,硬件越來越成熟穩(wěn)定,而軟件卻恰恰相反,隨著自身的發(fā)展出現(xiàn)了越來越多的問題,甚至最后失去控制,損失財力、物力。為什么會產(chǎn)生這樣背道而馳的結果呢?
[0027]發(fā)明人經(jīng)過仔細分析,認為雖然兩者功能都很復雜與強大,但兩者在發(fā)展過程中對標準的遵循程度卻有本質(zhì)上的區(qū)別。硬件產(chǎn)品需要遵循通用的工業(yè)標準,而軟件卻沒有成熟、易用的通用行業(yè)標準,各大軟件廠商各持有一套自己的所謂標準與規(guī)范,導致出現(xiàn)上面提到的軟件行業(yè)的重大問題。
[0028]為了解決上述的問題,本發(fā)明提出了一種基于插件機制的軟件系統(tǒng)。如圖1所示,該軟件系統(tǒng)主要由以下幾個部分組成:
[0029]I)插件
[0030]本發(fā)明中的插件是以插件框架為基礎,按照預定的插件標準并結合特定的業(yè)務功能需求制作的軟件模塊。每一個插件(插件I?插件η,η為自然數(shù))在功能上是獨立的,可以完成一個完整的業(yè)務功能。該插件在功能上類似于計算機硬件中的顯卡、聲卡等功能模塊,插件框架在功能上類似于計算機的主機板,而插槽在功能上類似于主機板上的USB或者PCI插槽。插件之間、插件與插件框架之間的數(shù)據(jù)交換由插件框架本身的通信機制提供支撐。該插件只要符合預定的插件標準,就可以隨時通過插槽接入插件框架中,進行相應的數(shù)據(jù)交換,即插即用十分方便。
[0031]對于插件的實現(xiàn),則是在需求初期考慮預定的插件標準,并且在需求分析、架構設計等階段按照該插件標準予以實現(xiàn)。這樣,開發(fā)的插件即可無縫地與插件框架對接。該插件通過配置文件進行管理。插件與插槽之間的連接是也是通過配置文件實現(xiàn)的。在本發(fā)明中,對配置文件的格式?jīng)]有嚴格的要求,可以隨插件的不同或插件標準的不同而不同。作為一個較佳的實施例,優(yōu)選配置文件為XML格式。下面為插件定義格式的配置文件樣例。
[0032]
<?xinl versi on=^ 1.0" ericoding = 〃UTF-8〃?>
<plugin>
<module id=〃usrpoint = ^admin/user//>
<useI1 name = 〃User〃 appI i cat ion = 〃User.php w descr ipt ion= ^User ^ >
〈property name二"id" type="long"/>
<property name二"naiiie" type = "string"/>
〈property natne=〃loginid〃 type= 〃string" lengtli="6 + 〃/>
<propertv name="pwd〃 type="string" length="6+'V>
〈property na n] e = 〃 birth day 〃 type = 〃 date 〃/>
</user)
〈operation appli cat ion-^UserOperat i on.php〃 >
<actiοn name = 〃create〃 url = 〃...” type = wfunction^/>
<act ion name= ^read^ url=〃.." type = //func.tion〃/>
<aetion naine二〃update〃 url = 〃...〃 type二〃functicm〃/>
〈action naine = 〃deleie〃 url = 〃...〃 type = ^function^/)
<act ion name= vview^ url=〃.." type = "func.tion〃/>
</operation〉
<workflow>
</workflow)
</module>
</plugin>
[0033]在實現(xiàn)上述插件時,在軟件系統(tǒng)的架構設計階段不僅要設計軟件的整體框架,同時還要以插件框架為基礎,結合業(yè)務功能需求制訂出所有插件必須遵循的插件標準,然后再具體開發(fā)實現(xiàn)某一業(yè)務功能的插件。凡是按該插件標準研發(fā)的插件都可以正確運行,實現(xiàn)業(yè)務功能以及與其它模塊的交互。
[0034]2)插件框架
[0035]前已述及,本發(fā)明中的插件框架是一個基于基礎運行環(huán)境的軟件平臺,在功能上類似于計算機的主機板。插件框架是依據(jù)框架協(xié)議實現(xiàn)插件框架的各項功能。該插件框架可以通過各種語言實現(xiàn),如PHP、JAVA、.NET等。如圖2所示,插件框架包括若干個插槽(插槽I?插槽η,η為自然數(shù))、插槽調(diào)度模塊和插件協(xié)調(diào)模塊。其中,插槽作為插件的數(shù)據(jù)接口,可以將插件插在插件框架上使用,發(fā)揮插件所具有的功能。
[0036]在本發(fā)明中,插槽是一個內(nèi)置標準協(xié)議的基礎軟件包。它通過計算機語言的動態(tài)機制,例如Java語言的注入反射機制、PHP語言的eval機制等實現(xiàn)動態(tài)管理插件功能,包括插件的動態(tài)安裝與卸載,為插件分配資源如內(nèi)存等,同時可以協(xié)調(diào)各個插件之間的交互。
[0037]插槽調(diào)度模塊用于依據(jù)業(yè)務需要,為插槽調(diào)用相應的插件。插槽調(diào)用相應插件的過程可以通過兩種方式來實現(xiàn):一是通過插槽功能動態(tài)分析,自動選擇相應的插件;二是通過人工方式手動設置。
[0038]插件協(xié)調(diào)模塊用于實現(xiàn)各個插件之間的協(xié)調(diào)功能。插件之間的協(xié)調(diào)功能是指多個插件之間需要互相協(xié)作來完成一個功能業(yè)務,這就需要插件之間互相傳遞數(shù)據(jù),互相調(diào)用接口,這些數(shù)據(jù)的傳遞、接口的調(diào)用都是由底層框架即插槽來完成的。
[0039]在本發(fā)明中,插件標準可以由插件框架一方制定,插件開發(fā)廠商遵循該插件標準進行開發(fā);或者由多方制定統(tǒng)一插件標準,在插件開發(fā)和插槽開發(fā)時共同遵循。
[0040]3)基礎運行環(huán)境
[0041]本發(fā)明中的基礎運行環(huán)境包括操作系統(tǒng)、數(shù)據(jù)庫、WEB服務器、腳本服務器等支持環(huán)境。按照插件標準編寫的插件,需要運行在該基礎運行環(huán)境之上。在具體實施時,這些支持環(huán)境可以采用現(xiàn)已成熟的Linux、Nginx> Php Server等服務器系統(tǒng),在此就不詳細說明了。
[0042]在實現(xiàn)本發(fā)明所提供的軟件系統(tǒng)時,首先要設計一個插件框架,用于整合各個插件,同時要針對插件框架提出一個插件標準,用于規(guī)范插件的研發(fā)。在這個過程中,需要解決的技術問題主要包括:1)框架協(xié)議的實現(xiàn);2)信息交換格式;3)動態(tài)檢測插件機制,包括動態(tài)加載插件、動態(tài)卸載插件。下面結合相應的偽碼對其展開具體的說明。
[0043]I)框架協(xié)議
[0044]框架協(xié)議包含插件框架開發(fā)協(xié)議及插件開發(fā)協(xié)議。該框架協(xié)議是實現(xiàn)插件標準、生成插件配置文件的技術基礎。相應的示例性偽碼如下:
[0045]
【權利要求】
1.一種基于插件機制的軟件系統(tǒng),其特征在于: 所述軟件系統(tǒng)包括多個插件、插件框架和基礎運行環(huán)境; 所述插件框架中包括多個插槽、插槽調(diào)度模塊和插槽協(xié)調(diào)模塊,所述插件通過所述插槽與所述插件框架進行數(shù)據(jù)交換; 所述插件具有配置文件,所述插件框架通過掃描所述配置文件的有無實現(xiàn)所述插件的即插即用。
2.如權利要求1所述的基于插件機制的軟件系統(tǒng),其特征在于: 所述插件是以插件框架為基礎,按照預定的插件標準并結合特定的業(yè)務功能需求制作的軟件模塊;所述插槽是一個內(nèi)置標準協(xié)議的基礎軟件包。
3.如權利要求1所述的基于插件機制的軟件系統(tǒng),其特征在于: 所述基礎運行環(huán)境包括操作系統(tǒng)、數(shù)據(jù)庫、WEB服務器和腳本服務器。
4.如權利要求1所述的基于插件機制的軟件系統(tǒng),其特征在于: 所述插槽調(diào)度模塊用于依據(jù)業(yè)務需要,為所述插槽調(diào)用相應的插件。
5.如權利要求1所述的基于插件機制的軟件系統(tǒng),其特征在于: 所述插件協(xié)調(diào)模塊用于實現(xiàn)各個插件之間的協(xié)作,共同完成一個功能業(yè)務。
6.如權利要求1所述的基于插件機制的軟件系統(tǒng),其特征在于: 所述配置文件為XML格式。
7.一種實現(xiàn)動態(tài)檢測插件機制的方法,基于權利要求1所述的軟件系統(tǒng)實現(xiàn),其特征在于: 插件框架定時掃描插件安裝的配置文件;如果新增加了配置文件,則判斷為新增加了插件,進一步檢測該插件的版本;如果新加入的插件版本比當前正在運行的插件版本更新,則插槽加載這個新加入的插件,卸載老的插件;否則,仍然保留當前運行的插件。
8.如權利要求7所述的實現(xiàn)動態(tài)檢測插件機制的方法,其特征在于: 如果所述插件在運行過程中需要卸載,則將對應所述插件的配置文件刪除;所述插件框架在定時掃描過程中,如果所述插槽發(fā)現(xiàn)某個插件所對應的配置文件不存在,立即卸載所述插件、回收資源。
【文檔編號】G06F9/44GK103914287SQ201210593393
【公開日】2014年7月9日 申請日期:2012年12月31日 優(yōu)先權日:2012年12月31日
【發(fā)明者】尹立慶, 吳為民 申請人:北京訊鳥軟件有限公司