HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

REST 对云的实现真那么重要吗?

  • 2011-01-31
  • 本文字数:1435 字

    阅读完需:约 5 分钟

这些年我们听到了非常多 REST 为 web 开发带来的好处,特别是在 Web 服务环境和最近的 SOA 相关应用中。因此,随着云应用的增长,即使是在早期采用阶段,看到各种实现采用 REST 技术是毫不奇怪的。

早在 2009 年, William Vambenepe 就考虑到了 REST 在云应用中的角色,结论是,在那个时间点,Sun 和 Rackspace 会提供更多 Restful 的 API,而不是其它厂商。我们看到两年后的情况并不完全如他所料,随着更多的开发体验,更多的用户和更多的选择,William 看到,Amazon 可能是到目前为止最成功的云供应商,他提出了这样的问题:“ Amazon 并没有使用 REST,对于成功的云应用,REST 是必须的吗?”正如他所言:

每次新的云 API 都会宣布它的“RESTfulness”特性,好象这是必须具备的特征。但是最成功的云 API,AWS API,并不是 RESTful 的。

现在你可以不同意 William 的评价,虽然我们已经在使用云方面走得足够远,并假定这不是一个巧合,但这仍然是值得思考的有趣的环境。此外,William 并不认为 REST 是不重要的,他只是认为至少在云的管理方面并不是那么重要,没有提供任何明显的好处,比如,RPC。

AWS 主要采用了 HTTP 之上的 RPC,通过在 URL 中增加类似?Action=CreateKeyPair 的字串,可以发送 HTTP 的 GET 请求,或者 DeleteKeyPair。与其他资源一样(容量、快照、安全组…)。Amazon 没有把这些称为 RESTful,而是叫做“查询 API”(除了 DevPay API,不知道什么原因,Amazon 将其称为“REST-Query”)。

正如他指出的,RESTful API 的缺陷并没有阻止许多人使用它,也没有限制或明显的影响已经部署系统的可扩展性。也没有影响安全或限制应用程序和语言的类型。

这里有一个经验法则,如果你的大部分调用的 API 来自面向对象语言的库,或多或少每个 HTTP 请求与方法调用相对应,那么你的 API 是多么的 RESTful 可能并没那么重要。

William 指出,虽然 Rackspace 的工程师写的一篇早期文章对 AWS API 的 RESTfulness 进行的比较和对比是精确的,但看上去好象并没有什么不同:对于开发者和用户来说。总之,他建议最终云的 RESTfulness 无关紧要,只要简单就好。

AWS 的 API 是个很特别的样例,因为并没有前人可以借鉴。正如我在写 Sun 的云 API 时,“REST 并不重要,重要的是剩下的部分”。一年半之后,我认为这个案例已经结束了。

他的文章引发了很多评论,大部分是反对意见。例如一个评论是这样写的:

在我看来你说的并不假,虽然 EC2 的成功与他们的 API 关系不大,正如 John(第三个回复)指出的那样。更普遍的感觉是我不确认自己喜欢这样的论调。如果 Tim Berners-Lee 设计了一个接口——具体到物理学家——一旦他们的机器安装了某些具体的“物理学家的协作软件”就可以共享成果,那么今天还会有 Web 和互联网吗?

另一个补充到:

你的问题非常棒,但是忽略了这样一个目标:这些细节(像 RESTful API)主要影响的是库的开发人员,好的库可以把任何类型的 API 抽象为更面向资源的模型。这需要有人能有效和持续的进行概念映射。一旦设计优良的库开始使用,不会存在使用上的障碍,而且很少出现滥用和浪费的现象。最后的结果总是归结为一致性:只要你能提供一致的接口,即使与之前建立的概念和映射并不一致,这样的 API 给产品的成功带来的价值也是非常值得额外付出的。

随着越来越多软件厂商开发了的云实现以及开源的努力,RESTfulness 更多的做为一个重要的特征被提及。但是William 的问题是:如果最成功的云提供商没有使用REST,它真的那么重要吗?

查看英文原文: Is REST important for Cloud?

2011-01-31 07:082262

评论

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

企业降本增效的催化剂:敏捷迭代

FinFish

敏捷开发 敏捷迭代 敏捷项目管理

海泰方圆受邀参加中关村网信联盟会议并斩获三项殊荣

电子信息发烧客

CNCF社区首个!KubeEdge达到软件供应链SLSA L3等级

华为云开发者联盟

云原生 华为云 企业号 2 月 PK 榜 华为云开发者联盟

轻舟已过万重山:华为之路,平板PC之变

脑极体

华为 PC

比Worktile好用的项目管理软件有哪些?

爱吃小舅的鱼

项目管理 Worktile 项目管理工具

数字货币现货合约秒合约交易所系统开发案例

开发微hkkf5566

设计模式第六讲:责任链模式和迭代器模式详解

C++后台开发

设计模式 责任链模式 迭代器模式 后端开发 Linux服务器开发

令人期待的 SysOM 2.0 OS 迁移、超异构计算系统直播又来了 | 第 63-64 期

OpenAnolis小助手

操作系统 系统运维 sig 龙蜥大讲堂 SysOM

新型掩码自编码器 AdaMAE,自适应采样

Zilliz

计算机视觉

IoT设备数据业务价值洞察实践——实践类

阿里云AIoT

阿里云 物联网 IoT

DR-AP40X9-A-Qualcomm-IPQ4019/IPQ4029-2.4G&5G

Cindy-wallys

IPQ4019 ipq4029

为什么大多数团队推行自动化测试最后却不了了之?

Liam

测试 自动化测试 测试自动化

软件测试 | 常用模拟器使用

测吧(北京)科技有限公司

测试

IoT设备数据的存储、解析和价值挖掘实践——实践类

阿里云AIoT

阿里云 物联网 IoT

云小课|MRS基础操作之配置DataNode容量均衡

华为云开发者联盟

大数据 华为云 企业号 2 月 PK 榜 华为云开发者联盟

Blender的布局和工作区

Finovy Cloud

Blende

Wallys /industrial wifi6 router/ Ipq6010 /ipq6018/ipq6000 2x2 2.4G & 5G

Cindy-wallys

IPQ6010 ipq6018 IPQ6000

软件测试/测试开发 | web自动化测试-PageObject 设计模式

测试人

软件测试 自动化测试 测试开发 Web自动化测试

Bytebase 体验官之勇闯新手村

朱亚光

一文读懂Guava EventBus(订阅\发布事件)

京东科技开发者

架构 观察者模式 Guava EventBus 企业号 2 月 PK 榜

rust入坑指南之ownership

京东科技开发者

rust JVM 内存 企业号 2 月 PK 榜 ownership

最佳实践数据服务之设备数据格式ProtoBuf转JSON——实践类

阿里云AIoT

阿里云 物联网 IoT

进击中的 Zebec 生态,Web2 与 Web3 世界的连接器

股市老人

低代码如何快速提升客户体验

力软低代码开发平台

0源码基础学习Spring源码系列(二)——Spring如何解决循环依赖

京东科技开发者

spring 源码 初始化 二级缓存 企业号 2 月 PK 榜

Linux安装elasticsearch-head

Geek_7ubdnf

elasticsearch

开心档之Java 流(Stream)、文件(File)和IOJava.io

雪奈椰子

Java 开心档

JS常见错误和解决方法集锦

观纵科技

前端 js 错误处理

ChatGPT时代的打工人众生相

脑极体

ChatGPT

聊一聊 gRPC 中的拦截器

江南一点雨

gRPC

REST对云的实现真那么重要吗?_SOA_Mark Little_InfoQ精选文章