国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于插件技術(shù)的GIS應(yīng)用框架關(guān)鍵技術(shù)研究

2012-12-11 07:27:40楊林波
測繪通報 2012年1期
關(guān)鍵詞:主程序文件夾插件

聞 平,王 沖,楊林波,陳 科,謝 飛

(中國水電顧問集團昆明勘測設(shè)計研究院,云南昆明650051)

一、引 言

GIS軟件經(jīng)過幾十年的發(fā)展,已經(jīng)從最初的空間數(shù)據(jù)存儲和顯示的簡單應(yīng)用轉(zhuǎn)換為高級地理統(tǒng)計、空間分析和地理服務(wù)等方面的應(yīng)用。GIS應(yīng)用的領(lǐng)域已越來越廣泛,應(yīng)用的方向和工程的復(fù)雜度也不斷增大,特別是針對我院多部門之間共同開展的GIS技術(shù)應(yīng)用與研究,不同的部門有不同的需求,業(yè)務(wù)需求變化多端,如果繼續(xù)按照以往的軟件開發(fā)過程來實施,每個項目從頭做起,不同項目的復(fù)用部分也僅僅是停留在代碼的簡單復(fù)制與粘貼上面,這樣的技術(shù)與方法伸縮性較差,不僅不能滿足軟件的擴展與可復(fù)用的需求,也不能充分發(fā)揮多部門、多人之間的協(xié)作關(guān)系。為改變上述情況以適應(yīng)不斷衍生的業(yè)務(wù)需求,GIS軟件需要擁有結(jié)構(gòu)清晰簡潔、支持復(fù)用、可擴展性強和易于維護等高性能架構(gòu)。插件式GIS應(yīng)用框架是解決上述問題的比較好的技術(shù)途徑。本文基于.NET平臺設(shè)計了面向應(yīng)用型的插件式GIS應(yīng)用框架,并對其實現(xiàn)關(guān)鍵技術(shù)進行了深入研究,將研究成果應(yīng)用于實際,取得了較好的應(yīng)用效果。

二、插件技術(shù)

1.插件技術(shù)

插件(plugin)是按照預(yù)定接口實現(xiàn)的軟件功能構(gòu)件。應(yīng)用程序可在“運行時”動態(tài)加載插件并執(zhí)行其功能。插件技術(shù)是一種提高軟件復(fù)用性和可擴展性的有效方法。插件技術(shù)使應(yīng)用軟件功能具有很好伸縮性,在軟件領(lǐng)域已有較廣泛的應(yīng)用。

2.插件的實現(xiàn)技術(shù)

插件的實現(xiàn)一般有3種技術(shù):基于動態(tài)鏈接庫DLL的插件、基于組件對象模型COM的插件和基于.NET反射技術(shù)的插件。

1)動態(tài)鏈接庫是具有某種功能的一種軟件模塊。動態(tài)鏈接庫文件本身并不能獨立運行,但它能夠被其他程序調(diào)用實現(xiàn)。基于這種特性,使用動態(tài)鏈接庫也能產(chǎn)生插件對象。

2)組件對象模型COM是一種組件二進制級別的交互標(biāo)準(zhǔn)。它以COM接口作為不同組件之間通信的通道,只要實現(xiàn)了COM標(biāo)準(zhǔn),使用任何一種支持COM語言編寫的組件都能夠互相調(diào)用。

3)在.NET Framework中,使用.NET的反射機制和接口技術(shù),也能夠產(chǎn)生插件。.NET平臺動態(tài)加載一個插件程序集(assembly)后,可以通過反射機制,獲得程序集中的類型信息。如果類型信息滿足主程序的要求,主程序?qū)⑹褂脤ο髣討B(tài)生成技術(shù)在內(nèi)存中根據(jù)類型定義產(chǎn)生一個插件對象實例并加載到插件池中[2]。本文后面所提到的插件的開發(fā)就是基于.NET反射技術(shù)實現(xiàn)的。

三、插件式GIS應(yīng)用框架結(jié)構(gòu)

