基于GIS应用程序开发框架的设计与实现

2018-10-21 19:27邱健韩雨
装饰装修天地 2018年6期
关键词:程序开发

邱健 韩雨

摘 要:针对应用范围日趋广泛的GIS应用程序,本文提出可用于程序开发的框架设计方法和实现方法,并通过实践得出该方法合理可行,值得参考借鉴的结论,为GIS应用程序更好的服务于人们日常生产生活提供技术支持。

关键词:GIS;程序开发;框架设计;框架设计实现

1 引言

在GIS技术快速发展与应用日趋广泛的局势下,切实提高相关软件与工具的开发效率,并保证软件整体质量,是目前面临的亟待解决的主要问题。实践表明,软件复用是十分可行且有效的方式。通过对软件复用的合理应用,能设计出一套良好的GIS应用程序开发框架,为开发人员及使用者提供有效的工具。

2 基于GIS应用程序开发框架设计

目前常用的框架方案主要有三种,分别为组件式、软总线式与插件式,不同方案具有不同的优劣势,单一采用其中一种框架方案,一般难以满足预期要求。这三种方案的优劣势分别为:(1)组件式:优势为灵活度较大,劣势为组件内不可控,且二次开发难度较大,缺乏扩展性;(2)软总线式:优势为具有的扩展性与灵活度,劣势为实现技术较为复杂,且对效率有直接影响;(3)插件式:优势为便于维护,有良好的扩展性,劣势为不同插件之间的互操作性较差[1]。

基于此,在设计中应做到取长补短,充分发挥多种框架方案的优势,即形成CG.ADF方案,以组件式方案为基础,采用插件机制,当插件载入至框架时再引入权限控制。以上过程均由框架自主完成,二次开发者无需添加其它代码。

2.1 设计思想

新设计思想主要是对现有全部资源进行整合,为以后的二次开发提供统一、适用、可扩展、便于维护的接口。此外,还应为功能的扩展提供支持,使权限与GIS平台均对开发人员完全透明。

2.2 框架设计

框架由数据层、访问层、框架层及扩展层组成。其中,数据层主要包含三部分数据,分别为:(1)地图数据库,用于空间地理对象及其属性信息的存储;(2)权限数据库,用于权限、用户及角色等数据的存储;(3)业务数据库,用于对业务数据进行整合,并以空间数据关联方面的需要为依据,结合业务数据类型,存储和空间数据之间保持的相互关系。

访问层和数据层之间直接对应,同样包含三部分,按照服务方式实施运行,具有良好的独立性:(1)GOS,即地理对象服务,对空间对象及其属性信息进行查询、修改和新加;(2)Authox,即权限服务,对权限方面的数据进行查询、修改和新加;(3)Data Center,即业务数据总线服务端,对业务方面的数据进行查询、修改和新加。

框架层,即CG.ADF,对访问层所有接口进行了封装,这使二次开发者无需再考虑访问层存在哪些模块。对于现有模块,可由各团队在相应的时期通过开发而成,这些模块无论是接口命令,还是使用方式,均不相同。在对GOS进行访问时,主要依靠的是COM组件X2Net;在对Authox进行访问时,依靠的是COM组件AuthoxClient;在对Data Center进行访问时,依靠的是C# DII。这种不同难免使开发者面临一定困难,所以对框架层而言,应提供一致的接口[2]。

在框架层得到空间数据以后,借助Map控件对地理对象进行实时监视。控件一级采用MVC模式,已经属于表现层。目前,传统框架已经可以提供很多控件,同时在管理模块中对这些控件予以使用,获得良好效果。Map处在底层平台,经封装,和其它模块建立了紧密的联系,涉及控制与数据等方面的交互,此时均由框架完成这部分所有工作,极大的减轻了开发者工作强度。基于此,在全新的框架当中,依然会提供UI,对和平台之间有直接关联的接口实施封装,为后续二次开发提供便利。

扩展层实际上是新开发出的插件,是一个和业务有着紧密关系的全新模块。插件规范主要采用接口的方式,简单可行、直接可靠。扩展层和访问层之间的交互主要依靠ADF完成。

