3.3. Web服务的接口类型

发布日期 : 2025-10-12 13:01:50 UTC      

访问量: 936 次浏览

本节介绍Web服务的两种主要接口类型,即SOAP风格的Web服务和REST风格的Web服务, 它们也被称为SOAP API和REST API。 需要强调的是,Web服务并不局限于这两种类型,那些通过 HTTP 传送格式化数据的Web程序, 都应该被认为是Web服务。

3.3.1. SOAP风格的Web服务 #

SOAP的原名是简单对象访问协议(Simple Object Access Protocol),它使用一种封装过的XML进行信息交换。 2003年,它被万维网联盟采用,成为一种推荐标准。 后来大家认为“简单对象访问协议”这个全名容易让人误解,因此,万维网联盟在2007年放弃了这个全名, 现在人们只是沿用SOAP这个简称而已。 SOAP风格的Web服务采用 HTTP Post和SOAP封装的XML在客户端和服务器之间发送请求和传递结果(图3.7)。

基于SOAP的Web服务把XML信息体封装在另外一个XML信封中。 这种“XML套XML”的格式不便于人们手工创建SOAP请求和解析SOAP结果, 因此SOAP服务的调用比较困难。 当然,有一些工具可简化SOAP服务的调用。 基于SOAP 的 Web 服务一般具有 WSDL( Web Service Description Language), 即网络服务描述语言。 它以XML的格式来描述一个Web服务所提供的具体编程接口,便于开发人员理解和使用这个Web服务。 例如,ArcGIS Server所发布的

基于SOAP的Web服务依靠 HTTP  Post和SOAP封装的XML在客户端和服务器之间发送请求和传递结果

Fig. 3.6 基于SOAP的Web服务依靠 HTTP Post和SOAP封装的XML在客户端和服务器之间发送请求和传递结果 #

ArcGIS Server发布的Web服务支持SOAP和REST两种接口。 左上图显示的是一个ArcGIS Server地图服务的Web服务描述语言, 右下图显示;的是微软Visual Studio根据WSDL来生成本地API函数

Fig. 3.7 ArcGIS Server发布的Web服务支持SOAP和REST两种接口。 左上图显示的是一个ArcGIS Server地图服务的Web服务描述语言, 右下图显示;的是微软Visual Studio根据WSDL来生成本地API函数 #

Web服务就具有SOAP风格的接口及其WSDL(图3. 8),一些客户端如ArcMap 和ArcGIS Explorer Desktop 就通过 SOAP 与 ArcGIS Server 通信。

3.3.2. REST风格的Web服务 #

REST(representational state transfer;表述性状态转移或表象状态转移) 是RoyFielding于2000年在其博士毕业论文中所提出的一种架构风格。 RoyFielding曾经参与过 HTTP 规范的制定,他认为SOAP没有充分利用 HTTP 的优势, 他提出的这种REST风格的构架可以充分发挥 HTTP 的优点,降低开发的复杂性, 提高系统的扩展性(Richardsonand Ruby,2007)。

REST刚被提出时没有获得过多关注,其概念和准则比较抽象,不同人的解释也不尽相同,在现实应用中并没有被完全遵守或实现。 REST风格的Web服务通过 HTTP 发送数据,所发送的信息不采用SOAP封装。 其最常见的实现方式是把请求的参数放在URL中,通过URL发送请求参数。 REST风格的Web服务经常以JS0N和不经SOAP封装的XML向客户端返回结果。 图3.9显示的用REST的形式来实现图3.8中相同的功能,可以看出, REST接口比SOAP接口更加简洁。

在最常见的REST实现方式中,所有的请求都是URL, 请求中参数的名称和值放在URL中,而不再采用SOAP封装的XMI。

Fig. 3.8 在最常见的REST实现方式中,所有的请求都是URL, 请求中参数的名称和值放在URL中,而不再采用SOAP封装的XMI。 #

在REST风格的Web服务中,每•个资源都对应一个URI(统一资源标识 符), 在不严格的情况下,URI可以理解为URL。 这些URL往往构成一个层次 结构。 例如,一个ArcGIS Server上发布有很多服务,它们所对应的URI是

http://server.arcgisonline.com/ArcGIS/test/Services

其中一个名叫“ESRI_StreetMap_World_2D”的地图服务所对应的URL就是 在上面这个URL的后面添加服务名和服务类别(MapServer),即

http://feerver.arcgisonline.com/ArcGIS/rest/Services/ESRI_StreetMap_World_2D/MapServer

这个地图服务中的第一个数据层所对应的URL就是在上面这个URL的后 面添加0(第一个图层从零开始计数)

