999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于插件的GIS軟件動態(tài)配置關(guān)鍵技術(shù)研究

2008-12-31 00:00:00陳占龍吳信才
計算機應(yīng)用研究 2008年8期

摘 要:為了解決傳統(tǒng)GIS 軟件的行業(yè)化、專業(yè)化和開發(fā)成本較高的問題,在深入研究“平臺+ 插件”模型的本質(zhì)與實現(xiàn)機制的基礎(chǔ)上,設(shè)計了基于插件技術(shù)的GIS 軟件動態(tài)配置模型,并對模型實現(xiàn)中的體系結(jié)構(gòu)、消息處理機制、插件間的交互和動態(tài)配置的一致性等關(guān)鍵技術(shù)進行了深入剖析,最后結(jié)合大型GIS 平臺——MAPGIS7. 0給出了應(yīng)用實例,驗證了此動態(tài)配置模型的可行性。

關(guān)鍵詞:動態(tài)配置; 插件; GIS應(yīng)用框架

中圖分類號:TP311 文獻標(biāo)志碼:A 文章編號:1001-3695(2008)08-2371-03

Key technology of plugin-based GIS software dynamic configuration

CHEN Zhan-long1,2,WU Liang1,WU Xin-cai1

(1.Faculty of Information Engineering, China University of Geosciences, Wuhan 430074, China; 2.China GIS Software Research Application Engineering Center of Ministry of Education, Wuhan 430074, China)

Abstract:Traditional GIS software faces some hot potatoes, for example, industrilization, specialization and high cost. In order to resolve these problems, based on the thorough study of essential and implementation mechanism of platform plugin model, this paper designed the GIS software dynamic configuration model, and analyzed the key technologies of system structure, software dealing with message mechanism, interactive mechanism between plugins and the coherence of dynamic configuration in the realization of GIS software dynamic configuration model. At last, combined with large-scale GIS platform (MAPGIS7. 0), this paper gave the practice of this model, and tested the feasibility of GIS software dynamic configuration model.

Key words:dynamic configuration; plugin; GIS application framework

在軟件項目開發(fā)這樣一個充滿變化的知識應(yīng)用領(lǐng)域,面對應(yīng)用需求的多元化、軟件項目的大型化,使不同開發(fā)團隊的開發(fā)管理復(fù)雜性增加,從而導(dǎo)致了軟件開發(fā)成本提高等問題。從軟件工程的角度出發(fā),在設(shè)計層面人們希望通過一些軟件構(gòu)架的改進達(dá)到以下目的[1]:a)提高軟件復(fù)用性;b)增強模塊化和封裝性; c)不同功能模塊的無縫集成;d)靈活的可擴展性; e)面向不同應(yīng)用層面的領(lǐng)域性和易移植性。目前GIS應(yīng)用領(lǐng)域正面臨著一個從行業(yè)級、專業(yè)化應(yīng)用到大眾化應(yīng)用轉(zhuǎn)變的過程。 隨著GIS 大眾化應(yīng)用的不斷深入,GIS 軟件系統(tǒng)必須充分考慮適應(yīng)各種各樣不斷衍生的應(yīng)用需求的難題。基于傳統(tǒng)軟件構(gòu)架體系的GIS 軟件系統(tǒng)雖然具有模塊分工明確、平臺結(jié)構(gòu)緊湊等優(yōu)點,但TB 級的GIS 數(shù)據(jù)管理、多元化的數(shù)據(jù)來源、不斷外延的GIS功能等發(fā)展趨勢對GIS 平臺提出了新的要求和挑戰(zhàn)。因此對于GIS 平臺來說,提供一個具有良好復(fù)用性和靈活可擴展性的,同時對GIS 項目實施所面對的特定知識應(yīng)用領(lǐng)域具有很好支持的軟件框架是一件非常有意義的事情[1],而采用“平臺+ 插件”的軟件構(gòu)架將是解決上述問題的核心。

1 GIS軟件動態(tài)配置模型

“插件”這個詞最早來源于硬件技術(shù),20世紀(jì)60年代計算機硬件模塊化,模塊化的硬件插入計算機的設(shè)備框架中(如聲卡插入主板),這些硬件稱為插件[2]。后來這一理念被引入到軟件開發(fā)中。插件技術(shù)從本質(zhì)上講是一種軟件集成技術(shù)[3]。“平臺+ 插件”模型的主要思想是將擴展功能以插件的形式通過平臺統(tǒng)一地管理起來,在平臺內(nèi)部提供平臺與插件之間以及不同插件之間完備的消息機制(包括系統(tǒng)消息轉(zhuǎn)發(fā)、框架內(nèi)部自定義消息),對不同擴展功能進行分類并定義標(biāo)準(zhǔn)接口,從而把不同的功能插件有機地集成到一起,有效地協(xié)同工作。通常軟件配置包括靜態(tài)和動態(tài)兩種[4]。靜態(tài)配置也可以視為系統(tǒng)的軟件組成,組成軟件的構(gòu)造塊(building blocks)同時加載到處理器中,即軟件的所有組成部分同時配置,需要修改時首先中斷系統(tǒng)運行,然后重新編輯、編譯配置內(nèi)容,最后重新建立軟件系統(tǒng)。再配置時要對初始配置進行修改[5]。所謂動態(tài)配置指的是運行時修改軟件,它允許在線接受新配置時只牽涉到受影響的部分而無須重新編譯整個系統(tǒng)。動態(tài)配置分為兩類:a)設(shè)計軟件時預(yù)先定義軟件的更改,并由系統(tǒng)跟蹤何時滿足更改軟件的條件,這類動態(tài)配置稱為可編程的(programmed,也被稱為可預(yù)期的);b)Ad hoc(也被稱為隨機的),動態(tài)變化是不可預(yù)測的,系統(tǒng)運行時由用戶在一個未知的時刻進行動態(tài)配置[6]。動態(tài)配置對于需要不中斷運行而修改或升級的大型軟件系統(tǒng)(如大型GIS平臺系統(tǒng))非常重要,因為中斷軟件系統(tǒng)的運行既不經(jīng)濟又不實用。借鑒文獻[7]中對反射式動態(tài)配置模型的定義,現(xiàn)定義GIS的軟件動態(tài)配置模型如下。

定義1 GIS軟件動態(tài)配置系統(tǒng) GDCS(GIS dynamic configuration system)是一個三元組:GDCS=〈PC, PP, MP〉。其中:PC (plugin control)是插件控制系統(tǒng),負(fù)責(zé)插件添加、卸載的管理,動態(tài)檢測系統(tǒng)中各個插件狀態(tài),并為實現(xiàn)動態(tài)配置功能對基礎(chǔ)平臺進行一定的擴展;PP(plugin persistence)是插件持久化機制,負(fù)責(zé)插件狀態(tài)的持久化機制,負(fù)責(zé)GIS基礎(chǔ)平臺以及插件的狀態(tài)物理保存;MP(message protocol)是消息處理協(xié)議,負(fù)責(zé)定義插件與GIS基礎(chǔ)平臺、插件與插件的消息,以及消息傳遞方式、參數(shù)傳遞方式等。

定義2 插件控制系統(tǒng)PC是一個三元組:PC=〈DC, GP, TA〉。其中:DC(dynamic control )動態(tài)配置器,負(fù)責(zé)對基礎(chǔ)GIS平臺進行擴展,負(fù)責(zé)插件的動態(tài)加載和刪除等配置;GP(GIS platform)GIS基礎(chǔ)平臺,是各個插件的宿主程序,提供各個插件調(diào)用的接口,并提供了對底層空間數(shù)據(jù)操作的基礎(chǔ)接口;TA(target application)目標(biāo)應(yīng)用系統(tǒng),是插件對GP功能擴展的結(jié)果,是最終用戶使用的各個應(yīng)用系統(tǒng)。

