1. REST风格的Web服务
REST是Roy Fielding在其2000年的论文中首次提出的一种软件架构。具体地说,该术语可以被用来通过HTTP定义一个Web服务应用程序编程接口(API)来进行资源管理,例如创建、读取、更新和删除(CRUD)。
Roy Fielding指出,虽然REST架构专为大规模超媒体分发,但它并不是一种“专用”架构。目前,最具REST风格的Web服务可以简单为HTTP“Get”——既URL网址,这是最简单的利用Web服务的请求提出方式。
REST中,CRUD意味着创建/读取/更新/删除地图服务的子组件,也就是一个层。一个功能齐全的REST地图服务可以让使用者建立一个层,读取层,更新层,或删除层。
目前,ArcGIS Server REST API只允许用户读取层(查询层,并查看该层地图)。查询可以基于浏览器或在多种编程语言中实现,例如.NET,Java,JavaScript, Ruby, Python等。REST类型的Web服务遵循以下这些基本原则:
1、设定地址资源:可以使用一个网址访问任何资源。
2、通用接口:标准的Put,Get,Post和Delete操作都需要得到工作才能完成。
3、无状态消息:每个请求都是独立的,每个请求都必须包括自己的参数,来完成操作。
4、表达:请求结果的渲染可以通过多个形式实现,例如地图和影像,XML和JSON。
2. REST类型Web服务的优势
REST类型的Web服务的吸引力在哪里?就是在于其使用极其简单。REST类型的Web服务要求很少的编码工作量,能够减少很多不必要的工作。例如,假设用户需要从ArcGIS Server地图服务器生成空间范围在185.33度以西,-59.53度以东,74.08度以北,15.20度以南地区,JPG格式的800×500像素的地图,就可以访问: @http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/ 。
这个链接的响应就是返回用户想要的地图图片。重要的是,用户可以在各种计算机编程语言——如.NET,Java,JavaScript,Flex代码中嵌入这个网址来生成所需要的影像地图,而且只需在Web浏览器中运行该段代码,就能看到所需要的地图。
REST技术具有很多优点:
1、无需引入SOAP消息传输层,轻量级和高效率的HTTP格式可直接被应用。
2、灵活性和易用性
a.无需建立庞大的XML消息。只需建立一个网址字符串来访问REST服务。
b.可以轻易地在任何编程语言中实现,尤其是在JavaScript中。使用SOAP与JavaScript的Web服务非常繁琐,但使用REST与JavaScript的Web服务就非常简单。
c. REST有利于促进JavaScript和XML(AJAX)异步mashup和Web 2.0热潮的进一步发展。Mashup能
够耦合来自不同网站的资源结果。因为容易被调用、易于使用,REST服务就是实现mashup的最优方法。ALL FOR GISwdO AB
3、可以不使用任何编程语言就能访问服务,而只要使用Web浏览器或类似如ArcGIS Explorer的地理浏览器。
4、更好的性能和缓存支持——REST类Web服务可以利用高速缓存控制头,从而减少带宽的需求。使用REST可以改善响应时间和改进用户体验。ALL FOR GIS gN1i s~.F/A
5、可扩展性和无状态性——每个请求都是独立的。一旦被调用,服务器不保留任何会话,这样就可以更具响应性。通过减少事件后通讯状态的维护工作,提高了服务器的可扩展性。
6、易于被索引和发现——REST网址能够被如谷歌,雅虎或MSN的搜索引擎索引,这使得它们更容易地被发现。不通过单独的资源发现机制就可以发现网址,例如通用描述,发现和集成机制(UDDI)。
REST类型的Web服务简单而且有效,直观,用户界面友好。在许多情况下,简单和有效地使用REST技术远比使用复杂的基于SOAP的Web服务具有更高的效率。利用REST对许多方面都非常有利:
1、对于服务生产者:利用REST可以降低创建服务的成本,降低托管和维护支持服务的开销。
2、对于服务消费者:REST网络服务可以降低学习曲线,减少构建地理信息系统应用所需要的时间和预算。
3、对于管理人员:REST有许多非常理想的体系结构特性:可伸缩性,高性能,可靠性和可扩展性。这些特点很好地与现代商业环境相协调,这就要求技术解决方案必需与业务本身具有同样的适应性和敏捷性。
3. ArcGIS Server中的RIA+REST的特点
1、将表现层与后台彻底分离
从N年前讨论MVC开始就在讨论解耦、松耦合的设计方法,ArcGIS Server REST将GIS基础和核心功能全部进行了封装,并以服务的方式提供给客户端,如常见的地图展示、图层信息访问、空间几何查询、高级分析功能(网络分析、地理统计、空间分析统计、水文分析、地址编码、逻辑网络、坐标转换等)等。这些全是GIS相关的功能,客户端无论是Javascript、Flex还是 Silverlight无需关注GIS功能的实现,只用专心于人机交互和用户UI设计。
2、方便程序员和美工协同开发
对于Flex和Silverlight开发来说,这种界线更为明显,如微软专门为设计人员提供的Express Blend,程序员只需将精力集中在基于vs的代码编写上,而这些代码无需关注GIS功能实现的方法,只需要完成对ArcGIS Server REST服务的调用即可,结构一目了然。
3、有利于采用快速原型的开发方式
没有任何后台逻辑之前,表现层就可以开始设计,FlexViewer无疑是最好的说明,ArcGIS Silverlight API也将拥有类似的框架。
4、合理分配负载,减轻服务器压力
这不是GIS的特点,是Javascript、Flex、Silverlight的能力,用GIS应用中的一个典型用例说明:通过不同颜色渲染出全国各省的人口数量。这是一个专题图生成的功能,过去常用的方式是由GIS Server进行处理,然后将处理结果生成一张图片,通过虚拟目录地址返回,10000个并发的时候服务器肯定死掉了,然而基于RIA+REST的应用架构,REST负责将需要的数据传回客户端,压力较大的渲染工作放到客户端进行了,有效减轻了服务器的压力,用户体验更佳,视觉效果更好。再如下面H1N1例子(在线演示),客户端要绘制上万个点,如用Soap API去动态绘制,速度会慢的难以忍受,而RIA做到了。http://www.esrichina-bj.cn/market/H1N1/
5、提高用户体验
RIA最直接的效果就是良好的用户体验,事实证明专业GIS用户更喜欢基于RIA的GIS应用,大
众GIS应用如Google Map、MapABC也都推出了各自的Flex API。