基于插件式GIS的国土资源管理信息系统开发

2015-02-19 03:48黄翔涛刘义海吴学饶
地理空间信息 2015年6期
关键词:通信协议控件插件

黄翔涛,刘义海,吴学饶

(1.江西理工大学 建筑与测绘工程学院,江西 赣州 341000)

国土资源管理信息系统作为“数字城市”的一个重要分支,有着广阔的发展空间及应用前景。根据系统总体功能的要求,国土资源管理信息系统主要由城乡一体化地籍管理子系统、土地储备管理子系统、矿产资源管理子系统、地质灾害管理子系统、土地利用规划管理子系统、地籍数据处理子系统、系统维护管理子系统组成。这些子系统的共同特点是都需要具备基本的GIS功能。如果采用当前流行的组件开发方式,存在以下问题:①各子系统相同的功能模块,需要重复开发,采用复制粘贴方式进行开发,效率低;②系统耦合性强,系统的后期扩展及更新困难;③灵活性不强,界面风格不统一,不能很好地满足国土资源局各部门间的需求[1]。基于以上问题,本文提出了基于插件式的应用框架技术,并在.NET开发环境下,采用C#语言结合ArcEngine 10.0组件开发包,把各子系统都具有的功能模块以插件的形式封装成一个更高级别的组件,应用到各子系统中,从而避免重复开发。

1 插件技术

插件技术是在软件的设计与开发过程中,应用程序主要由宿主程序和插件对象2部分组成[2],二者之间可以通过一定的通信协议(即接口)进行交互,宿主程序可以对实现了自身接口的插件对象进行调用,插件对象同样也可以在遵守宿主程序通信协议的基础上实现自己的逻辑,并添加到宿主程序。二者之间既相互依赖,又相互独立,宿主程序可以独立于插件对象而存在,插件对象的实现需要依赖于宿主程序。因此,开发过程中,系统的更新及维护可以在避免修改宿主程序的情况下,通过对插件对象的调整或增加达到目的,从而降低了系统的耦合性。

1.1 插件技术实现方案

当前插件技术的实现主要有基于动态链接库DLL技术、基于组件对象模型COM技术以及基于.NET反射技术等3种技术方案[3]。本文采用基于.NET反射技术,其实现的方式是通过.NET的反射机制和接口技术,程序在反射机制下获取动态加载的插件中的类型信息,并借助于接口技术来判断所获取的类型信息是否满足宿主程序的要求,如果满足,宿主程序将使用对象动态技术在内存中生成一个插件对象并添加到插件池中。

1.2 插件技术原理

插件技术的本质是在不修改宿主程序的基础上,通过对插件对象的修改或增加对软件进行更新与维护,开发人员便可以在遵循插件接口标准的情况下进行开发。插件式应用框架中各个模块是以插件的形式相互独立存在的,主要由3个部分组成[4],如图1所示。

图1 插件式框架结构图

1)宿主程序,即系统的主体部分,是各个插件依附的对象,主要负责加载与卸载插件对象、UI的生成及动作交互、协调各插件间的协同工作。宿主程序主要由系统主界面、插件引擎、通信协议3部分组成。系统主界面主要以可执行文件的形式存在,负责对插件对象的解析并生成各种UI,并将生成的UI对象进行委托事件的关联;插件引擎主要负责为宿主程序解析插件对象,并将这些解析的对象放到插件容器里供系统主界面进行调用;通信协议即宿主程序与插件对象之间的一种通信标准,它规定只有实现该通信协议接口的插件对象才能被宿主程序所调用,并与宿主程序进行交互。

2)框架插件,主要起到系统功能的承载作用。

3)附加的组件库,在整个系统起到辅助的作用,如提供一些公共的函数方法、图层的遍历、打开或创建工作空间等。

2 基于插件式的系统设计

2.1 系统开发环境和平台选择

1)GIS平台:ArcSDE 10.0、ArcEngine 10.0;

2)数据库:Oracle11g;

3)开发工具:VS2010;

4)其他软件:DotNetBar 9.2。

2.2 通信协议的接口设计

在通信协议的接口设计中,主要定义了3个接口:宿主程序接口IApplication、插件对象接口IPlugin、插件框架接口IPluginService(图2)。

图2 通信协议接口设计图

1)宿主程序接口IApplication,定义一个类Application实现该接口,Application对象是插件系统中的核心对象,代表应用程序本身,插件对象可以通过这个对象访问到其定义的一些成员变量,如系统主界面菜单RibbonControlMain、主地图控件MapControlMain、制图控件PageLayoutControl、图层控件TOCControlLayers、状态栏BarStatus等,是宿主程序与插件对象进行交互的关键。

2)插件接口IPlugin,所有实现了该接口的插件都可以加载到宿主程序,主要定义了插件对象的基本信息,如定义了全局对象Applicaiont,用于与宿主程序进行交互,以及描述Description、名称Name、类型Type以及插件加载方法Load和卸载方法Unload。