定義3 插件持久化機制PP是一個二元組:PP=〈SD, BD〉。其中:SD (state data)狀態(tài)數(shù)據(jù),負(fù)責(zé)記錄各個插件以及基礎(chǔ)平臺的配置狀態(tài)信息,從而使得目標(biāo)應(yīng)用系統(tǒng)能夠監(jiān)測插件的配置狀態(tài);BD(behavior data)行為數(shù)據(jù),負(fù)責(zé)記錄目標(biāo)應(yīng)用系統(tǒng)的動態(tài)行為數(shù)據(jù),使GIS基礎(chǔ)平臺可以對目標(biāo)應(yīng)用系統(tǒng)以及插件使用的資源進行動態(tài)優(yōu)化,以提高目標(biāo)應(yīng)用系統(tǒng)運行性能。

定義4 消息處理協(xié)議機制MP是一個四元組:MP=〈SMP, UMP, PMP, PCP〉。其中:SMP (system message protocol)系統(tǒng)消息協(xié)議,負(fù)責(zé)對操作系統(tǒng)的消息進行截獲并進行轉(zhuǎn)發(fā);UMP (user message protocol)用戶自定義消息協(xié)議,負(fù)責(zé)用戶自定義消息在GIS基礎(chǔ)平臺與插件以及插件與插件之間傳遞;PMP (plugin message protocol)負(fù)責(zé)插件之間的功能函數(shù)接口的定義;PCP(plugin control protocol)插件一致性維護協(xié)議,負(fù)責(zé)對插件狀態(tài)一致性進行維護。根據(jù)上述模型的定義,建立的模型如圖1所示。

2 GIS軟件動態(tài)配置模型實現(xiàn)的關(guān)鍵技術(shù)

2.1 插件控制

GIS插件控制接口層由應(yīng)用框架管理接口(IGISAppFrame)、文檔管理接口(IGISDocument)、地圖圖層管理接口(IMap)、窗口管理接口(IMapView)和插件管理器接口(IExtension)等主要對象接口組成。

IGISAppFrame 對象接口用來管理整個應(yīng)用框架的各個模塊,通過該對象插件可以取得框架中的其他元素或?qū)ο蠼涌凇U{(diào)用者無須創(chuàng)建該對象,由系統(tǒng)來維護該對象的生存期和場景。 該接口封裝了應(yīng)用框架窗口句柄、GIS 文檔接口( IGISDocument),并提供了相應(yīng)的方法來操縱這些對象。

IGISDocument 對象接口的主要功能是進行插件與地理數(shù)據(jù)庫之間的數(shù)據(jù)交流。該對象接口管理著IMapView(視圖顯示接口)、IMap(地圖數(shù)據(jù)接口)、IGeometryPackage(地理數(shù)據(jù)包接口)等接口。通過此接口插件可以取得地圖文檔、圖層和要素類等相關(guān)信息。IMapView 對象接口主要控制視窗的顯示,包括接口的坐標(biāo)投影,它提供了包括屏幕顯示、屏幕和數(shù)據(jù)坐標(biāo)系之間的轉(zhuǎn)換等功能。

IMap 對象接口的主要功能是管理地圖圖層,通過該接口可以獲得加載的圖層數(shù)據(jù)。MapView 提供了顯示、更新等操縱數(shù)據(jù)的方法。該類響應(yīng)操作系統(tǒng)具有關(guān)于窗口視圖的消息,對地圖視圖窗口進行繪制、地圖數(shù)據(jù)顯示等功能。

IExtension 接口定義了插件的分類標(biāo)準(zhǔn)、插件的加載/卸載。插件通過支持此分類標(biāo)準(zhǔn),系統(tǒng)可以自動對開發(fā)的插件進行識別和分類。插件的加載/卸載模塊則負(fù)責(zé)對插件的加載或卸載的管理。各個對象模塊之間的關(guān)系如圖2所示。

2.2 消息協(xié)議機制

插件技術(shù)的應(yīng)用,使GIS 軟件動態(tài)配置模型具備了完備的消息機制,可以滿足平臺與插件、插件與插件之間的消息傳遞需求。其主要的消息機制可以分為兩種類型:

a)操作系統(tǒng)消息轉(zhuǎn)發(fā)機制。通過這種消息轉(zhuǎn)發(fā)機制,可以實現(xiàn)工具插件對操作系統(tǒng)視圖插件的交互控制,滿足諸如地圖編輯(如添加節(jié)點、刪除節(jié)點、刪除線等)對視圖直接進行手動交互的需求。其主要設(shè)計思想是在GIS基礎(chǔ)平臺框架中對操作系統(tǒng)的消息進行截取,通過自定義的消息管道(messagepipe)傳入相應(yīng)的工具組(grouptool)和工具(tool)中。顯示視窗的消息訂閱機制,可以滿足某些沒有按照標(biāo)準(zhǔn)插件接口制作的工具或者某些特殊工具插件需要在非工作狀態(tài)持續(xù)監(jiān)控視圖交互的需求。截獲操作系統(tǒng)的消息流程圖如圖3所示。

b) 框架內(nèi)部平臺和插件的自定義消息傳遞機制。插件之間的消息分三種:全局廣播、局部廣播和單播。它們都是把目的端口作為消息的目標(biāo)。在基于COM 的插件技術(shù)中,目的端口是用COM 的接口作為區(qū)分端口的標(biāo)志。消息的目的端要接收相應(yīng)的消息需要實現(xiàn)相應(yīng)的COM 接口。消息的源端同樣有定制的能力,當(dāng)消息的目的為IUnknown 接口時,消息便成為廣播消息,而針對特定接口的消息即為單播消息。 把平臺和插件內(nèi)部自定義的消息獨立開來,一方面可以避免與操作系統(tǒng)的消息機制和自定義消息發(fā)生沖突,另一方面也可以很靈活地實現(xiàn)框架自定義消息廣播和點對點自定義消息傳遞,如圖4所示。

2.3 持久化機制

永久狀態(tài)是那些插件的包容器在摧毀對象之前需要保存的數(shù)據(jù)(一般是屬性和實例變量,如圖層插件對象CMapLayer中的圖層名稱、圖層狀態(tài)、圖層索引、圖層的最大最小比例等)。為了保存插件對象的狀態(tài),插件對象的包容器需實現(xiàn)多個永久接口,這樣插件對象的包容器把保存的狀態(tài)提供給對象,插件對象就能夠把自己初始化到以前的狀態(tài)。在具體的實現(xiàn)過程中,GIS基礎(chǔ)平臺實現(xiàn)了IStorage、IStream等接口,插件只需要實現(xiàn)IPersistStream和IPersistStorage即可。因插件中永久化接口的實現(xiàn)比較簡單,現(xiàn)分析GIS基礎(chǔ)平臺永久化接口實現(xiàn)的關(guān)鍵技術(shù),GIS基礎(chǔ)平臺永久化接口的實現(xiàn)使用了復(fù)合文檔來存儲系統(tǒng)中使用的各個插件的狀態(tài)信息:復(fù)合文檔的創(chuàng)建使用函數(shù)StgCreateDocfile,打開復(fù)合文檔使用StgOpenStorage,復(fù)合文檔的關(guān)閉通過釋放根節(jié)點的IStorage達(dá)到關(guān)閉的目的,根節(jié)點的IStorage的釋放并不代表整個復(fù)合文檔的關(guān)閉,整個復(fù)合文檔的關(guān)閉通常指所有的Storage和Stream都關(guān)閉的情況。復(fù)合文檔提供四種訪問模式,分別是:

獨占模式 STGM_SHARE_EXCLUSIVE

共享拒絕寫模式 STGM_SHARE_DENY_WRITE

共享拒絕讀模式 STGM_SHARE_DENY_READ

完全共享模式 STGM_SHARE_DENY_NONE

在STGM_TRANSACTED模式下,若IStorage沒有提交(Commit),它下面的所有改動將不會保存;若提交了,其下面所有的改動將被保存。對于Commit和Revert操作來說,使用Revert將可以返回到最后一次Commit之前的情況,包括創(chuàng)建IStorage或IStream的操作。

