摘要: 上一篇我们已经孤立的了解了REST的架构元素,接下来我们可以使用架构视图来描述这些元素如何协作以形成一个架构。为了展示REST的设计原则,需要使用三种视图:过程视图、连接器视图、数据视图
正文:
REST架构的视图
过程视图(Process View)
过程视图的主要作用是通过展示数据在系统中的流动路径,得出组件之间的交互关系。下图提供了一个基于REST的架构的过程视图
一个用户代理正在处理三个并行的交互(a、b、c),用户代理的客户端连接器的缓存无法满足请求,因此它根据每个资源标识符的属性和客户端连接器的配置将每个请求转发到资源的来源服务器
- 请求a被发送到一个本地代理,然后代理通过DNS查找到了一个网关,该网关把这个请求发送到一个可以满足该请求的来源服务器
- 请求b被直接发送到了一个来源服务器
- 请求c被发送到了一个本地代理,它能够直接访问WAIS(一种与Web架构相分离的信息服务),并将WAIS的响应翻译为一种通用的连接器接口能够识别的格式
REST通过强制要求消息具有自描述性来支持中间组件的处理,其具体体现为:请求之间的交互是无状态的、使用标准的方法和媒体类型来表达语义和交换信息、以及响应可以明确地表名其可缓存性
连接器视图(Connector View)
连接器视图聚焦于组件之间的通信机制,客户连接器检查资源标识符,以便为每个请求选择一个合适的通信机制。例如标识符如果是一个本地资源,则连接到一个处理本地资源的代理组件
REST并不限制通信只能使用一种特殊的协议,比如上面过程视图中请求c将http转成了wais。尽管如此,与其他协议的服务的交互被限制为只能使用REST连接器的语义
数据视图(Data View)
数据视图展示了信息在组件之间流动时的应用状态。因为REST被明确定位于分布式信息系统,它将应用看作是一种信息和控制的聚合体,用户可以通过这个聚合体执行它们想要完成的任务。
REST将所有的控制状态都集中在从交互的响应中接收到的表述之中,其目的是通过使服务器无需维护当前请求之外的客户端状态从而改善服务器的可伸缩性。
REST的模型应用是一个引擎,它通过检查和选择当前表述集合中的状态跃迁选项从一个状态移动到下一个状态。
前几篇文章介绍了REST的风格推导到REST架构元素和REST架构视图。作者描述了指导REST的软件工程原则和为支持这些原则而选择的交互约束,并将它们与其他架构的约束进行了对比
下一篇将介绍REST应用于现代Web架构的设计、规范、部署过程中的经验与教训以及对REST架构的评估