Rest Notes-REST架构的视图

摘要: 上一篇我们已经孤立的了解了REST的架构元素,接下来我们可以使用架构视图来描述这些元素如何协作以形成一个架构。为了展示REST的设计原则,需要使用三种视图:过程视图、连接器视图、数据视图

正文:

REST架构的视图

过程视图(Process View)

过程视图的主要作用是通过展示数据在系统中的流动路径,得出组件之间的交互关系。下图提供了一个基于REST的架构的过程视图

一个用户代理正在处理三个并行的交互(a、b、c),用户代理的客户端连接器的缓存无法满足请求,因此它根据每个资源标识符的属性和客户端连接器的配置将每个请求转发到资源的来源服务器

  1. 请求a被发送到一个本地代理,然后代理通过DNS查找到了一个网关,该网关把这个请求发送到一个可以满足该请求的来源服务器
  2. 请求b被直接发送到了一个来源服务器
  3. 请求c被发送到了一个本地代理,它能够直接访问WAIS(一种与Web架构相分离的信息服务),并将WAIS的响应翻译为一种通用的连接器接口能够识别的格式

REST通过强制要求消息具有自描述性来支持中间组件的处理,其具体体现为:请求之间的交互是无状态的、使用标准的方法和媒体类型来表达语义和交换信息、以及响应可以明确地表名其可缓存性

连接器视图(Connector View)

连接器视图聚焦于组件之间的通信机制,客户连接器检查资源标识符,以便为每个请求选择一个合适的通信机制。例如标识符如果是一个本地资源,则连接到一个处理本地资源的代理组件

REST并不限制通信只能使用一种特殊的协议,比如上面过程视图中请求c将http转成了wais。尽管如此,与其他协议的服务的交互被限制为只能使用REST连接器的语义

数据视图(Data View)

数据视图展示了信息在组件之间流动时的应用状态。因为REST被明确定位于分布式信息系统,它将应用看作是一种信息和控制的聚合体,用户可以通过这个聚合体执行它们想要完成的任务。

REST将所有的控制状态都集中在从交互的响应中接收到的表述之中,其目的是通过使服务器无需维护当前请求之外的客户端状态从而改善服务器的可伸缩性。

REST的模型应用是一个引擎,它通过检查和选择当前表述集合中的状态跃迁选项从一个状态移动到下一个状态。

前几篇文章介绍了REST的风格推导到REST架构元素和REST架构视图。作者描述了指导REST的软件工程原则和为支持这些原则而选择的交互约束,并将它们与其他架构的约束进行了对比 下一篇将介绍REST应用于现代Web架构的设计、规范、部署过程中的经验与教训以及对REST架构的评估

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏EAWorld

Micronaut:面向未来的微服务和云原生应用框架

原题:MICRONAUT: A JAVA FRAMEWORK FOR THE FUTURE, NOW

3752
来自专栏JMCui

Ant + Jenkies +Tomcat 自动构建部署Web项目

前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + T...

3999
来自专栏美团技术团队

Java NIO浅析

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到...

4059
来自专栏全华班

springcloud学习手册-Eureka(第一节)

导读 |Springcloud Eureka 服务治理 一、服务治理:Springcloud Eureka Eureka是springcloud Netfli...

4056
来自专栏耕耘实录

解决一个MySQL登录报ERROR 2002 (HY000)错的问题

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

1293
来自专栏云计算教程系列

如何在CentOS 7上设置Jenkins以进行持续开发集成

合并代码、协调发布、确定构建状态、维护更新。如果你足够了解这些过程的挫败感,这些话本身就会让人头疼,你可能想看看Jenkins CI。

1971
来自专栏小巫技术博客

Bugly使用篇之Java错误堆栈还原

1353
来自专栏北京马哥教育

Pipenv:官方推荐的python包管理工具

Pipenv - 官方推荐的的python包管理工具。 Pipenv是一款旨在将所有包管理工具(如bundler, composer, npm, cargo...

4057
来自专栏沃趣科技

Pod挂载Volume失败问题分析

Kubernetes环境偶尔出现Statefulset中的Pod被删除,新启动的Pod(还是调度到原有节点)挂载volume失败的问题,如下图,经过一番定位分析...

2593
来自专栏纯洁的微笑

Eureka 虽然闭源了,但注册中心还有更多选择:Consul 使用详解

在上个月我们知道 Eureka 2.0 闭源了,但其实对国内的用户影响甚小,一方面国内大都使用的是 Eureka 1.X 系列,另一方面

5933

扫码关注云+社区

领取腾讯云代金券