读Roy Fielding的REST风格架构笔记

REST顾名思义:Representational State Transfer(表述化状态转移)。 REST两个基本概念:

  1. 资源(Resource):将信息抽象为资源,任何能够命名的信息(包括数据和功能)都能作为一个资源,一张图片,一份文档,一个服务(如上传图片),一个其他资源的集合等。 资源是到一组实体的概念上的映射,而不是在特定时刻与该映射相关联的实体的映射。例如,“最新上传的图片”是一个值经常变化的映射,但是“2011/1/9上传的图片”的映射是静态。它们是截然不同的资源,即使某一时刻它们可能会映射到相同值的集合。
  2. 表述(Representation): 一个资源当前或预期的状态,资源是一个随时间变化的函数,该函数将时间t映射到一个实体或值的集合,集合中的值可能是资源的表述。REST组件通过URI来获得资源的表述并对资源执行动作,并在组件间传递该表述。

举购物网站系统的例子,products通过加入购物车到orders,经过付款订单到purchase,然后到delivery。其中productsorders是资源,可以通过/products?color=green/orders/2007/11表示;而purchasedelivery是资源productsorders某一时间的状态。应用程序如同资源和表述组成的虚拟的状态机,通过不断的获取资源的表述来转变应用程序的状态,即所谓的表述化状态转移。

REST风格架构的约束:

  1. 客户-服务器:分离关注点,将用户接口(如用户界面)和数据存储分离,如果接口不变,组件可独立进化。
  2. 无 状态:从客户端道服务器的每个请求必须包含理解该请求所必需的所有信息,不能利用任何存储在服务器上的上下文。提高了系统的可扩展性,其优点有三:可见 性,监视系统不必为了确定一个请求的性质而去查看请求之外的多个请求;可靠性,减轻了从局部故障恢复的任务量,可以快速定位;可伸缩性,不必在多个请求之 间保存状态,允许服务器快速释放资源,并且服务器不必跨请求管理资源。缺点是,由于不能将状态保存在服务器上的共享上下文中,增加了请求中发送的重复数 据,降低网络性能,因此有了约束三。
  3. 缓存:请求响应中的数据显示或隐式的标记为可缓存的不可缓存的。缓存可以为以后相同的请求重用这个响应的数据。但是缓存管理不好,会降低可靠性,导致缓存中陈旧的数据与直接访问服务器得到的数据差别很大。
  4. 统一接口:组件之间要有统一的接口,是REST风格架构区别其他风格架构的核心特征。REST由四个接口约束定义:资源的识别,web-based系统中资源由URI表示,数据库存储系统中资源还可以是XMLJSON等;通过表述对资源执行的动作:表述中包含操作该资源的信息,如增删改查,映射到HTTP协议的GETPOSTPUTDELETE方法;自描述的消息:消息中包含如何处理该消息的信息,如哪个sevlet处理,响应中包含可不可以被缓存等信息;作为应用状态引擎的超媒体。
  5. 分层系统:通过限制组件的行为,即每个组件只能看到与其交互的紧邻层,将架构分解为若干等级层,提高各层的独立性。
  6. 按需代码:客户端知道如何访问资源,但是不知道如何处理它,向服务器发送对于如何处理资源的代码的请求,接收这些代码,然后在本地执行代码。

 

posted on 2011-01-09 23:20 *** 阅读(1429) 评论(0)  编辑  收藏


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


网站导航:
 
<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