基于.NET 平臺的插件式 GIS 研究

李云錦,周芹,黃躍峰,何亞鑫

(1 中國科學(xué)院地理科學(xué)與資源研究所,北京 100101;2 中國科學(xué)院研究生院,北京 100039; 3 北京超圖地理信息技術(shù)公司,北京 100101 )

論文來源:中國地理信息系統(tǒng)協(xié)會第四次會員代表大會暨第十一屆年會論文集

摘要:插件模式的應(yīng)用可以提高軟件的擴展性、復(fù)用性與可裁剪性?,F(xiàn)今許多 GIS 軟件都應(yīng)用了插件模式,但插件實現(xiàn)大多是基于 DLL 技術(shù)的,其擴展性與易用性都不如基于.NET或 Java 平臺的實現(xiàn)。本文將對插件模式及其相關(guān)技術(shù)進(jìn)行探討并提出基于.NET 平臺的插件實現(xiàn)的解決方案。與傳統(tǒng)…

關(guān)鍵詞: 地理信息系統(tǒng);插件;架構(gòu)

1 引言

隨著 GIS 的不斷發(fā)展,其應(yīng)用領(lǐng)域已逐漸從傳統(tǒng)的電子政務(wù)過渡到企業(yè)應(yīng)用以及大眾化地理信息服務(wù),GIS 的應(yīng)用需求呈現(xiàn)出多樣性與不確定性。與日俱增的 GIS 應(yīng)用需求對 GIS軟件的擴展性、復(fù)用性及可裁剪性提出了更高的要求。

擴展即增加新的功能而不修改已有產(chǎn)品。傳統(tǒng)的 GIS 軟件一經(jīng)發(fā)布,如需添加新的功能即必須修改源代碼并重新發(fā)布產(chǎn)品,成本高、效率低。而今許多應(yīng)用需求在 GIS 軟件開發(fā)時是未知的,有些需求雖然已經(jīng)明確,但 GIS 軟件廠商只能有選擇地滿足部分需求。因此,為了滿足更多的應(yīng)用需求,GIS 軟件迫切需要提供一種便捷的開發(fā)方式,即在產(chǎn)品發(fā)布之后用戶能根據(jù)自己的需求開發(fā)相應(yīng)的功能模塊,并能集成至已有的產(chǎn)品中。

復(fù)用通常指代碼的重用。面向?qū)ο蟆⒔M件與 WebService 等技術(shù)的應(yīng)用都是提高軟件復(fù)用性的方式。組件式 GIS 在很大程度上提高了 GIS 軟件的復(fù)用率,但基于組件的 GIS 開發(fā),用戶仍需要編寫大量重復(fù)代碼,例如每個用戶都必須編寫地圖的顯示、編輯功能,而這些功能的實現(xiàn)都已經(jīng)包括在 GIS 桌面產(chǎn)品中。此外,復(fù)用也可指軟件開發(fā)相關(guān)資源的重用,例如符號庫、風(fēng)格庫、界面庫、圖標(biāo)等資源。界面的開發(fā)在實際的項目開發(fā)中占較大的比重,簡潔易用的界面會帶來更好的客戶滿意度,GIS 開發(fā)人員因此需要花費大量時間在界面的設(shè)計上,而 GIS 桌面產(chǎn)品穩(wěn)定而大眾化的界面沒有得到重用。

裁剪即根據(jù)用戶需要保留軟件中感興趣的功能。對 GIS 用戶而言,用戶常用的功能只是產(chǎn)品功能的一個子集,有些基本不使用的功能對系統(tǒng)資源的占用無疑是種浪費。如果用戶能通過簡單的配置禁用某些不常使用的功能,不僅能節(jié)約系統(tǒng)資源,還能提高程序的啟動速度;對 GIS 軟件廠商而言,他們需要根據(jù)不同的用戶提供不同的版本,這有利于產(chǎn)品的市場推廣與銷售。在傳統(tǒng) GIS 開發(fā)模式中,軟件裁剪需要開發(fā)人員修改源代碼,并對各個版本實施不同的版本策略,很難做到軟件的定制。

插件模式提供了一種開放的開發(fā)方式,能較好地解決上述問題。目前一些 GIS 軟件也應(yīng)用了插件模式,如 SuperMap Deskpro5.2、ArcMap9.2、MapGIS7.0 等,但插件實現(xiàn)都是基于DLL 技術(shù)或 COM 技術(shù)的,而 DLL 技術(shù)與 COM 技術(shù)自身存在較多問題,例如“DLL Hell”問題、平臺依賴性以及模塊中所定義的類無法被繼承等。再者,目前的擴展也僅限于對菜單、工具欄的擴展,并不支持用戶的二次擴展。比較而言,基于.NET 與 Java 平臺的插件實現(xiàn)在易用性、安全性、二次擴展能力方面都優(yōu)于基于 DLL 或 COM 的實現(xiàn)方式。本文將首先介紹插件的基本概念及應(yīng)用現(xiàn)狀,并對常用的插件的解決方案進(jìn)行比較分析,然后詳細(xì)介紹基于.NET 平臺的插件實現(xiàn),在此基礎(chǔ)上提出插件式 GIS 架構(gòu),并依據(jù)此架構(gòu)實現(xiàn) SuperMap6.0 桌面原型。

2 插件模式

GIS 桌面軟件通常需要支持不同格式的數(shù)據(jù),然而它無法支持所有格式的數(shù)據(jù),有些用戶特有的數(shù)據(jù)格式無法用現(xiàn)有的 GIS 軟件讀取與顯示。那么如何在 GIS 桌面軟件中使用該類數(shù)據(jù)呢?應(yīng)用插件模式是解決此類問題的有效途徑之一。

插件模式通過在運行時動態(tài)加載編譯時未知的程序模塊以擴展現(xiàn)有程序,它常被用于滿足以下需求:(1)支持對功能的擴展;(2)將系統(tǒng)模塊化以降低系統(tǒng)的復(fù)雜度;(3)簡化軟件部署與更新;(4)獲得高的啟動速率;(5)減少系統(tǒng)資源的占用。

現(xiàn)今許多軟件都應(yīng)用了插件模式。例如 Internet Explore、Netscape、Fireforx、Mozilla等瀏覽器都應(yīng)用了插件模式,以支持不同格式的數(shù)據(jù)的顯示;絕大多數(shù)集成開發(fā)環(huán)境也應(yīng)用了插件模式,例如 Eclipse、NetBeans、Visual Studio 2005 等;許多應(yīng)用軟件也應(yīng)用了插件模式,例如 Microsoft Office、Adobe Photoshop 等。雖然這些軟件都應(yīng)用了插件模式,但具體實現(xiàn)不盡相同。例如 Mozilla 通過 XUL 語言聲明接口,并利用 JavaScript 和 XPCOM 定義 UI 元素的動態(tài)行為;Eclipse 則通過“接口繼承+XML 描述”來實現(xiàn)。盡管這些軟件的插件實現(xiàn)方式不同,但其基本原理大致相同。

更多內(nèi)容請查看pdf