本文所述的插件式GIS應(yīng)用框架主要包括了4個組成部分,如圖1所示。

1)主界面程序:該程序是以EXE可執(zhí)行文件的形式存在,主要負責(zé)生成按鈕、工具、工具條和菜單等界面UI對象,并負責(zé)將這些對象事件進行委托關(guān)聯(lián)。

2)插件引擎:提取插件程序集中包含的插件類型信息,并負責(zé)將其生成相應(yīng)的插件對象。

3)通信契約:主程序與插件之間相互認可的一種標(biāo)準(zhǔn),以接口的形式存在,即只有實現(xiàn)了規(guī)定接口的類型對象才能被插件引擎認可為插件。

4)插件:插件式框架具體功能的實現(xiàn),插件式框架模型將一個程序的功能劃分為相對獨立的模塊,每一個模塊就以一個單獨的插件形式存在。

圖1 插件式GIS應(yīng)用框架結(jié)構(gòu)圖

插件式GIS應(yīng)用框架結(jié)構(gòu)中,GIS系統(tǒng)主程序簡化為只負責(zé)激活應(yīng)用框架核心組件。這樣小而輕的主程序有利于減少系統(tǒng)啟動等待時間和方便軟件部署與更新。應(yīng)用框架支撐著整個插件式GIS應(yīng)用軟件的結(jié)構(gòu),負責(zé)動態(tài)加載插件,根據(jù)插件配置生成交互界面,協(xié)調(diào)插件間的互操作等。

四、插件式GIS應(yīng)用框架實現(xiàn)的關(guān)鍵技術(shù)

插件式GIS應(yīng)用框架實現(xiàn)的關(guān)鍵技術(shù)包括接口的設(shè)計與實現(xiàn)、插件的動態(tài)加載、插件的調(diào)用等。

1.實現(xiàn)的接口

本文所述的插件式GIS應(yīng)用框架主要實現(xiàn)了以下7個接口:①IApplication接口;②IPlugin接口;③ICommand接口;④ITool接口;⑤IToolbarDef接口;⑥IMenuDef接口;⑦IDockableWindowDef接口,其接口關(guān)系如圖2所示。

圖2 接口關(guān)系圖

2.插件的動態(tài)加載

本系統(tǒng)將插件統(tǒng)一放在一個文件夾(plugin)中,在主程序啟動時即可去查找該文件夾并創(chuàng)建可用的插件對象。當(dāng)用戶需要增加新的功能時,只需要將符合接口的新的程序集放在plugin文件夾中,重新啟動主程序即可完成功能的添加。同理,當(dāng)用戶需要刪減一個功能時,只需要將實現(xiàn)該功能的程序集移除plugin文件夾,重新啟動主程序即可完成功能的刪減。

本框架中插件的動態(tài)加載使用了.NET的反射機制,它能根據(jù)一個插件類型的描述信息產(chǎn)生插件對象,插件的動態(tài)加載過程如下。

1)首先使用一個靜態(tài)方法探測啟動路徑下的plugin文件夾是否存在,如果不存在,將自動新建一個plugin文件夾避免出現(xiàn)異常

如果插件文件夾存在,將尋找該文件夾中所有的DLL文件并返回一個包含了文件路徑的字符串?dāng)?shù)組。

2)系統(tǒng)遍歷文件路徑數(shù)組,從中得到每一個程序集文件的絕對路徑,然后將其動態(tài)加載。

3)系統(tǒng)識別類型的每一個接口,如果該類型的某個接口完整名為ICommand、ITool、IToolbarDef、IMenuDef或IDockableWindowDef中的一種,系統(tǒng)將認定該類型是一個有效的插件類型并根據(jù)該類型名產(chǎn)生一個實例對象。

3.插件的調(diào)用

針對不同的插件,插件管理器獲取插件后,主程序根據(jù)插件信息生成并調(diào)用相應(yīng)的插件,且在主程序的系統(tǒng)界面上生成相應(yīng)的菜單和工具欄。如ICommand表現(xiàn)為命令按鈕;ITool表現(xiàn)為工具按鈕;IMenuDef表現(xiàn)為菜單欄;IToolbarDef表現(xiàn)為工具條。后兩者均為ICommand命令按鈕和ITool工具按鈕的??繉ο蟆?/p>

