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

REST架构风格

2016-10-12 14:21 183 查看
推导REST

web架构背后的设计基本原理,能够被描述为由一组应用架构中元素之上的约束组成的架构网格。

1.“空”风格

从架构的观点来看,空风格描述了一个组件之间没有明显边界的系统。

2.客户-服务器

客户-服务器约束背后的原则是分离关注点,对web来说,这种关注点的分离允许组件独立地进化。

3.无状态

再为客户-服务器交互添加一个约束:通信必须在本质上无状态的,这一约束反映出设计上的权衡,其缺点是:由于不能将状态数据保存在服务器上的共享上下文中,因此增加了一系列请求中发送的重复数据,可能会降低网络性。

4.缓存

为了改善网络的效率,我们添加了缓存约束,缓存约束要求一个请求的响应中的数据被隐式或显示地标记为可缓存的或不可缓存的。如果响应是可缓存的,那么客户端缓存就可以为以后的相同请求重用这个响应的数据。

5.统一接口

REST架构风格区别于其他基于网络的架构风格的核心特征是:它强调组件之间要有一个统一的接口。统一接口降低了效率,因为信息都使用标准化的形式来转移,而不能使用特定于应用的需求的形式。

为了获得统一的接口,REST由四个接口约束来定义:

(1)资源的识别

(2)通过表述对资源执行的操作

(3)自描述的消息

(4)作为应用状态引擎的媒体

6.分层系统 

通过 将组件对系统 的知识限制在单一层内,为整个系统 的复杂性设置边界,并且提高 的底层独立性。分层系统的主要缺点是:增加了数据处理的开销和延迟。

REST架构元素

REST聚焦以下几个方面:组件的角色、组件之间的交互之上的约束、组件对重要数据元素的解释。

1.数据元素

REST组件通过对资源表述进行通信,这个表述由呈现引擎中的指令组成。



(1)资源和资源标识符

REST对于信息的核心抽象是资源,任何能够被命名的信息都能够作为一个资源。REST使用一个资源标识符来标识组件之间交互所涉及的特定资源。

(2)表述

REST组件通过 以下方式在一个资源上执行动作:使用一个表述来捕获资源的当前的或预期的状态、在组件之间传递该表述。表述由数据、描述数据的元数据、以及(有时候存在的)描述元数据的元数据组成。

一个表述能够被包括在一个消息中,并由接收者根据消息的控制数据和媒体类型的性质来做处理。
(3)连接器(Connectors)
连接器代表了一个组件通信的抽象接口,所有的REST交互都是无状态的,也就是说,无论之前有任何其他请求,每个请求都包含了连接器理解该请求所必需的全部信息。连接器接口与过程调用有些类似,但是参数和结果的传递方式上有着重要的区别,其传入参数由请求的控制数据、一个表示请求的目标的资源标识符、以及一个可选的表述组成。其传出参数由响应的控制数据、可选的资源元数据、以及一个可选的表述组成。但是传入参数和传出参数都可以作为数据流来传递,从而避免了对于大量数据转移进行批量处理而产生的延迟。
(4)组件
REST组件根据它们在整个的应用动作中的角色来进行分类。
3.架构的视图
(1)过程视图
架构的过程视图的主要作用是,通过展示数据在系统中的流动路径,得出组件之间的交互关系。
(2)连接器视图
架构的连接器视图集中于组件之间的通信机制。
(3)数据视图
一个架构的数据视图展示 了信息在组件之间流动时的应用状态。
REST将所有的控制状态都浓缩在从交互的响应中接收到的表述中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: