JimmyJin
走在架构师的大道上,学习的乐趣就在于将知识应用于具体实践中,在实战中实现知识的价值。
posts - 4,comments - 0,trackbacks - 0

表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAPXML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。
 三种主流的Web服务实现方案:

1,表征状态转移(英文:Representational State Transfer,简称REST),
2,简单对象访问协议SOAP,全写为Simple Object Access Protocol)是一种标准化的通讯规范,主要用于Web服务(web service)中。
3,XML-RPC是一个远程过程调用远端程序呼叫)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制

。后来在新的功能不断被引入下,这个标准慢慢演变成为今日的SOAP协定。
何为REST,
REST 从资源的角度来观察整个网络,认为分布在网络各处的资源由URI确定,而客户端的应用通过URI来获取资源的Representational(有的翻译成表征或具象),获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移(Representational State Transfer)。 

 

REST是设计风格而不是标准。

REST
原则(The REST architectural style constrains)

Ø         统一接口(unifrom interface

Ø         所有的事物都是资源且通过URI来使用资源

(data and functionality are considered resources,and these resources are accessed using URIs,typically links on the web)

Ø         客户端和服务器结构

Ø         使用无状态的通信协议如HTTP

(constrains an architecture to a client-server architecture ,and is designed to use a stateless communication protocol ,typically HTTP)

Ø         对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GETPOSTPUTDELETE方法。

Ø         资源的多重表现形式,可以是XML或者HTML当然也可以是任何其他的格式。
通过操作资源的表现形式来操作资源。

Ø         能够利用Cache机制增进性能

Ø         层次化的系统

Ø         随需代码 - Javascript (可选)

RESTful Web 服务
符合以上REST原则的Web 服务就是一个RESTful Web 服务(也称为 RESTful Web API
 
RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:

  • URI,比如:http://example.com/resources/
  • Web服务接受与返回的互联网媒体类型,比如:JSONXMLYAML 等。
  • Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

构建 RESTful 应用程序的最困难的部分在于确定要公开哪些资源。解决了这个问题之后,再使用开源 Restlet 框架构建 RESTful Web 服务就是小菜一碟了。

该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。
HTTP 请求方法在RESTful Web 服务中的典型应用[1]
资源 GET PUT POST DELETE
一组资源的URI,比如http://example.com/resources/ 列出 URI,以及该资源组中每个资源的详细信息(后者可选)。 使用给定的一组资源替换当前整组资源。 在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。 删除 整组资源。
单个资源的URI,比如http://example.com/resources/142 获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) 替换/创建 指定的资源。并将其追加到相应的资源组中。 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 删除 指定的元素。

PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。

不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准[2]。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传(传参形式),这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。)

 HTTP不是一种传输协议(transport protocol),而是一种应用协议(application protocol)。它采用TCP作为下层传输(underlying transport),但它拥有自己的语义(否则它就没什么用处了)。仅将HTTP作为传输,是不恰当的。
URIs:(Uniform Resource Id entifiers


个人总结:

1RESTROA的,跟SOAP WEB服务架构不同。
REST
架构是以资源为中心的,它推崇发挥HTTP协议至极致而不是仅将HTTP作为传输协议来用(如像我过去的WEB服务架构中只用HTTPPOSTGET方法或在SOAP仅用了HTTPPOST方法来传递数据)
REST
充分利用HTTPGETPOSTPUTDelete方法来实现对资源的操作,利用HTTPCache机制来轻松实现了REST的缓存 
2
REST用到WADLSOAP用到了WSDLWADL是以资源为中心的,WSDL是以操作(接口)为中心
3
,资源间的互动是通过链接(link)来实现的
4
,其实REST并不擅长于面向事务的应用,擅长于在面向资源的应用。
5
REST中的WADL仅支持HTTP协议,SOAP支持HTTPFTPSMTP,MQ


 

posted on 2012-05-21 20:45 jimmy2009 阅读(149) 评论(0)  编辑  收藏 所属分类: 分析设计

只有注册用户登录后才能发表评论。


网站导航: