rest论文小记

原文:https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

5.11 从’空‘风格开始。组件之间没有明显的边界。

5.12 客户-服务器。比如web中的前端和后端,游戏的客户端和服务端。通过分离用户接口(用户端)和数据存储(服务端)这两个关注点,我们改善了用户接口跨多个平台的可移植性(比如linxu版的qq,windows版的qq以及mac版的qq);同时通过简化服务器组件,改善了系统的可伸缩性(可以通过增加服务器来提高可承载的用户量)。

5.13 无状态(客户和服务器之间的连接是无状态的,比如http协议)。这个约束实现了可见性、可靠性和可伸缩性三个架构属性,但是无状态并不是没有缺点的,无状态增加了在一系列请求中发送的重复数据(每次交互的开销,比如cookie里的东西),可能会降低网络性,正因为这个缺点,所以在REST风格中增加了缓存的考虑。像lol这种游戏,客户与服务器之间的连接是一直保持的,有状态的。万一因为网络等原因掉线,对玩家的影响是很大的,必须要有重连机制,恢复连接状态后才能继续操作。对于京东商城这种app,接口用的都是http协议,你的每一次操作都是重新建立起一个连接,成功响应后连接就会断开。如果某次操作过程中,连接突然断开,只需要再操作一次,重新发起新的连接即可。如果是某个服务器突然宕机,也几乎没有影响,因为服务器上不会保存状态。你的下一次操作请求可以由另一台服务器来处理。

5.14 缓存。添加缓存约束的好处在于,它们有可能部分或全部消除一些交互,从而通过减少一系列交互的平均延迟时间,来提高效率、可伸缩性和用户可觉察的性能。但是缓存还是有缺点的,如果缓存中陈旧的数据与将请求直接发送到服务器得到的数据差别很大,那么缓存会降低可靠性。注意这里的缓存并不是指MC,redis之类的缓存,而是在网络代理中,比如proxy服务器上的缓存机制。因为有了约束,查询,修改等操作就可以很方便的被分辨出来,从而加入一些通用的缓存以及更新缓存的处理。

5.15 统一接口。使REST架构风格区别于其他基于网络的架构风格的核心特征是,它强调组件之间要有一个统一的接口,为了获得统一的接口,需要有多个架构约束来指导组件的行为。REST由四个接口约束来定义:资源的识别(identification ofresources)、通过表述对资源执行的操作、自描述的消息(self-descriptive messages)、以及作为应用状态引擎的超媒体相关因素REST和其他概念关系。统一接口的虽然晦涩,但是它是REST风格核心特征,也是前面我们讨论通过CURD方式操作资源的一种表现,也是我们最容易接触感受到的一层,后面淘宝,微博,微信开放平台的开放接口,其实就是我们接触这个平台的统一接口,评价一个开发平台是否REST的标准,也在于这个平台的设计者对统一接口的理解。

5.16 分层系统。分成系统风格通过限制组件的行为(即,每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。通过将组件对系统的知识限制在单一层内,为整个系统的复杂性设置了边界,并且提高了底层独立性。分层系统增加了数据处理的开销和延迟,因此降低了用户可觉察的性能对于一个支持缓存约束的基于网络的系统来说,可以通过在中间层使用共享缓存所获得的好处来弥补这一缺点。正因为REST风格有这样的缺点,才会特意强调缓存的作用

5.17 按需代码。通过下载并执行applet形式或脚本形式的代码,REST允许对客户端的功能进行扩展。B/S端的强大优势一方面就在于此。浏览器在访问网站时,都是从服务器下载脚本形式的代码(html,css,js)来执行,更新服务器的代码就可以更新所有的用户客户端。对于复杂的页面,为提高访问速度,可以用异步加载某些局部组件。

REST要求
        1:客户端和服务器结构
        2:连接协议具有无状态性
        3:能够利用Cache机制增进性能
        4:层次化的系统
        5:统一接口规范分层交互
        6:随需代码 - Javascript (可选)

web应用基本上满足rest的要求,比如第1,2,3,6条。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值