REST
是从几种基于网络的架构风格(列举在下面)中衍生出来的一种混合架构风格,并且添加了一些额外的约束,用来定义统一的连接器接口。
1
|
客户-服务器(CS)
|
2
|
无状态(S)
|
3
|
缓存($)
|
4
|
统一接口(U)
|
5
|
分层系统(LS)
|
6
|
按需代码(COD)
|
(一)REST中的
数据元素(Data Elements)
REST
对于信息的核心抽象是
资源
。任何能够被命名的信息都能够作为一个资源换句话说,任何可能作为一个创作者的超文本引用的目标的概念都必须符合资源的定义。
一个资源是到一组实体的概念上的映射,而不是在任何特定时刻与该映射相关联的实体本身
REST
使用一个
资源标识符
来标识组件之间交互所涉及到的特定资源
。
REST
连接器提供了访问和操作资源的值集合的一个通用的接口,而无须关心其隶属函数
是如何定义的,或者处理请求的软件是何种类型。由命名权威(
namingauthority
)来为资源分配资源标识符,使得引用资源成为可能。由同样的命名权威来负责维护映射的语义有效性(例如,确保隶属函数不会改变).
因为集中式的链接服务器无法满足
Web
的超大规模和多个组织领域的需求,所以
REST
采用了其他的方式——
依赖资源的创作者来选择最符合被标识的概念本质的资源标识符
。
REST
组件通过以下方式在一个资源上执行动作:使用一个表述来捕获资源的当前的或预期的状态、在组件之间传递该表述。
一个
表述
是一个字节序列,以及描述这些字节的表述元数据
。表述的其他常用但不够精确的名称包括:文档、文件、
HTTP
消息实体、实例或变量。
表述由数据、描述数据的元数据、以及(有时候存在的)描述元数据的元数据组成(通常用来验证消息的完整性)
。元数据以名称
-
值对的形式出现,其中的名称对应于一个定义值的结构和语义的标准。响应消息可以同时包括表述元数据和资源元数据(关于资源的信息,并不特定于所提供的表述)。
控制数据
定义了组件之间的消息的用途
,例如被请求的动作或响应的含义。它也被用来提供请求的参数,以及覆盖某些连接元素(
connecting elements
)的默认行为。例如,可以使用包括在请求或响应消息中的控制数据来修改缓存的行为。
如果一个资源在特定时刻的值集合由多个表述组成,可以使用
内容协商
来选择将包括在一个特定消息中的最佳表述
。
表述的数据格式被称为一种
媒体类型
。
一个表述能够被包括在一个消息中,并由接收者根据消息的控制数据和媒体类型的性质来做处理。
媒体类型有些是用来做自动处理的,有些是用来呈现给用户来查看的,还有少数是可以同时用于两种用途的。
组合的媒体类型能够被用来将多个表述封装在单个消息之中。
(二)REST中的
连接器(Connectors)
连接器
代表了一个组件通信的抽象接口
,通过提供清晰的关注点分离、并且隐藏资源的底层实现和通信机制,从而改善了架构的简单性
。
所有的
REST
交互都是无状态的
。也就是说,无论之前有任何其他请求,每个请求都包含了连接器理解该请求所必需的全部信息。这个约束能够实现四个功能:
1
)它使得连接器无需保存请求之间的应用状态,从而降低了物理资源的消耗并改善了可伸缩性;
2
)它允许对交互进行并行处理,处理机制无需理解交互的语义;
3
)它允许中间组件孤立地查看并理解一个请求,当需要对服务作出动态安排时,这是必需要满足的;
4
)它强制每个请求都必须包含可能会影响到一个已缓存响应的可重用性的所有信息。
主要的连接器类型是
客户端
和
服务器
。两者之间的本质区别是:客户端通过发送请求来发起通信;服务器侦听连接并对请求作出响应,以便为其服务提供访问的途径。
一个组件可能包括客户端和服务器两种连接器
。
第三种连接器类型是
缓存连接器
,可以位于客户端或服务器连接器的接口处,以便保存当前交互的可缓存的响应,这样它们就能够被以后的请求交互来重用。客户端可以使用缓存来避免重复的网络通信,服务器可以使用缓存来避免重复执行生成响应的处理,这两种情况都可以减小交互的延迟。一个缓存通常在使用它的连接器的地址空间内实现。
一个
解析器
负责将部分或完整的资源标识符翻译成创建组件间连接所需的网络地址信息。
例如,大多数
URI
都包括一个
DNS
主机名,作为一种机制来标识该资源的命名权威。为了发起一个请求,一个
Web
浏览器会从
URI
中提取出主机名,并利用
DNS
解析器来获得该权威的
Internet
协议(
IP
)地址。另一个例子是某些识别模式(例如
URN[124]
)要求一个中间组件将一个永久标识符翻译为一个更加短暂的地址,以便访问被标识的资源。使用一个或多个中间解析器(
intermediate resolvers
)能够通过增加间接层的方式来延长资源引用的寿命,尽管这样做会增加请求的延迟。
连接器类型的最后一种形式是
隧道
,
它简单地跨连接的边界对通信进行中继,例如一个防火墙或更低层的网关
。隧道作为
REST
的一部分来建模,而不是作为网络基础设施的一部分来进行抽象,唯一的原因是某些
REST
组件可能会动态地从主动的组件行为切换到一个通道。主要的例子是当响应一个
CONNECT
方法请求时,
HTTP
代理会切换到一个隧道,从而允许其客户使用一种不同的协议(例如
TLS
)来直接与不支持代理的远程服务器通信。当两端终止通信时,隧道就会消失。
(三)REST中的
组件(Components)
一个
用户代理
使用一个客户端连接器发起请求,并成为响应的最终接收者。
最常见的例子是一个
Web
浏览器,它提供了对信息服务的访问途径,并且根据应用的需要呈现服务的响应。
一个
来源服务器
使用一个服务器连接器管理被请求资源的名字空间。
来源服务器是其资源表述的权威数据来源,并且必须是任何想要修改资源的值的请求的最终接收者。每个来源服务器都为其服务提供了一个以资源的层次结构形式出现的通用的接口。资源的实现细节被隐藏在这一接口的背后。
为了支持转发,可能还要对请求和响应进行转换,中间组件同时扮演了客户端和服务器两种角色。
一个
代理组件
是由客户端选择的中间组件,用来为其他的服务、数据转换、性能增强(
performance enhancement
)、或安全保护(
security protection
)提供接口封装。一个
网关(也叫作反向代理)组件
是由网络或来源服务器强加的中间组件,用来为其他的服务、数据转换、性能增强,或安全增强(
security enforcement
)提供接口封装。
需要注意的是,代理和网关之间的区别是,何时使用代理是由客户端来决定的。
分享到:
相关推荐
**REST(Representational State Transfer,表述性状态转移)**是一种软件架构风格,广泛应用于Web服务的设计,特别是互联网应用程序。REST风格的架构强调简洁、高效和可扩展性,它基于HTTP协议,利用其固有的方法...
REST 架构风格的核心概念是资源(Resource),它让我们从资源的角度来审视互联网应用,并指导我们的设计。这是它与 ORB 和 SOA 最本质的区别。 在 REST 的世界中,没有服务的概念,资源即状态,而互联网就是一个...
在深入探讨“基于REST架构风格的Web+20实现”这一主题之前,需要先了解REST(Representational State Transfer)架构风格的基本概念以及Web 2.0的相关技术背景。 REST是一种软件架构风格,最初由Roy Fielding在他的...
REST 架构风格的设计概念和准则包括: 1. 网络上的所有事物都可以被抽象为资源(resource) 2. 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识 3. 所有的操作都是无状态的 ...
REST架构风格基于一组网络架构原则和约束,它们定义了如何使用HTTP、URI和相关的Web技术来构建可交互的服务。REST的核心在于资源的抽象,每个资源都可以通过一个唯一的URI来标识,而对资源的操作则通过标准的HTTP...
总之,《架构风格与基于网络的软件架构设计》深入浅出地讲解了网络软件架构的核心概念,特别是RESTful架构的实践应用,是每一位关注Web技术发展的IT从业者必备的读物。通过阅读本书,你可以掌握如何构建高效、灵活的...
REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...
- REST(代表性状态传输):一种软件架构风格,用于创建Web服务。 - MySQL(数据库管理系统):一个流行的开源关系型数据库管理系统。 - XML(可扩展标记语言):一种用于存储和传输数据的标记语言。 文档内容还...
首先,论文可能涉及了架构风格的概念,这是描述特定类型系统组织方式的一组通用特征。常见的架构风格包括层次型、客户-服务器、事件驱动、微服务等。每种风格都有其独特的优缺点,适用于不同的应用场景。例如,客户-...
- 架构风格理解不足:一些开发者可能片面从技术实现角度出发,没有充分理解REST架构风格的重要性。 - 描述复杂业务的困难:REST风格可能难以精确描述复杂的业务逻辑。 - 缺少对M2M的理解:开发团队可能过度陷入REST...
Fielding博士特别强调了基于网络的架构风格,如REST(Representational State Transfer),这是一种用于构建Web服务的设计风格,强调资源的表述、状态转移和统一的接口原则。 论文的其余部分深入探讨了这些架构风格...
文中还特别提到了REST架构风格,这是由Roy Thomas Fielding博士提出的一种适用于网络应用的软件架构风格。REST代表表现层状态转换(Representational State Transfer),它利用现有的HTTP协议进行通信,使用资源的...
架构风格与模式是软件设计中的一种重要概念,它们是软件系统架构的基础,提供了软件设计和开发的指导思想和方法论。架构风格是指一组原则,用于指导软件系统的设计和开发,提高软件系统的可维护性、可扩展性和可重用...
REST(Representational State Transfer,表现层状态转移)是一种用于构建Web服务的架构风格,它强调通过简单的HTTP方法(GET、POST、PUT、DELETE)来操作资源,从而实现轻量级、高效和可扩展的系统设计。...
REST(Representational State Transfer,表述性状态转移)是一种网络架构风格,由Roy Fielding博士在他的博士论文中提出。REST以资源为中心,所有网络上的实体都被视为资源,而这些资源通过统一的接口进行访问和...
资源是REST架构中的核心概念,每个资源都有一个唯一的URI。例如,用户资源可以通过`/users/{userId}`来标识,其中`{userId}`是特定用户的唯一标识符。 4. **表示(Payload)** 表示是资源的序列化形式,可以是XML...
### REST架构风格与基于网络的软件架构设计 #### 关键知识点概述 Roy Thomas Fielding博士在其博士论文中提出了一种架构风格——REST(Representational State Transfer),该论文由李锟、廖志刚、刘丹、杨光等...