Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

REST“皈依者”日记

  • 2011 年 7 月 22 日
  • 本文字数:1369 字

    阅读完需:约 4 分钟

就在每个人都认为 REST 相关的论战应该停息的时候,新的一轮 REST 文章浪潮却紧跟而上。正如 Mark Little看到的

公平地说,只要提到 REST,就会引发争论……

延续这一趋势,Ronald Schmelzer 发表的新作中谈到为什么以及如何从 Web Service 转向 REST。

据 Schmelzer,也即 ZapThink 认为:

REST 是一种分布式软件架构风格,它可以替代人们普遍接受的基于 XML 的 Web Service 实现系统间的整合……当我需要实现一个服务,当然在此之前我已经分析过该服务的必要性了,我会面临两种选择:Web Service 或 REST 风格的服务。从下列理由可以看出,而我而言,REST 明显胜出。

这段话本身就很有意思,因为它与 Dhananjay Nene 先前提出的观点是直接对立的:

面向服务既不是 REST 的核心,也不是 REST 的目标。REST 不是面向服务的,面向服务与 REST 也不相干……REST 并不想变成面向服务。这是因为它不把流程当作任务的序列来执行。它把流程看作一组不断修改的资源序列。换言之,它将流程看成一组角色,它们之间不断地交换资源(或文档),并且基于接收的资源来执行活动。

因此,Schmelzer 所谈论的似乎不是 REST,而是人们通常所说的 RESTful Web Service,这是一种使用 REST 技术构建 SOA 的方法。尽管通常称之为 REST,但这种方法与本真的 REST 没有关系,而且它类似于 POX(plain old XML over HTTP),不过与 POX 不同的是,它不仅支持 XML,还支持其他数据类型,比如 JSON(JavaScript Object Notation)、ATOM、二进制数据块。而且,它不像 POX 那样通常只基于 GET 和 PUT,它基于更多的 HTTP 方法。

Schmelzer 继续谈到:

……选择 REST 的原因有很多,但是最主要的原因是简单……REST 比 Web Service 更易于使用和理解。开发 REST 更方便、更快捷……而且,这也是为什么大多数最流行的 Web API 基于 REST 开发的原因……不过,除了简单外,我还很喜欢 REST 方法的优雅。基本操作和 Web 的扩展性是 REST 方法的底层基础。HTTP 操作是标准的、广泛接受的、便于理解的、在操作上一致的……

以上这些是任何一篇 REST 文章中都包含的 REST 的经典优点,但是对于 ZapThink 这么知名的分析公司来说,人们总是希望能看到更多细节。

回到架构问题上,Schmelzer 继续写到:

因此,如何将 SOA 的基本信条与 REST 实现方法结合起来?……REST 是一种架构风格,不是一种实现。而且,Web 和 HTTP 协议正好就是基于这种协议而设计的。

不幸的是,直到文章末尾 Schmelzer 也没有回答这个问题。它继而转向讨论 XMPP 协议的使用,但却没有解释两种架构风格(ROA 和 SOA)是怎么结合的。

Schmelzer 在文章的结尾说:

我不认为 REST 或 Web Service 是可以当作宗教般信仰的对象,以至于对它至死不变。话虽如此,在过去十几年中,垄断供应商、开发者和企业架构师们一直强调,正确实施 SOA 必须使用 Web Service……实施 SOA 无需 Web Service 就能做得很好。SOA 相关的讨论是架构层面的讨论——过去十年中我们谈论的所有东西对于 REST 或 Web Service 是同等适用的,不论它们基于哪种协议、基础设施或数据格式。优秀的企业架构师在架构这一抽象层次上工作,而将实现细节留给那些关心如何将 SOA 原则应用于实践的人们。

所以,REST 优于 Web 服务的讨论仍然在继续。那么,是否应该将本真的 REST 作为实现 SOA 的基础?仍然缺乏依据。


查看英文原文: The Diary of a REST “Convert”

2011 年 7 月 22 日 09:162717
用户头像

发布了 184 篇内容, 共 70.0 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

深入理解Deno是如何借助PowerShell进行安装脚本

梁龙先森

大前端 deno shell脚本编写 PowerShell 28天写作

立足智能化发展,风电能源产业互联网平台加快建设

一只数据鲸鱼

物联网 数据可视化 3D可视化 能源管理 风力发电

你真的懂 MP4 格式吗?

阿里云视频云

音视频 视频

细节完美炸裂!GtiHub上点赞已破百万的并发编程四套全彩手册

Java架构追梦

Java 阿里巴巴 架构 面试 并发

MT马特量化机器人软件开发|MT马特量化机器人APP系统开发

系统开发

狂补计算机基础知识,让我上了瘾

沉默王二

计算机基础 计算机

安卓软件开发文献!阿里P8架构师的Android大厂面试题总结,建议收藏

欢喜学安卓

android 程序员 面试 移动开发

新一代信息技术赋能山东政务!区块链政务平台解决方案

源中瑞-龙先生

C语言重要的知识点

c 考核 重要知识 简单清楚 好看

Kafka 是怎么存储的?为什么速度那么快?

码农架构

Java kafka 架构

大数据时代

Mr.cool

API策略量化机器人系统开发|API策略量化机器人APP软件开发

系统开发

Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

Apache Flink

flink

园区网为主的 DNS 架构设计

冯骐

程序员 运维 监控 网络 DNS

新时代计算机技术

一周信创舆情观察(2.8~2.21)

统小信uos

网络编程入门从未如此简单(二):假如你来设计TCP协议,会怎么做?

JackJiang

TCP 网络编程

iOS开发前景

ios

Open-Falcon 中的交换机监控

冯骐

运维 监控 网络 交换机 Go 语言

【LeetCode】翻转图像Java题解

HQ数字卡

算法 LeetCode 28天写作 2月春节不断更

架构设计篇之微服务实战笔记(五)

小诚信驿站

架构师 刘晓成 小诚信驿站 成长笔记 28天写作

MySQL索引原理,一篇从头到尾讲清楚

数据库 架构

Serverless 如何在阿里巴巴实现规模化落地?

Serverless Devs

阿里云 Serverless 云原生 大前端

华为大神珍藏版:SpringBoot全优笔记,面面俱到太全了

互联网架构师小马

Java 架构 微服务 Spring Boot Spring Boot 2

为什么挤破头进大厂,大厂如何设置薪资职级体系?

不脱发的程序猿

HR 校园招聘 28天写作 二月春节不断更 互联网行业薪资

2021年,是时候把技术债务管理提上日程了

禅道项目管理

效率 产品 创新 技术债

使用PG_STAT_REPLICATION监视复制

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

中小公司开展NPS的好处

资深大牛带你了解源码!分析Android未来几年的发展前景,快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

第五周作业-流程图及时序图

Au revoir

一个员工的离职成本,很恐怖!

不脱发的程序猿

职场 HR 28天写作 二月春节不断更 员工离职

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

REST“皈依者”日记_SOA_Boris Lublinsky_InfoQ精选文章