50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:163528
用户头像

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

关注

评论

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

【直播回顾】OpenHarmony知识赋能第四期直播——标准系统HDF开发

OpenHarmony开发者

直播 HDF OpenHarmony

【51单片机】室友用一把王者时间,学会了去使用数码管

謓泽

3月月更

实用机器学习笔记二十五:超参数优化

打工人!

学习笔记 超参数调优 机器学习算法 3月月更

hexo+github搭建个人博客前期部署工作

静Yu

Hexo

WebRTC 简单入门

ZEGO即构

WebRTC 动手实践 音视频开发 即构科技

如何使用OKR管理团队?

优秀

被冰封的 Bug:Fishhook Crash 修复纪实

声网

Dev for Dev fishhook

java培训:SpringBoot高频面试考点分享

@零度

JAVA开发 springboot

Jaeger docker部署实操

非晓为骁

Docker Jaeger Go 语言 http client

基于WEB快速开发平台的轻量ERP

雯雯写代码

ERP 快速开发平台

ICASSP 2022 | 前沿音视频成果分享:基于可变形卷积的压缩视频质量增强网络

阿里云CloudImagine

阿里云 计算机视觉 音视频 视频编码 视频云

大数据培训:Hadoop和MPP有什么区别

@零度

hadoop MPP 大数据开发

如何进行数据挖掘?

郑州埃文科技

数据挖掘 数据库

企业知识管理的目标是什么?

小炮

云计算及国内主流云厂商概述

穿过生命散发芬芳

3月月更

如何从头到脚彻底解决一个MySQL Bug?华为云数据库高级专家带你看

华为云数据库小助手

bug GaussDB 华为云数据库 GaussDB(for MySQL)

OceanBase 社区版 运维管控平台 OCP 功能解读

OceanBase 数据库

OCP oceanbase OceanBase 开源 OceanBase 社区版

openGauss社区成立ReleaseManagement SIG

低代码实现探索(三十七)业务的流程,开发的框架

零道云-混合式低代码平台

盲盒风潮过后,中国收藏玩具市场该何去何从?

易观分析

盲盒 潮玩

中国AI的下一站:从两会高地奔涌向产业河谷

脑极体

打造优质的车联网体验,仍需注意数据安全保护

FinClip

Gitlab-ci 替代 webhook 触发Jenkins job

网易云信

gitlab

APICloud平台使用融云模块实现音视频通话实践经验总结分享

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 融云 跨端开发

JavaScript深入理解之闭包

锋享前端

移动域全链路可观测架构和关键技术

阿里巴巴终端技术

架构 App 移动端 体验优化

企业内PAAS建设的经验与教训

Crazy

中间件 PaaS 经验 云原生应用

数字化时代下,智能运维全栈监控解决方案及案例盘点

云智慧AIOps社区

运维 解决方案 场景应用 自动化运维 运维安全

Go HTTP Server 基于OpenTelemetry 使用Jaeger - 代码实操

非晓为骁

Go Docker Trace Jaeger OpenTelemetry

向工程腐化开炮 | Java代码治理

阿里巴巴终端技术

Java android JVM 代码治理

喜讯!openGauss社区入选2021年 “科创中国”榜单

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