现有方案的问题在于权限的配置过程过于复杂,缺乏和用户之间的友好性,主要表现在以下两个方面:第一,配置时虽然存在先后次序,但没有提示,仅可以通过对配置的标记才能对权限工具进行使用;第二,权限工具中具体功能方法名称的输入必须由手动完成,易产生错误,导致功能无法使用,而且这种错误往往是人在不经意情况下留下的,很难查出。针对第二个问题,可借助自动识别将所有名称显示到用户界面,然后根据需要选取,不再需要手动输入;针对第一个问题,应对权限的配置进行更改,根据正确的先后顺序,显示权限配置UI。这样一来,既不用文字提示,也不用考虑具体的配置流程,系统可对流程自行定义,此时开发者仅需填写必要信息[3]。

3 基于GIS应用程序开发框架设计实现

(1)菜单插件。先以CG.ADF.Plugin.Engine.Menu为基础派生出所需菜单类;然后在构造函数当中采用对函数进行调用的方法设置所派生出的菜单的标题与名称;最后对菜单项进行定义,菜单的标题与名称均采用CG.ADF.Menu.Item.Attribute进行设置,在对菜单项当中的事件处理进行点击以前,用于对处理方法的有效修饰[4]。

(2)工具条插件。先以CG.ADF.Plugin.Engine.ToolBar为基础派生出所需工具条类;然后在构造函数当中采用对函数进行调用的方法设置所派生出的工具条类的标题与名称;最后对不同工具按钮项进行定义,工具条类的标题与名称均采用CG.ADF.ToolBar.Item.Attribute进行设置。

(3)可停靠窗体插件。该插件的开发和以上插件有所不同,这是因为对窗体设计而言,它需满足的功能要求十分复杂,很难通过抽象化处理得到可视化模块,必须由二次开发者以业务要求为依据实施个性化、针对性的定制。此外,因C#语言无法实现类与类的多继承,所以不能像其它插件那样将数据部分定义在抽象基类。

根据上述原因,该插件类可将CG.ADF.Plugin.Engine作为基础直接实现继承。对开发者而言,应在对窗体进行设计时具备自主性,此时框架仅提供基础数据支持。其开发过程总结如下:新建一个窗体;对IDockableWindow接口进行继承与实现;由开发者完成个性化设计工作[5]。

(4)权限配置。①添加或删除用户及用户组,并确定用户和用户组之间的相互关系。②对各类功能资源进行配置或创建,填写具体的资源说明,并对资源组之间保持的关系进行设定。③创建或删除权限,即(用户组、资源组、功能组)三元关系的一个实例的添加与删除。

4 结束语

以上设计方法与实现方式经过了实践的验证,说明采用以上设计、实现方法是切实可行的,具有良好的参考借鉴价值,能使二次开发具有良好的自主性与灵活性。

參考文献:

[1] 张毅,李国卿,赵军喜,孙庆辉.插件式GIS应用框架关键技术研究[J].测绘科学技术学报,2010,2704:298~301.

[2] 汶博,龙明,王青山,李晓刚.浅析Cairngorm框架在基于RIA网络GIS中的应用[J].测绘科学,2010,3506:215~216+252.

[3] 王倩,陈怀民.基于Mapobjects组件式GIS导航系统开发[J].科学技术与工程,2007(5):757~760.

[4] 许巨平.基于ArcEngine插件式GIS应用框架的设计与实现[J].安徽地质,2011,2101:60~62+73.

[5] 闻平,王冲,杨林波,陈科,谢飞.基于插件技术的GIS应用框架关键技术研究[J].测绘通报,2012,S1:608~609+620.

猜你喜欢
程序开发
浅析大学生在兼职小程序开发中遇到的问题
基于形成性评价的程序开发作业设计与实践
确定船体分段焊缝类型、长度及焊材的程序开发研究
VBA在Excel中的应用一例
利用OpenGL技术实现网格波动效果界面