五、應(yīng)用實例

本文以.NET平臺為開發(fā)環(huán)境,通過C#,AcrGIS Engine 10.0組件和Skyline Globe組件完整的實現(xiàn)了一個插件式GIS應(yīng)用框架。系統(tǒng)中所有功能模塊都是以插件的形式實現(xiàn),通過拷貝插件到系統(tǒng)指定目錄下即可被應(yīng)用框架自動調(diào)用,系統(tǒng)主界面如圖3所示。

六、結(jié)束語

本文從系統(tǒng)框架、接口實現(xiàn)和加載等方面討論了插件式GIS應(yīng)用框架的實現(xiàn)過程,并結(jié)合實踐,搭建了一個完整的插件式GIS應(yīng)用框架。只要定義好了接口規(guī)范,后期便可以利用插件對系統(tǒng)的功能進行很好的擴展,減少重復(fù)工作,能在很大程度上提高工作效率,降低開發(fā)成本和后期維護成本。

圖3 系統(tǒng)主界面

[1]陳方明,陳奇.基于插件思想的可重用軟件設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2005,26(1):172-173.

[2]蔣波濤.插件式GIS應(yīng)用框架的設(shè)計與實現(xiàn)[M].北京:電子工業(yè)出版社,2008.

[3]高慧萍,呂俊.插件式開發(fā)技術(shù)研究與實現(xiàn)[J].計算機工程與設(shè)計,2009,30(16):3805-3807.

[4]張毅,李國卿,趙軍喜,等.插件式GIS應(yīng)用框架關(guān)鍵技術(shù)研究[J].測繪科學(xué)技術(shù)學(xué)報,2010,27(4) :298-301.

[5]江麗鈞,談曉珊,孫毅中.基于插件的城市規(guī)劃信息系統(tǒng)的研究[J].現(xiàn)代測繪,2010,33(1):8-10.

[6]盧學(xué)鶴,余光輝,溫小榮,等.基于插件技術(shù)的森林資源GIS的設(shè)計與實現(xiàn)[J].南京林業(yè)大學(xué)學(xué)報:自然科學(xué)版,2009,33(1):127-130.

[7]楊世琦,徐永近,高陽華.基于插件技術(shù)的測土施肥決策系統(tǒng)設(shè)計[J].西南師范大學(xué)學(xué)報:自然科學(xué)版,2010,35(1):158-163.

猜你喜歡
主程序文件夾插件
磁力文件夾
自編插件完善App Inventor與樂高機器人通信
電子制作(2019年22期)2020-01-14 03:16:34
淺談數(shù)控銑削技術(shù)代碼程序的嵌套方式研究
電控冰箱軟件模塊化設(shè)計
日用電器(2019年12期)2019-02-26 01:53:06
調(diào)動右鍵 解決文件夾管理三大難題
時光倒流 換回PotPlayer老圖標(biāo)
MapWindowGIS插件機制及應(yīng)用
TC一鍵直達常用文件夾
電腦迷(2015年1期)2015-04-29 21:24:13
基于Revit MEP的插件制作探討
未經(jīng)授權(quán)的第三方軟件侵權(quán)問題研究
——以“騰訊與360之爭”為視角*
营口市| 金乡县| 阿克| 玉溪市| 翁源县| 南靖县| 科尔| 博罗县| 文安县| 休宁县| 芦山县| 延长县| 灵武市| 张家川| 浮山县| 天津市| 天峻县| 策勒县| 桦南县| 开鲁县| 剑川县| 永胜县| 洛宁县| 福州市| 治多县| 旌德县| 青海省| 龙岩市| 青龙| 肥西县| 礼泉县| 老河口市| 德化县| 兴义市| 土默特右旗| 乡城县| 图木舒克市| 衢州市| 绍兴市| 阿尔山市| 新疆|