可以看出,这种目录式结构的URL层次直观、可预测且易于理解,不需要过多的文档, 开发人员可以很容易地构建这些URL,指向他们所需要的Web资源。

REST服务中Web资源支持特定的操作,例如,一个地图服务可以进行制图和查询操作,地图服务中单个数据层可以进行查询操作 这些操作的结果可以JSON等格式返回给客户端。 例如,通过REST接口请求某ArcGIS Server地图服务制作一幅美国地图, 要求返回800像素x 500像素的JPEG图像,URL请求大致是

http://server.mycompany.com/ArcGIS/rest/services/QSMap/MapServer/export?
bbox=-185.33,15.20,-9 .53,74.08&size=800,500&format=jpg&dpi=96&f=image

利用REST来查询一个ArcGIS Server地图服务中加利福尼亚州每个县的中等家庭收入, 要求返回JS0N格式,URL请求大致是

http://server.mycoinpany.com/ArcGIS/rest/services/USMap/MapServ-er/0/query?
where=STATE_NAME ='Calif ornia'&outFields =MEDHINC_CY &f =pjson

可以看出,REST中基本上所有的请求都是一个URL,比较容易理解。 你可以采用很多种编程语言, 如.NET、Java JavaScript和Flex等来产生这个URL字符串并发送这个URL请求。 你甚至可以不用编程,直接把这个URL放到你的Web浏览器中就可以看到你要的地图等结果,因此, REST被认为是“Web的命令行”。

3.3.3. SOAP 和 REST 的比较 #

表3.1比较了 SOAP和REST类型的Web服务。 SOAP类型的Web服务产生早,相关技术比较成熟,使用比较普遍,其接口定义明确而严谨,开发环境对其支持程度高。 但它过于复杂,编程工作量和难度较大;没有充分利用 HTTP 的优势,传输效率低; SOAP的封装使传递的XML复杂和庞大,这样往往会降低信息传递和解析的效率乃至整个系统的性能。 鉴于这些认识,人们逐渐转向了REST风格的Web服务,它简单而高效(Cappelaereet al., 2007)。 在很多情况下,REST的简洁和高效胜过了采用SOAP所带来的严谨(Fu et al. ,2008)。

表3.1比较SOAP类型的Web服务和REST类型的Web服务

SOAP类型的Web服务

REST类型的Web服务

传输方式

HTTP POST

主要是HTTP GET;虽然定义了PUT、P0ST和DELETE的语义和用法,但实际上很少使用

请求参数

放在XML中并以SOAP封装

参数(键-值对)一般放在URL中

响应结果

放在XML中并以SOAP封装

参数(键-值对)一般放在URL中

响应结果

放在XML中并以SOAP封装

比较多样,JSON、XML(非SOAP封装的)和二进制文件流等

优点

产生早、成熟,接口严谨,功能强大

轻型、简易、效率高,能充分利用Web的缓存等优势,使用逐渐广泛

缺点

重型、复杂、人门门槛高;SOAP封装的XML信息传输效率和解析效率低;不能充分利用HTTP的优势

不够严谨、略显随意

2002年,亚马逊公司发布了其电子商务交易的Web服务,同时提供了SOAP和REST两种Web服务接口供用户选择。 几年之后,这些服务吸引了大量的使用者,据统计,亚马逊服务器所收到的请求中80%是基于REST的, 而只有 20% 是基于 SOAP 的(Greenfield and Doman,2004)。 REST 比 SOAP 的优越性体现在以下几个方面:

  • 对服务提供商来说,可以降低创建服务的成本以及服务托管的经费;

  • 对基于Web服务做应用开发的开发者来说,可以减少人门难度、缩短学习时间、加快开发速度、降低开发费用;

  • 对管理者来说,REST提供了较好的系统架构,能获得较高的系统响应速度、较高的可靠性和可扩展性。

ArcGISServer的Web服务同时具有SOAP和REST两种接口。

Fig. 3.9 ArcGISServer的Web服务同时具有SOAP和REST两种接口。 #

当你在使用ArcMap和ArcGIS Explorer桌面版时, 你在使用SOAP接口ArcGIS Server提供 SOAP 和 REST 两种 Web 服务接口(图 3. 10), ArcGISDesktop 和 ArcGIS Explorer Desktop 通过 SOAP 接 口调用 ArcGIS Sever的服务, 而 ArcGIS APIs for JavaScript、Flex、Silverlight 和 ArcGIS提供的智能手机 API, 则 通过REST接口调用ArcGIS Sever的服务。

《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。