摘 要: 為了縮短軟件開發(fā)周期并提升軟件擴展性,提出基于反射機制的插件系統(tǒng)軟件設計理念。該系統(tǒng)所配置的獨立軟件,無需編寫源程序,從而達到定制、修改、添加軟件功能。在反射機制下設計插件系統(tǒng)軟件借助觀察者模式對插件間的數(shù)據(jù)關系實施解耦,并借助XML描述與表達插件關系進行配置,這一軟件設計思想能提升軟件復用性、擴展性。
關鍵詞: 反射機制; 插件系統(tǒng)軟件; 軟件設計; 軟件開發(fā)
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2016)12?0130?02
Abstract: In order to shorten the software development cycle and improve extensibility of software, some software design ideas of plug?in system based on the reflection mechanism is put forward. The independent software configured in the system doesn't need to write the source program, so as to achieve customization, modification, software addition functions. The plug?in system software is designed under the reflection mechanism to implement decoupling of the data relationship between the plug?ins with the help of the observer pattern. XML is used to describe and express the plug?in relationship for configuration. The software design idea can improve the software reusability and extensibility.
Keywords: reflection mechanism; plug?in system software; software design; software development
隨著計算機技術(shù)的開發(fā)和廣泛應用,多數(shù)復雜的系統(tǒng)的開發(fā)層出不窮,系統(tǒng)的復雜性為日后的維護、管理工作帶來不便。任何一種軟件的開發(fā),不管研發(fā)者開發(fā)前是否詳細調(diào)查用戶需求,軟件開發(fā)完成后,使用過程中用戶需求出現(xiàn)變化或部分功能有待改進,傳統(tǒng)繁瑣、低效率的流程無法滿足需要。為了設計維護性能強、容易擴展的軟件,最佳的方式就是使用插件技術(shù),文中嘗試把基于NET反射機制引入插件系統(tǒng)軟件開發(fā)中,軟件參數(shù)化程度升高,實現(xiàn)完善配置管理的目的。
1 簡述反射技術(shù)及插件技術(shù)的概念
1.1 反射技術(shù)
反射概念最早于1982年提出,是指程序能夠訪問、檢測、修改其自身狀態(tài)或行為的一種能力[1]。反射概念的提出快速引發(fā)計算機領域有關應用反射性的研究。通常反射系統(tǒng)不單單滿足開放性條件,也要滿足原因連接。原因連接就是反射系統(tǒng)從發(fā)生描述改變能夠及時反映至系統(tǒng)底層的時間情況。在NET內(nèi),反射機制可以建立靈活代碼,該代碼進行運行過程中進行裝配,不需要再組建實施源代碼鏈接。反射機制允許在編寫及執(zhí)行過程中,將接入裝載至可執(zhí)行的程序內(nèi)部信息,這種反射機制稱為創(chuàng)建靈活應用的主要工具[2]。
1.2 插件技術(shù)
插件技術(shù)本身也是構(gòu)建技術(shù),如果某個軟件工程項目較大、要求過緊,需要多個人員、單位在不同的時間下進行設計、開發(fā)軟件。插件技術(shù)實現(xiàn)最終集成時,必須把部件組裝而無需實施編譯及連接,操作完成后直接組裝至原軟件平臺方可使用。插件技術(shù)是遵循某種規(guī)范的應用程度接口對程序進行編寫操作。目前,多數(shù)軟件設有插件,例如:IE中安裝相應的插件后,Web瀏覽器可直接使用插件程序?qū)δ撤N特定類型的文件進行處理。
2 基于反射機制下設計基礎框架
插件是近幾年比較常見的技術(shù),插件結(jié)構(gòu)有利于編寫最佳的擴充和定制功能程序。本文提出插件/平臺軟件設計就是把某個有待開發(fā)目標軟件劃分為主框架(平臺)和補充模塊(插件)。主框架由內(nèi)核、插件管理等部分組合而成。通過內(nèi)核申請服務對整個程序的工作運行狀態(tài)實現(xiàn)驅(qū)動,由于插件技術(shù)滿足系統(tǒng)要求的各項服務,服務狀態(tài)及形式展示在不同插件中[3]。在主框架中,插件管理層起著重要的連帶作用,該管理層用以合理調(diào)配相應的接口,為內(nèi)核提供一系列的服務功能。同時,內(nèi)核能夠有效完成推進時間、觸發(fā)事件及分發(fā)消息等各項任務,其關系如圖1所示。
在插件系統(tǒng)軟件設計時,其平臺選用軟件基礎服務,最后對擴展點展開分析,之后封裝形成獨立的插件,根據(jù)以上要求,軟件設計框架如圖2所示。
2.1 設計插件系統(tǒng)
設計插件系統(tǒng)過程中,抽象提取的插件必須滿足獨立性強、可靠性好、連接方便等特點,配合簡要清晰地解釋說明,方便日后合理的檢測和應用。一般情況下,插件采用接口的形式對其功能進行公布,達到合理內(nèi)部封裝的效果[4]。插件嚴格遵循統(tǒng)一的命名規(guī)則及設定的接口標準。深入研究多種插件系統(tǒng)與對象的關系,本文提出借助數(shù)據(jù)交互接口、樹狀關系接口等相關插件接口。IEntityPlug是系統(tǒng)插件的直接繼承接口,其具有注冊、初始化、更新配置等插件等功能。
2.2 NET反射機制下插件運行過程
NET反射機制本身就是一個分析程序元數(shù)據(jù)表的過程,便于掌握程序集的類型及其主要成員。通過反射機制能獲取程序集中定義的不同信息,允許程序正常運行狀態(tài)下建立部分類型對象,并及時調(diào)用以上類型、成員的操作[5]。通常將插件設置在特定目錄內(nèi),例如:bin/debug/plugin,在plugin目錄下存儲插件,也能把插件信息填寫至XML配置文件內(nèi)。插件系統(tǒng)運行時序見圖3。
程序正常運行時,窗體由配置文件內(nèi)讀取保存插件名稱及其加載的DLL路徑信息,動態(tài)形成各類菜單、命令。開啟程序后,通過ObjectManafer對XML配置文件進行讀取。反射機制建立插件試題,實現(xiàn)插件注冊及初始化操作。
2.2.1 插件實現(xiàn)具體步驟
插件實現(xiàn)必須遵循封裝變化點、動態(tài)加載程序集的原則,插件系統(tǒng)軟件正常運行時,依據(jù)配置文件制定的各項參數(shù),動態(tài)加載合理的程序集并調(diào)用相應的方法,以此滿足用戶功能需求。如果用戶需要增設新的功能,只需設置新的程序集并更改配置文件即可完成。
2.2.2 封裝變化點實現(xiàn)方式
在平臺上定義的插件包括Tool,Command兩種形式,各類插件具體的實現(xiàn)功能有所差異,均需設置統(tǒng)一的Icommand或TTOOL接口,通過設置這樣的接口,宿主程序無需重視插件的具體實現(xiàn)情況,重點關注插件有沒有實現(xiàn)該接口,由接口宿主程序與插件實現(xiàn)交互效果。
2.3 配置約定
配置文件作為設計的軟件框架的重要組成部分,配置文件的內(nèi)存儲系統(tǒng)包含原有的初始化信息,主要有對象屬性值、對象關系等。因不同對象之間的關系過于復雜,在一定程度上為配置和管理工作帶來極大的困難,配置合理的對象屬性值便于系統(tǒng)進行管理,提高系統(tǒng)的運行效率[6]。本文選定XML文件作為軟件參數(shù)配置軟件,XML便于理解、解析,實現(xiàn)XML表達對象之前關系的優(yōu)勢。假設某個工程為根,與該工程有關的信號均保存在合理的屬性之內(nèi)。本文系統(tǒng)中的每個插件均是XML的一個節(jié)點,文中將其當做插件節(jié)點。把插件對象設置屬性值作為該插件的各個子節(jié)點,插件能夠準確表達該插件的名稱、工作狀態(tài)等各類信息,也可增設部分特有的屬性值。
2.4 對象邏輯關系的表達
配置文件第一步解決的問題就是不同對象的相關性,對象邏輯的象樹關系代表配置文件內(nèi)父與子的關系。
通常情況下,文中所說的組合對象、調(diào)用關系等內(nèi)容,若插件節(jié)點出現(xiàn)這類關系,配置表示為空。每個對象在傳輸數(shù)據(jù)和信息的過程中,在XML配置上并列增設另外的
3 結(jié) 語
總之,基于反射機制設計插件系統(tǒng)軟件中,軟件實現(xiàn)的功能均在插件中實現(xiàn),不同插件處于相對獨立的狀態(tài),因此,修改某一個插件并不會影響整個系統(tǒng)或其他插件正常運行狀態(tài),能有效減少其耦合性。文中設計的插件系統(tǒng)軟件,已經(jīng)廣泛應用到實際工作中,在一定程度上提升開發(fā)效率和靈活性。
參考文獻
[1] 高峰.插件式護士工作站設計與實踐[J].中國數(shù)字醫(yī)學,2012(7):114?115.
[2] 汪峰坤,曹新彩.基于反射的低耦合輕量級插件框架的研究和設計[J].硅谷,2012,11(5):54?55.
[3] 陳海燕,朱宇來,林陽,等.利用反射技術(shù)實現(xiàn)程序結(jié)構(gòu)優(yōu)化設計[J].科技資訊,2014,32(28):21.
[4] 張奕,余海龍,譚劍美,等.四通道高速數(shù)據(jù)采集系統(tǒng)設計[J].現(xiàn)代電子技術(shù),2012,35(9):10?12.
[5] 許寧,李建.基于.NET反射機制的插件技術(shù)的研究[J].計算機光盤軟件與應用,2011(21):167?168.
[6] 宮愛愛,丁香乾,侯瑞春,等.基于Eclipse智能代碼生成框架的研究[J].現(xiàn)代電子技術(shù),2013,36(18):55?58.