基于REST的地理信息系统的开发与研究
2011-08-23黄智华
黄智华
(南宁市勘测院,广西 南宁 530000)
1 前言
万维网是人类历史上最深远、最广泛的传播媒介。万维网的成功,在很大程度上是因为其软件架构的设计满足了Internet规模的分布式超媒体系统的需求。在Web2.0时代,呼唤有一种现代Web架构的模型,用来指导Web的设计、定义和部署。2000年,加州大学欧文分校的Roy Thomas Fielding博士提出了REST(表述性状态转移)这种软件架构的概念。REST允许程序在不同计算机上独立于操作系统或平台进行通讯,通过发送一个HTTP请求到网址,并获取某种格式的返回数据,支持的格式包括 XML或嵌入网址的XML。REST中,数据在调用之后仍保持原始状态。
目前在主流的Web服务实现方案中,因为REST模式的Web服务相对来说更加简洁,越来越多的Web服务开始采用REST风格设计和实现。例如,网易邮箱提供REST风格的Web服务进行邮件管理;雅虎提供的Web服务也是REST风格的。利用REST开发地理信息系统,可以顺理成章地继承REST的优势。
2 ArcGIS REST的应用意义
自从2008年ArcGIS Server 9.3发布以来,其新增了一种新的GIS服务——ArcGIS Server REST服务,并逐渐开始大行其道。正是有了这样一个基于REST的服务,地理信息系统开发难度的问题才得以迎刃而解。
第一,它将表现层与后台彻底分离。ArcGIS Server REST将GIS基础和核心功能全部进行了封装,并以服务的方式提供给客户端,如常见的地图展示、图层信息访问、空间几何查询、高级分析功能等。客户端无论是Javascript、Flex还是Silverlight无需关注GIS功能的实现。这样低耦合的设计方法,结构更加清晰,大大方便了系统的维护。
第二,便于快速开发。没有任何后台逻辑之前,表现层就可以开始设计,甚至没有发布服务,亦可以模拟服务来进行开发,最后再将模拟服务换成真正的服务即可。
第三,合理分配负载,减轻服务器压力。如果大量数据渲染全部交由GIS Server进行处理,然后将处理结果生成一张图片返回,大并发的时候服务器速度会很慢甚至死掉,然而基于REST的应用架构,REST负责将需要的数据传回客户端,压力较大的渲染工作放到客户端进行,有效减轻了服务器的压力。
3 ArcGIS API
在使用和消费REST方面,ArcGIS API for JavaScript、ArcGIS API for Flex、ArcGIS API for Silverlight就是ArcGIS的“三剑客”,使大量开发人员可根据需要选用它们进行地理信息系统的开发。
从根本上说,REST API就是由网址组成的。首先构建请求网址,接着发送请求到ArcGIS Server,等待接收服务器的响应,然后解析和使用服务器的响应。这种优势对基于浏览器的编程方面特别重要。使用REST API到服务器端和桌面编程也是非常简单,因而有很大的发展潜力。
4 地理信息系统的开发
南宁市基础地理信息服务平台采用了 Silverlight技术,基于ArcGIS Server和绑定服务开发富客户端程序。使用ArcGIS API for Silverlight,能容易地创建高质量的交互、华丽的界面和表现力丰富的Web程序。
首先要创建REST服务,必须要将GIS资源发布为Web服务,使他们能够被互联网或局域网的客户端应用程序远程调用。可以使用ArcCatalog或ArcGIS Server Manager发布。发布之后,就可以使用浏览器访问“http://(服务器)/ArcGIS/rest/ services/(服务名称)/(服务类型)”这样的方式展示服务的大量元数据。
在ArcGIS API for Silverlight中调用它显示地图,只需简单的代码:
正是基于这种简洁清晰的REST方式,开发的南宁市基础地理信息服务平台实现了放大、缩小、漫游、复位、前进、后退、放大镜查看、信息查看、搜索、点测、线测、面测、鹰眼、图层、书签、数据资源切换等基本功能。
在性能方面,缓存是改善REST地图性能的关键技术。实时创建地图是最费力和最耗时的方式,所以从缓存中找回地图将大大提高性能。如果存储空间不受限制,高速缓存是最佳的选择方案。在南宁市基础地理信息服务平台中,根据需求对GIS资源分级建立了缓存,使响应速度得到了提升,增强了用户体验。
REST开发正在流行,有理由相信REST将会不断得到发展和完善。