郑强文,邬群勇,袁 莹
(1.福州大学 福建省空间信息工程研究中心,福建 福州 350002;2.厦门理工学院,福建 厦门 361000)
一种轻量级网络空间信息系统开发模式研究及应用
郑强文1,邬群勇1,袁 莹2
(1.福州大学 福建省空间信息工程研究中心,福建 福州 350002;2.厦门理工学院,福建 厦门 361000)
针对传统网络空间信息系统开发模式存在的问题,提出一种轻量级网络空间信息系统开发模式。详细介绍了模式的组成,利用该模式开发了一套基于网络地图的快速消费品销售管理系统。结果表明,文中模式不仅可以快速构建小型空间信息应用系统,而且还能降低研发难度和成本。
轻量级;空间信息系统;SSH;公共地图服务平台;关系数据库
传统空间信息应用系统的开发大多是基于GIS厂商提供的中间件之上进行的。相比于非专业的GIS应用,传统模式有如下几个问题:①需要大量的基础地理数据,并且要购买昂贵的GIS软件对基础地理数据进行专业处理和管理;②数据库维护难度高,维护人员要有较好的关系型数据库和GIS系列产品知识;③为了保证用户访问量增加时系统的效率,需要扩充GIS服务器和空间数据库资源,导致成本较高;④开发者必须具备专业的GIS知识和精通底层GIS开发,导致延长系统开发周期。
大多数的网络空间信息应用属于弱GIS需求的应用,不像专业GIS系统需要强大的空间分析和空间处理功能,一般只涉及位置数据的管理或者与位置相关的数据、服务及研究结果的展示等简单功能。如果利用传统的方式建立、设计多层次复杂的涉及到空间数据库引擎、GIS服务的应用系统,将导致开发成本高、难度大和降低研发速度,从而给项目带来风险。
商业GIS厂商提供了一些网络空间信息系统的开发框架,如ArcGIS REST API 和ArcGIS API For Flex开发框架。但这毕竟是商业的GIS框架,只适用于ESRI开发技术平台,对第三方GIS服务的调用较困难,并且还是无法避免复杂的GIS软件的使用和专业GIS知识的学习。同时,这些框架客户端事件处理能力低,只能通过服务器更新页面数据,难以实现数据同步更新,造成响应速度慢,无法基于HTML扩展,不利于地理信息的共享和互操作,导致开发性和扩展性低[1]。因此,针对弱GIS需求的应用,探索一种成本低、开发快、难度小、用户体验好的轻量级空间信息系统开发模式具有重要的研究和应用价值。
无论是开发的技术还是过程,对于轻量级开发模式的概念都没有统一的定义,但轻量级开发通常与一套开发框架、方法以及设计原理相结合,通过采用组件式体系结构和微内核机制,能够把具有不同功能和特性的应用框架集成在一起工作。轻量级空间信息系统应从两方面理解:①GIS功能无须太复杂,满足基本的空间信息应用要求;②开发技术应该简单化、高效化、低成本化。开发模式的设计,应遵循轻量与简单、适应性和开放性原则,具体表现为:①系统占用硬件资源尽量小;②开发方法简单高效,周期较短,成本低;③对象和集成服务之间实现松散耦合,降低模块之间的依赖性,提高系统的可移植性和可维护性;④允许组件的编写尽量简单化自由化,以适应不断变更的需求;⑤以较低的代价实现较好的用户体验。
轻量级的网络空间信息系统开发模式,可以根据业务需求快速构建一个空间信息应用系统。系统框架应尽量做到松散耦合、可重用性高,系统实现的工作量少,生产效率高,人力、软件和硬件资源成本低。本模式摒弃传统的网络空间信息系统开发方式,使用支持存储和管理空间数据的关系数据库、第三方地图服务和面向J2EE的SSH轻量级框架实现组件式的开发模式,该模式完全基于开源技术,包括前端和服务端的开发框架,前后端分别使用Jquery(轻量级JavaScript脚本库)和Java语言,降低了开发难度,减少了开发成本,大大提高了系统开发效率,其结构如图1所示。
图1 开发模式结构图
2.1 数据库层模式
数据库层是系统数据处理和管理的基础,本模式的空间数据库可以采用Oracle、PostgreSQL、MySQL等支持空间数据存储的关系型数据库,能支持简单空间数据类型的直接访问,避免了第三方空间数据库引擎,有利于与其他程序的交互共享,大大提高了空间数据的查询效率和用户体验。由于这些关系数据库提供了一系列在空间数据上执行的,可以满足许多基本的空间处理、空间分析需求的各种函数[2-3],系统开发的时候,可将一部分GIS操作放在数据库层中实现,从而在一定程度上释放客户端的GIS服务负担,提高系统交互效率,达到更好的用户体验。
2.2 Web应用逻辑层模式
Web应用逻辑层采用经典的表示层、业务层和数据持久层三层结构,并分别使用当前最流行的轻量级Struts2、Spring、Hibernate网络开发框架(又称作SSH)实现。Struts2框架作为基础架构,负责模型(Model)、视图(View)和控制器(Controller)的分离,用 Hibernate支持数据持久层,在Struts2架构的Model部分由Spring支持业务逻辑,利用Spring工厂模式以组件的形式把Struts2和Hibernate框架整合在一起,构建一种网络信息系统轻量级架构和快速开发的方案。该方案将Web层的代码进行分离,最大限度符合了高内聚、低耦合的标准,极大提高了系统的开发效率和可维护性。
数据持久层作为网络空间信息系统开发的核心部分,使用Hibernate作为持久化工具,实现空间数据的对象化表达。Hibernate Spatial(Hibernate的空间扩展)使用JTS(Java空间拓扑套件,简称JTS)作为其几何对象模型以支持空间数据类型。JTS对OGC的Geometry空间对象规范进行了实现,能实现空间数据的对象化表达。
Hibernate作为ORM(对象/关系)数据库映射的工具,实现了对象数据到关系型数据库的映射,允许程序设计中完全采用普通的Java对象(也称POJO对象,对应图中PO)作为持久化对象使用,不仅包括类到表的映射,还包括类间关系到表间关系的映射,相当于能够直接对数据库中的表进行操作,使程序员不必担心表间复杂关系的处理,也不必为程序中多个表的同类操作而进行大量机械的重复性工作,减少了代码编写量和开发难度。同时,Hibernate作为轻量级封装的工具包,还提供了数据查询和获取数据的方法(对应图中的DAO,Java类,封装了大量方法),大幅度地减少在开发时人工使用SQL和JDBC处理数据的时间。Hibernate还支持多个数据库的方言[4],只需修改映射文件的方言配置,就可以更换不同的数据库,使程序与数据库完全解耦分离,降低了对数据库的依赖,增强了系统的可移植性,符合适应性的原则。
由于JTS对大量的空间操作算法进行了封装[5],开发的时候可以将部分GIS操作放在Web层,配合客户端和数据库的空间分析与空间处理能力,实现三位一体的空间协同操作,降低网络传输量,平衡客户端与服务器端的负担,提高了用户体验。
2.3 客户表现层模式
客户表现层是整个模式的最高层,是构建于浏览器之上的,通过友好的浏览器交互界面,向用户展示空间数据和提供空间信息服务,获取用户输入和操作信息并交给业务层去处理,然后对结果进行展示。
本模式使用Jquery作为前端开发语言,其核心理念是“写的少,做得多”[6]。与 JavaScript 本身相比,它具有更多优点[7]:①更少的代码,更多的库函数,更多的特效;②更易学习;③消除了跨浏览器的兼容问题;④更简单地实现AJAX。使用Jquery不仅能够提高用户体验,而且还能提高开发效率和学习成本。
目前,市场上有许多支持Jquery的轻量级开源外观设计框架,如EasyUI、BootStrap等,使用这些框架,不仅可以使开发者用少量代码就能实现体验较好的界面,而且还可以跨浏览器使用,大大提高了开发效率和缩短了开发时间。
随着百度地图、天地图、高德地图、谷歌地图等在线开源的公共地图服务平台的出现,对于轻量级的空间信息应用系统,开发者无须再建立自己的GIS服务就能实现许多基本的GIS功能,减少了大量的GIS软硬件成本。使用公共地图服务平台,只需要一个简单的Tomcat服务器就能完成系统的网络交互,避免了传统GIS服务占用大量计算机资源的问题。另外,公共地图服务封装了大量的空间信息应用服务接口,开发者并不需要专业的GIS和空间数据库知识就能实现系统的开发和维护,大大降低了开发难度和缩短了开发时间。
3.1 系统需求分析
某公司的基于网络地图的快消品销售管理系统的空间信息需求主要有:①实现与空间数据相关的地图展示、地图编辑功能,具体有客户位置、客户区域、客户区域分布的地图展示与编辑和产品销售区域分布、人员轨迹的地图展示;②实现与客户、业务相关的空间数据的采集、处理和管理功能。
该系统GIS功能的需求比较简单,不需要建立独立的GIS服务,选用第三方地图服务即可。系统需要管理用户产生的空间位置数据,不需要使用空间数据库引擎,普通的支持空间数据存储的关系数据库就可实现。根据这些需求,系统的开发及应用环境无须太复杂,本文设计的轻量级开发模式就可满足用户需求。
3.2 系统结构
根据上述业务、功能、环境需求,某公司的基于网络地图的销售管理系统结构如图2所示。本文选择第三方地图服务百度地图和MySQL数据库,Web层和数据库层的空间处理、空间分析能力为辅,构成本系统的GIS服务体系。在GIS服务体系、数据库系统和销售管理系统业务平台的支撑下,用户通过浏览器或者其他外部系统向Web层的各个业务模块发送请求,即可实现信息的交互。
图2 系统结构
3.3 系统实现模式和技术
3.3.1 数据库及数据结构
空间数据在数据库中是以字段形式存储到数据表的一个数据列中,数据库提供POINT、LINESTRING、POLYGON、GEOMETRY等空间数据类型,空间数据跟其他数据没有什么区别,无须特别处理,实现了空间数据和非空间数据之间的集成。此外,系统将WKT文本格式作为空间数据的载体,实现前后端空间数据的一致性。WKT(OGC well-known text)可以表示点、线、多边形、TIN(不规则三角网)及多面体,通过几何集合的方式来表示不同维度的几何对象,其二进制表示方式WKB(OGC well-known binary)能使其在数据库中存储。使用WKT和WKB能够很好地和其他系统进行数据交换,目前大部分支持空间数据存储的数据库构造空间数据都采用这种方式[8]。
3.3.2 数据交互模式
系统采用Ajax+JSON作为数据交互模式。Ajax是一种创建交互式网页应用的开发技术,通过与后台进行少量的数据交互,实现网页异步更新。常用的空间数据格式是基于XML构建的[9-10],传统的模式较多采用XML作为数据载体。而JSON是一种轻量级的数据交换格式,是基于JavaScript的一个子集,采用完全独立于语言的文本格式,相比于XML有数据量小、解析速度快、易于阅读和编写的特点[10-13],本系统可采用JSON作为数据的传输格式。Ajax+JSON数据交互模式是一个典型的轻量级交互模式,能够达到很好的用户体验。
3.3.3 数据缓存机制
传统的空间数据库不支持客户端数据缓存,客户端只能生成查询语句而由服务器端缓存数据并进行处理,增加了服务器的负担[14]。Hibernate则把缓存负担转移到客户端[15],使客户端缓存数据常驻内存,本模式采用此方法,减少了网络开销和平衡了网络负载,实现了更好的用户体验。
通过上述研究分析,最终在较短的时间内实现了集空间数据采集、处理、管理、查询和地图展示、编辑为一体的销售管理系统。以系统的客户管理为例,图3展现了客户管理的基本功能,这里把客户作为点要素表示,同一类别的客户点生成客户区,用户可以在地图上对客户点、客户区进行编辑。
图3 基于地图的客户管理页面
本文提出的开发模式,完全遵循轻量与简单、适应性和开放性的轻量级开发原则。无论是整体开发环境的构建还是各个组件框架的编写与重构,都是相当容易的,不仅避免了建立GIS服务的繁杂过程,而且前后端都有一套成熟的轻量级开发框架,简化和解决了开发中繁琐、复杂、耗时、低效率的问题。正是由于系统前后端都有一套成熟的轻量级框架,使代码分层,能够根据客户的需求快速构建可行的修改方案,具备很强的适应能力。此外,本模式能够适应数据库技术、网络技术的发展,充分利用各种开发技术理论的优势,新技术、新成果的选择具有较高的自由度,提高了系统开发的工作质量和效率。
[1] 袁怀月,侯澄宇,杨恒.基于ArcGIS Flex API的工厂基础地理信息共享服务系统设计[J].测绘工程,2011,20(2):61-65.
[2] SWAIN N R,LATU K,CHRISTENSEN S D,et al.A review of open source software solutions for developing water resources web applications[J].Environmental Modelling & Software,2015,67: 108-117.
[3] KOTHURI R,GODFRIND A,BEINAT E.Pro Oracle Spatial for Oracle Database 11g[M].USA: Apress,2007: 19-36.
[4] OTTINGER J B,MINTER D,LINWOOD J.Beginning Hibernate[M].USA: Apress,2014.
[5] JTS Topology Suite [EB/OL].[2015-08-29].http://tsusiatsoftware.net/jts/main.html.
[6] 侯海平.屈武江.基于Ajax技术的ASP.NET数据分页[J].计算机系统应用,2013(9):154-159.
[7] 陶国荣.jQuery权威指南[M].北京:机械工业出版社,2013.
[8] CHEN R,XIE J.Open Source Approaches in Spatial Data Handling[M].Springer Berlin Heidelberg,2008:105-129.
[9] 谭力,杨宗源,谢瑾奎.Ajax技术的数据响应优化[J].计算机工程,2010,36(7): 52-54.
[10] 韩敏,冯浩.基于JSON的地理信息数据交换方法研究[J].测绘科学,2010,35(1): 159-161.
[11] LIN B,CHEN Y,CHEN X,et al.Comparison between JSON and XML in Applications Based on AJAX[C].Computer Science & Service System (CSSS),2012 International Conference on.IEEE,2012: 1174-1177.
[12] 李细杰,邬群勇,蔡旺华.基于JSON的轻量级WebGIS模型与应用[J].测绘工程,2011,20(2):53-56.
[13] 戴建光,曹先密,马天驰,等.移动影像与规划专题信息终端平台建设与实现[J].测绘工程,2015,24(4):77-80.
[14] 周园,梁虹,陆轶,等.基于ArcSDE与Hibernate的空间数据库混合访问方法[J].计算机工程与设计,2008,29(5):1192-1194.
[15] 吉亚云,刘新,叶德建.商用多媒体信息发布系统持久层设计与优化[J].计算机工程,2015,41(1): 261-265.
[责任编辑:刘文霞]
Development and application of a lightweight web spatial information system
ZHENG Qiangwen1,WU Qunyong1,YUAN Ying2
(1.Spatial Information Research Center,Fuzhou University,Fuzhou 350002,China; 2.Xiamen University of Technology,Xiamen 361000,China)
In view of the problems existing in the development of the traditional web spatial information system,this paper puts forward a development model of the lightweight,and introduces the composition of the model in detail.Taking advantage of this model,a sales management system of fast moving consumer goods based on web map is developed.The results show that the proposed model can be not only used to build a small spatial information application system quickly,but also reduce the difficulty and cost of the research and development.
lightweight; spatial information system; SSH; public map service; relational database;
引用著录:郑强文,邬群勇,袁莹,等.一种轻量级网络空间信息系统开发模式研究及应用[J].测绘工程,2017,26(1):69-72.
10.19349/j.cnki.issn1006-7949.2017.01.015
2015-11-18
郑强文(1990-),男,硕士研究生.
TP311.5;P208
A
1006-7949(2017)01-0069-04