3)插件框架接口IPluginService,是所有插件对象的容器,主要定义了解析并获取插件对象的方法,如加载插件到宿主程序的方法LoadPlugin、从宿主程序卸载插件的方法RemovePlugin等。

2.3 基于插件的系统功能框架设计

本文设计主要采用组件式开发模式,该模式的基本思想是,将大而复杂或有相同功能模块的软件应用分成一系列可先行实现、易于开发、理解和调整的单元组件[5]。以GIS二次开发平台ArcEngine开发组件为例,其提供了地图显示控件AxMapControl、制图控件AxPageLayoutControl、图层控件AxTOCControl以及工具栏控件AxToolbarContrl等各类通用的控件。正是使用了组件式开发技术,使得在GIS系统开发的过程中,通过直接把这些控件拖放到窗体上就可以实现简单的GIS功能[6]。基于此,本文把国土资源管理信息系统中各个子系统的公共功能(如地图的浏览、查询、制图、空间分析等)提取出来以插件的形式封装在一起,相当于一个更高级别的组件。在各个子系统需要这些功能模块时,只要把相应的插件生成的DLL放到指定的文件夹里就可以实现目的,从而避免了不必要的重复开发工作,提高了开发效率。

3 国土资源管理系统应用实例

3.1 实例概述

本系统以土地权属、土地利用规划、矿产资源分布等数据为例,构建了某市国土资源管理信息系统的功能框架(图3),并通过上述3个通信协议接口实例化插件,构建插件集。在系统启动时,宿主程序从指定位置读取并解析所有的插件对象后存放到插件集合PluginCollection中,通过.NET的反射技术,把解析出来的插件对象以UI(主要是按钮或右键菜单)的形式加载到系统主界面的相应位置,并注册相应的按钮或右键菜单事件。在用户管理窗口中,管理员可以选择指定的用户,并在权限列表中勾选功能模块,启动时系统会根据所勾选的功能模块加载插件(图4),以满足国土资源局各个部门所需要的功能需求,而不必针对不同部门的功能需求开发相应的系统。

图3 系统功能框架图

图4 各子系统主界面图

3.2 功能举例

基于前面的分析,下面选择地图浏览模块进行插件的开发。

1)新建一个类库MapBrowse,并定义一个类ClsPluginMapBrowse,继承通信协议接口IPlugin。

2)在ClsPluginMapBrowse重写IPlugin中的Load方法,在该方法中主要是做2个工作:①实例化按钮或右键菜单并添加到宿主程序的主界面,并注册相应的事件;②通过全局对象Application获取系统主窗体、地图、图层等对象,以实现相应的操作。部分代码如图5所示。

4 结 语

通过插件的方式把国土资源管理信息系统各子系统中公共功能提取出来,使得各子系统可以方便地获取这些插件,很好地满足了国土各部门间的功能需求。实践表明,采用插件式技术开发大型的GIS系统有以下几点优势:避免了相同功能的重复开发,提高了工作效率;在系统后期的更新与维护中,只需要增加或更新插件就可以达到目的;在系统的开发过程中,开发人员之间的开发工作相互独立,方便项目的管理。

图5 代码截图

[1]卢学鹤,余光辉,温小荣,等.基于插件技术的森林资源GIS的设计与实现[J].南京林业大学学报:自然科学版,2009,33(1):127-130

[2]刘勇,岳建伟.基于.NET的插件式GIS应用框架设计与实现[J].地理信息世界,2008(4):82-86

[3]余叔同,郑粉莉,张鹏.基于插件技术和GIS的坡面土壤侵蚀模拟系统[J].地理科学,2010,30(3):441-445

[4]李祉.基于插件式框架的农业气象灾害服务保障系统的实现[D].北京:中国地质大学,2012

[5]黄信望,卢远.基于GIS的水生态健康评价系统开发[J].地理空间息,2013,11(4):67-69

[6]张俊,吴健平.插件技术在ArcGISEngine开发中的应用[J].测绘与空间地理信息,2009,32(3):128-130

[7]范强.插件式GIS在地质灾害信息管理系统中的应用[D].成都:成都理工大学,2010

[8]蒋波涛.插件式GIS应用框架的设计与实现[M].北京:电子工业出版社,2008

[9]兰小机,刘德儿,魏瑞娟.基于ArcObjects与C#.NET的GIS应用开发[M].北京:冶金工业出版社,2011

猜你喜欢
通信协议控件插件
基于.net的用户定义验证控件的应用分析
自编插件完善App Inventor与乐高机器人通信
关于.net控件数组的探讨
基于Z-Stack通信协议栈的红外地温采集电路设计
基于jQUerY的自定义插件开发
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
基于Revit MEP的插件制作探讨
RSSP-I、RSSP-Ⅱ及SAHARA三种安全通信协议实现技术简介
基于嵌入式MINIGUI控件子类化技术的深入研究与应用