AMEPRE 2011-02-21
http://warrenwyf.spaces.live.com/blog/cns!C71882196B68EEE5!626.entry
ArcGIS在RIA领域目前有Flex和Silverlight两种API,这两种API的工作基础都是ArcGISServer的REST接口(RESTSDK)。因此,下面我们对REST和ArcGISServer的REST接口做些介绍。
一REST的概念
REST(RepresentationalStateTransfer)是RoyFielding博士在2000年他的博士论文中提出来的一种软件架构风格。REST本身并不涉及任何新的技术,它基于HTTP协议,比起SOAP和XML-RPC来说它更加地简洁、高效,越来越多的大型网站正在使用REST风格来设计和实现。
REST最突出的特点就是用URI来描述互联网上所有的资源,RoyFielding博士通过观察互联网的运作方式对其进行了抽象,他认为:设计良好的网络应用表现为一系列的虚拟“网页”,或者说这些虚拟网页就是资源状态的表现(Representational);用户选择这些链接导致下一个虚拟的“网页”传输到用户端展现给使用的人,而这正代表了资源状态的转变(StateTransfer)。
REST主要有以下的特点:
l资源通过URI来指定和操作
l对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法
l连接是无状态性的
l能够利用Cache机制来提高性能
二通过REST的接口使用ArcGIS功能
ArcGISServer原生地支持REST,也就是说在安装完ArcGISServer后REST接口已经存在。
使用REST接口最重要的就是REST服务目录,它是将ArcGISServer提供的REST资源通过HTML表现出来的URL。Java版本的在浏览器中访问http://<host>:8399/argis/rest;.Net版本访问http://<host>/arcgis/rest就可以看到当前所有的服务及其这些服务超链接到的资源和操作。
图1ArcGISServerREST服务目录
在这里顺便提一下使用REST接口的一个特别需要注意的地方,或许你有时新发布了一个服务,然后随即进入REST服务目录查看,但是却看不到这个服务。这是由于REST的缓存机制造成的,你需要去清空一下旧的缓存,方法就是进入REST管理界面http://<host>[:8399]/arcgis/rest/admin,然后使用ArcGISServer管理员帐号登录:
图2ArcGISServerREST管理界面登录
登录后,在“ClearCacheOptions”链接中可以对旧的REST缓存进行清除:
图3清除ArcGISServerREST缓存
下面让我们看一下我在ArcGISServerforJava服务器的“AgsSample”目录下发布的一个名为“World”的世界地图服务,在REST服务目录中,通过链接最终进入这个服务,这个链接应该是类似这样的格式(注意URL中的“rest”):http://localhost:8399/arcgis/rest/services/AgsSample/World/MapServer。下面我们可以看到关于这个服务的信息和相关的操作:
图4ArcGISServer地图服务的REST信息
下面就让我们点击“ExportMap”链接去使用地图服务的“export”操作。你会发现,这个操作的URL是这样的:http://localhost:8399/arcgis/rest/services/AgsSample/World/MapServer/export?bbox=-198.000000454545,-99.0000004545455,198.000009545455,99.0000095454545。在浏览器中访问这个URL的结果如下:
图5ArcGISServer地图服务REST接口中的export操作
从这里你也可以总结出来:在ArcGISServerREST接口中,请求服务的URL一般应该是这样的:http://<host>[:<port>]/arcgis/rest/services/<服务>/<服务类型>/<操作>?<参数>。关于REST接口支持的资源类型和具体操作参数,你可以查阅ArcGISServer的RESTSDK文档