在對插件進行永久化管理之后,GIS平臺插件框架界面層接口就可以對窗口、視圖、工具條等用戶界面進行管理,創(chuàng)建和定制能夠滿足不同用戶的界面元素。其主要接口有:

a)GISUI, 由GISUI 出發(fā)可創(chuàng)建或獲取界面的主要對象;

b)GISToolSpace為插件、工具提供工具箱的支持;

c)GISToolBars為插件提供工具條支持;

d) 插件的工具箱ToolBox 創(chuàng)建起來以后,便可以在其中創(chuàng)建GISToolPage和GISMenuBar;

e) GISToolPage、GISMenuBar 中可以插入、刪除和修改任何有GISButton派生的任何工具項。

各個界面層接口對象關(guān)系圖如圖5所示。

3 開發(fā)實例

插件主要表現(xiàn)為GIS框架下的視圖和工具。它包含諸如通用編輯和編輯擴展等。用戶可根據(jù)實際的使用需要選擇相應(yīng)的功能插件加載,用戶定制自己的插件需要實現(xiàn)框架定義的功能模塊插件接口。該接口提供的方法將用戶的菜單、工具箱、視窗等方法加載到GIS框架上,插件接口還定義了消息響應(yīng)方法,用戶實現(xiàn)該消息響應(yīng)方法就可以實現(xiàn)自己的功能模塊。以下將結(jié)合一個具體的工具插件開發(fā)的例子來對本文分析的關(guān)鍵技術(shù)進行說明。

a)插件資源的編輯。在VC++6.0或VS2005中對插件所需要的資源(如工具條資源、位圖資源等)進行編輯,編輯過程與通常MFC下開發(fā)過程類似,這里不再詳述。

b)示例插件需要實現(xiàn)IMPITool接口。該接口定義了一系列的工具插件的規(guī)則,示例插件實現(xiàn)這接口就可以被GIS基礎(chǔ)平臺調(diào)用,從而實現(xiàn)與GIS基礎(chǔ)平臺的交互。部分接口如下:

STDMETHOD(Pause)(LONG Reserved);

STDMETHOD(Stop)(LONG Reserved);

STDMETHOD(Start)(LONG Reserved);

STDMETHOD(OnCreate)(IMPIApplication* pMpiApplication);

STDMETHOD(OnLMouseDown)(UINT Button,UINT Shift,int X,int Y);

STDMETHOD(OnMouseMove)(UINT Button, UINT Shift, int X, int Y);

STDMETHOD (onLMouseUp) (LUINT Button, UINT Shift, int X, int Y);

在OnCreate接口函數(shù)中,傳入的是GIS平臺應(yīng)用框架的應(yīng)用接口指針,通過該指針,插件將該接口指針緩存,就可以調(diào)用GIS平臺應(yīng)用框架提供的函數(shù)功能了。例如獲得文檔接口、獲得地圖接口IMap, 通過IMap就可以獲得各個圖層數(shù)據(jù),從而對圖層的空間數(shù)據(jù)進行各種操作。

在OnLMouseDown、OnLMouseUp等函數(shù)接口中,實現(xiàn)對插件操作的視圖傳過來的鼠標(biāo)按下、彈起等消息進行處理,從而實現(xiàn)對視圖的編輯交互。如果不對這些函數(shù)接口進行處理,則可以在函數(shù)體中直接返回S_OK即可。

在完成了插件接口的實現(xiàn)之后,直接編譯、連接,對插件進行COM注冊,編寫的插件就加在了在GIS基礎(chǔ)平臺框架的插件管理器中,如圖6所示。

4 結(jié)束語

本模型已成功運用到大型GIS (MAPGIS7. 0)。“平臺+ 插件”的軟件框架不是對原來的軟件構(gòu)架技術(shù)的拋棄,相反在很大程度上可以看做是對原有框架構(gòu)建技術(shù)的演化和升級。本文剖析了在該模型實現(xiàn)過程中的關(guān)鍵技術(shù),并用實例對這些關(guān)鍵技術(shù)進行了解釋說明。在易實現(xiàn)性、安全性等方面進一步完善該模型是今后研究工作的重點。

