写点什么

REST“皈依者”日记

  • 2011-07-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-07-22 09:163591
用户头像

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

关注

评论

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

引迈信息低代码怎么样?靠谱吗?

优秀

低代码 低代码平台

阿里 CTO 程立:今年双 11,全面深度用云

云布道师

云计算 阿里巴巴 天猫

Linux系统保存文件命令的详细介绍

源字节1号

软件开发 前端开发 后端开发 小程序开发

python中类与对象的动态性,混入机制

乔乔

11月月更

浅谈HTTP缓存与CDN缓存的那点事

京东科技开发者

缓存 性能 Web CDN HTTP缓存

HarmonyOS 3.1版本发布,全面进入声明式开发

HarmonyOS开发者

HarmonyOS

用了8年MQ!聊聊消息队列的技术选型,哪个最香!

小小怪下士

Java RocketMQ RabbitMQ 消息队列

质量评估模型助力风险决策水平提升

百度Geek说

机器学习 企业号十月 PK 榜 智能测试 质量评估模型

解读数仓常用模糊查询的优化方法

华为云开发者联盟

数据库 后端 华为云

传统 Web 框架部署与迁移

阿里巴巴云原生

阿里云 Serverless 云原生

数据结构学习笔记(二)

lxmoe

数据结构 学习笔记 11月月更

Apache EventMesh事件驱动分布式运行时

EventMesh布道师

Serverless Faas EDA workflow eventmesh

可防离职员工冒用身份,合合信息名片全能王与钉钉用数字名片打造安全“围栏”

合合技术团队

人工智能 大数据 钉钉 合合信息 名片

详解React的Transition工作原理原理

夏天的味道123

React

数据中台选型必读(五):中台建设本质就是构建企业的公共数据层

雨果

数据中台

详细解读 React useCallback & useMemo

夏天的味道123

React

Wallys/IPQ4018/IPQ4028 2x2 2.4Ghz 2x2 5Ghz Industrial WIFI5 router/Support 11ABGN/AC

Cindy-wallys

IPQ4018 IPQ4028 2.4G&5G

Apache Pulsar 社区年度峰会 Pulsar Summit Asia 2022 即将召开

腾源会

大数据 开源

zabbix添加自定义监控项&告警(邮件)

A-刘晨阳

Linux 运维 zabbix 11月月更

ElasticSearch深度分页详解

京东科技开发者

数据库 elasticsearch 分布式搜索引擎 分布式实时搜索引擎

vue实战-深入响应式数据原理

yyds2026

Vue

vue实战-完全掌握Vue自定义指令

yyds2026

Vue

一汽集团数字化转型细节分析:明确如何转型事半功倍

雨果

数字化转型

关于软件物料清单(SBOM),你所需要了解的一切

SEAL安全

安全 软件物料清单 SBOM

技术分享| Etcd如何实现分布式负载均衡及分布式通知与协调

anyRTC开发者

分布式 etcd 通知 式负载均衡 协调

会用postman不算牛,会用Eolink才是真的牛

陈橘又青

API

Linux系统中CPU占用率较高问题排查思路与解决方法

A-刘晨阳

Linux 运维 cpu 11月月更

字节跳动基于ClickHouse优化实践之“资源隔离”

字节跳动数据平台

大数据 Clickhouse

【docker】导入镜像报错磁盘空间不足的解决方法 && 【docker】修改默认的存储路径

A-刘晨阳

Docker Linux 运维 11月月更

如何使用ModelBox快速提升AI应用性能

华为云开发者联盟

人工智能 华为云 ModelBox

vue实战中的一些小技巧

yyds2026

Vue

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