您的位置:首页 > 运维架构 > 网站架构

全新Web开发风格-REST架构介绍

2010-09-21 15:59 686 查看
REST架构风格是全新的针对Web应用的开发风格,是当今世界最成功的互联网
超媒体分布式系统架构,它使得人们真正理解了Http协议
本来面貌。随着REST架构成为主流技术,一种全新的互联网
网络应用开发的思维方式开始流行。

 

  REST是什么

 

 
 REST是英文Representational State Transfer的缩写,中文翻译为“表述性状态转移”,他是由Roy Thomas
Fielding博士在他的论文 《Architectural Styles and the Design of Network-based
Software Architectures》中提出的一个术语。REST本身只是为分布式超媒体系统设计的一种架构风格,而不是标准。

 

  基于Web的架构,实际上就是各种规范的集合,这些规范共同组成了Web架构。比如Http协议
,比如客户端服务器
模式,这些都是规范。每当我们在原有规范的基础上增加新的规范,就会形成新的架构。而REST正是这样一种架构,他结合了一系列的规范,而形成了一种新的基于Web的架构风格。

 

  传统的Web应用大都是B/S架构,它包括了如下一些规范 .客户-服务器


 

  这种规范的提出,改善了用户接口跨多个平台的可移植性,并且通过简化服务器组件,改善了系统的可伸缩性。最为关键的是通过分离用户接口和数据存储
这两个关注点,使得不同用户终端享受相同数据成为了可能。

 

  无状态性

 

 
 无状态性是在客户-服务器约束的基础上添加的又一层规范。他要求通信必须在本质上是无状态的,即从客户到服务器的每个request都必须包含理解该
request所必须的所有信息。这个规范改善了系统的可见性(无状态性使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前
request,而不必了解所有的request历史),可靠性(无状态性减少了服务器从局部错误中恢复的任务量),可伸缩性(无状态性使得服务器端可以
很容易的释放资源,因为服务器端不必在多个request中保存状态)。同时,这种规范的缺点也是显而易见得,由于不能将状态数据保存在服务器上的共享上
下文中,因此增加了在一系列request中发送重复数据的开销,严重的降低了效率。

 

  缓存

 

  为了改善无状态性
带来的网络的低效性,我们填加了缓存约束。缓存约束允许隐式或显式地标记一个response中的数据,这样就赋予了客户端缓存response数据的功
能,这样就可以为以后的request共用缓存的数据,部分或全部的消除一部分交互,增加了网络的效率。但是用于客户端缓存了信息,也就同时增加了客户端
与服务器数据不一致的可能,从而降低了可靠性。

 

  B/S架构的优点是其部署非常方便,但在用户体验方面却不是很理想。为了改善这种情况,我们引入了REST. REST在原有的架构上增加了三个新规范:统一接口,分层系统和按需代码。

 

  统一接口

 

 
 REST架构风格的核心特征就是强调组件之间有一个统一的接口,这表现在REST世界里,网络上所有的事物都被抽象为资源,而REST就是通过通用的链
接器接口对资源进行操作。这样设计的好处是保证系统提供的服务都是解耦的,极大的简化了系统,从而改善了系统的交互性和可重用性。并且REST针对Web
的常见情况做了优化,使得REST接口被设计为可以高效的转移大粒度的超媒体数据,这也就导致了REST接口对其它的架构并不是最优的。

 

  分层系统

 

  分层系统规则的加入提高了各种层次之间的独立性,为整个系统的复杂性设置了边界,通过封装遗留的服务,使新的服务器免受遗留客户端的影响,这也就提高了系统的可伸缩性。

 

  按需代码

 

  REST允许对客户端功能进行扩展。比如,通过下载
并执行applet或脚本形式的代码,来扩展客户端功能。但这在改善系统可扩展性的同时,也降低了可见性。所以它只是REST的一个可选的约束。

 

  REST的设计准则

 

  REST架构是针对Web应用而设计的,其目的是为了降低开发的复杂性,提高系统的可伸缩性。REST提出了如下设计准则:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息