參考文獻:

[1]吳亮,楊凌云,尹艷斌.基于插件技術(shù)的GIS應(yīng)用框架的研究與實現(xiàn)[J].地球科學(xué),2006,31(5):585-588.

[2]姜昌華. 插件技術(shù)及其應(yīng)用[J]. 計算機應(yīng)用與軟件,2003,20(10):10-11,67.

[3]竇蕾.面向構(gòu)件的復(fù)雜軟件系統(tǒng)中動態(tài)配置技術(shù)的研究[D]. 長沙:國防科學(xué)技術(shù)大學(xué), 2005.

[4]WERRMELINGER M A. Specification of software architecture reconfiguration[D]. [S.l.]:Universidade Novade Lisboa, 1999.

[5]MOAZAMI-GOUIDARZI K, KRAMER J.Maintaining node consistency in the face of dynamic change[C]// Proc of the 3rd International Conference on Configurable Distributed Systems. Annapolis, Maryland: IEEE Computer Society Press, 1996:62-69.

[6]WERMELINGER M. Towards a chemical model for software architecture reconfiguration[C]// Proc of the 4th International Conference on Configurable Distributed Systems. Annapolis, Maryland: [s.n.], 1998:111-118.

[7]曹旻. 基于組件的分布式軟件動態(tài)配置模型的研究[D].上海:上海大學(xué), 2005.

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

主站蜘蛛池模板: 超级碰免费视频91| 暴力调教一区二区三区| 国产一级毛片网站| 亚洲青涩在线| 成人午夜免费观看| 欧美国产在线看| 无码又爽又刺激的高潮视频| 97超碰精品成人国产| 国产精品流白浆在线观看| 精品国产成人av免费| 亚洲熟女偷拍| 亚洲乱伦视频| 高清亚洲欧美在线看| 亚洲中文字幕av无码区| 国产丝袜一区二区三区视频免下载| 亚洲AⅤ波多系列中文字幕| 久久国产精品麻豆系列| 国产91视频免费观看| 无码久看视频| 91热爆在线| 亚洲永久精品ww47国产| 成人免费一区二区三区| 精品久久人人爽人人玩人人妻| 国产免费精彩视频| 欧美一级大片在线观看| 青青国产在线| 精品一区二区无码av| 欧美日韩免费| 18禁黄无遮挡网站| 欧美一级大片在线观看| 九色最新网址| 国产高清无码麻豆精品| 国产无码制服丝袜| 国产丰满成熟女性性满足视频| 国精品91人妻无码一区二区三区| 99人体免费视频| av午夜福利一片免费看| 亚洲av无码人妻| 国产视频一二三区| 欧美a在线视频| 日本午夜精品一本在线观看| 久久黄色小视频| 日韩欧美中文字幕在线韩免费| 亚洲色图欧美视频| 一级做a爰片久久免费| 精品1区2区3区| 亚洲无码视频图片| 亚洲av无码专区久久蜜芽| 无码AV日韩一二三区| 国产午夜在线观看视频| 亚洲一区二区成人| 国产高清不卡视频| 成人日韩欧美| 亚洲精品无码AⅤ片青青在线观看| 亚洲午夜综合网| 国产美女在线免费观看| 亚洲欧美日本国产专区一区| 国产欧美日韩专区发布| 国内精品久久久久鸭| 欧美第二区| yjizz国产在线视频网| 人妻丰满熟妇αv无码| 国产啪在线91| 久久永久视频| 亚洲精品午夜天堂网页| 国模在线视频一区二区三区| 中文字幕首页系列人妻| 亚洲综合片| 国产午夜福利在线小视频| 亚洲成人精品久久| 91久久偷偷做嫩草影院免费看| 一本大道香蕉高清久久| 国产jizzjizz视频| 中文字幕乱码中文乱码51精品| 久久99国产综合精品1| 91精品最新国内在线播放| 区国产精品搜索视频| 高清无码不卡视频| 亚洲综合色吧| 色悠久久综合| 亚洲国产成人精品青青草原| 精品撒尿视频一区二区三区|