RESTful服务描述语言

 
   | |

导读:REST实质上是一门Web服务架构的哲学,它并不是一个像SOAP的标准。由于SOAP相关标准变得越来越复杂,开发人员开始关注REST,导致越来越多的服务都被称为RESTful。

关键词:REST Web服务架构 SOAP 标准 RESTful

 
正在加载数据...

【TechTarget中国原创】REST实质上是一门Web服务架构的哲学,它并不是一个像SOAP的标准。它以严谨精确的诠释HTTP1.1规则中规定的不同操作的作用以及GET、PUT、POST、DELETE和一些其它特征为重点。两年前我在这篇文章中便讨论过REST的特点,自从那时起我们已经看到持续增长的支持REST方式的服务,如Amazon的S3服务和google的Data APIs。

  由于SOAP相关标准变得越来越复杂,开发人员开始关注REST,这种对REST的热衷,导致越来越多的服务都被称为RESTful,而事实上它们只是另一种形式的RPC。例如严格的说,GET操作只表示资源的获取而不是更改……

【TechTarget中国原创】REST实质上是一门Web服务架构的哲学,它并不是一个像SOAP的标准。它以严谨精确的诠释HTTP1.1规则中规定的不同操作的作用以及GET、PUT、POST、DELETE和一些其它特征为重点。两年前我在这篇文章中便讨论过REST的特点,自从那时起我们已经看到持续增长的支持REST方式的服务,如Amazon的S3服务和google的Data APIs。

  由于SOAP相关标准变得越来越复杂,开发人员开始关注REST,这种对REST的热衷,导致越来越多的服务都被称为RESTful,而事实上它们只是另一种形式的RPC。例如严格的说,GET操作只表示资源的获取而不是更改。ACTIVEMQ开源信息服务器可以通过GET操作读取消息,但若在读取之后删除消息,则需要RESTful接口。你可以在开发者的BLOG和论坛中查找到很多关于一个特殊的服务是否是REST的论证。简单来说,我始终遵守Fielding的最初的构想与HTTP1.1的规范。

  RESTful体系结构概要

  下述表格,在Fielding的学术论文中表5.1中,结合最新web例子给出了RESTful架构中的各种不同的数据元素。HTTP1.1协议提供了在Web服务中可以潜在使用的很多特性。例如,那些能够在一个请求中读取和使用if-modified-since标头的服务能够避免重复输出不变资源。有些返回某个图片的服务应该能够解释接受HTTP标头返回给客户端的首选资源类型。这似乎有理由期待对RESTful web服务的任何正式的描述语言应该尽可能多的覆盖这些“数据元素”。

         

  怎样去描述一个REST服务

  目前,大的服务如Yahoo、Amazon、Google和Flickr主要通过提供文字描述及代码例子让潜在的开发人员了解他们的HTTP服务接口,这足能证明虽然能够创建许多代码例子,但还是缺少专业的氛围让我们留意到正式的规范,这阻止了我们使用自动化测试工具和正式的SOA相关定义。
 
  Web服务描述语言—WSDL

  WSDL 1.0版本最初被发布为一个W3C的“注释”而不是标准,(1.1版本在2001年发布这个时候RESTful风格的Web Service还没有流行起来),在很多工具箱中被使用进行SOAP服务和客户端开发,但仍然没有提供REST风格服务的描述。

  WSDL 2.0版在2007年6月被作为一个W3C的推荐标准发布,在这个版本中试图包容和适应REST,但还是继续突出强调SOAP。这个发布版本中甚至都没有提供一个REST风格服务的例子,但幸运的是我在Wikipedia上找到一篇使用WSDL描述RESTful风格接口的例子,在这篇文章中把许多REST风格的Http请求映射到SOAP上,但是没有预先定义好在返回数据时怎样选择资源类型。我猜测这种方式只能用在你不得不同时使用SOAP和REST来发布同一个服务的时候。REST开发社区对WSDL 2.0版本的最初反应并不是很热情。
 
  Web应用程序描述语言—WADL

  WADL试图把基于HTTP的服务定义为人机可读,并且不再像他需要的那么复杂的XML格式描述语言。今年二月刚发布了最新的WADL规范草案的修订版,其中包含了几个重要的变化。很明显,关于一些有用的特性,基于Jersey(JAX-RS的参考实现)的符合REST(REpresentational State Transfer:表述性状态转移)的服务工具包的经验正在提供反馈信息。因此这并不是一个实体意义上的标准集。WADL规范主要立足于怎样书写一个符合REST的Web服务的以下特性:

  ·提供的资源以及如何为每一个资源构造URL
  ·支持的HTTP方法(GET、POST等等)
  ·请求中包含的参数和他们的基于XML Schema的类型
  ·响应的表示(媒体类型)
  ·简单的文本文件或者是XHTML(eXtension HTML)标记文件格式的附件

  总结

  WSDL和WADL都不会涉及到Fielding博士在他论文中所述的符合REST服务的方方面面。REST能够提供的一些很重要的特性根本就没有提到。许多人正在兴致勃勃地探索不需要拘泥于一种标准描述语言符合REST的服务。我个人认为,尽管WSDL能够在一些简化的应用场景下工作,但是,把需要描述所有REST样式操作的参数填充到2.0版本的WSDL里也许是不可能的。WADL是一个很好的语言,但是它的详细说明和工具还没有被开发出来。

 
查看全文
 
 
 
 
 

REST

 
JSR311组的工作被反映到2008年10月的Restlet 1.1发布版中,与JAX-RS标准版的最终发布版相重合。主要的改变是根据需求向Restlet类中……
 
很少有论文像Roy Fielding九年前的《架构风格和基于网络的软件架构设计》这么有影响力。在第五章中他提出了了网络架构的具象状态传输……
 
iPhone的应用程序商店的成功,已经由于引人注目的电信业把应用程序开发摆上台,而且世界各地的电信业正在利用SOA迎头赶上。增加了组合……
 
是否存在某些经验法则,让人们在网络互操作性和进程互操作性二者之间做出选择?换句话说,如果我遇到吞吐量问题,是不是就不该选择Web服务了?
 
SOA这个阶段是相当重要的发展。那时我身处两个“软件革命”之中。其中之一是面向对象革命。从smalltalk中我们知道了面向对象……
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录