几年前,Ganesh Prasad问道,Internet比REST更基本吗?这些年,他不断围绕REST SOA、以及更时新的云计算提出相关讨论,并且钟情于REST的指导原则。然而,最近有人在LinkedIn REST架构师讨论组中的一片帖子中问道,“REST的缺点是什么?”Ganesh对此做了回复,然后又在其个人博客中重申了自己的观点:
我不能说REST有“缺点”。它说到的都做到了,而且做得很好。但是,请记住REST架构的实现唯一使用的协议是HTTP。我们可以肯定地想象REST在另一种传输协议上的实现,而且其中还包含诸多方面的增强。 |
接着,他谈到了四个可能改进的方面。值得一提的是,Ganesh和许多人一样,将REST等同于REST/HTTP,即基于HTTP的REST:
1.“HTTP是一个同步的请求响应式协议。这意味着它不能天然地支持服务端发起的通知(点对点),但这又是经常需要的。这就解释了为什么REST风格的应用程序中的回调需要使用应用层的设计模式,如Webhooks。现在,我们有了WebSockets这样的双向传输协议,也许工业界应该考虑在其之上根据REST原则设计一款新的应用协议。” 这一点非常有意思,因为就在差不多一年之前,我们看到有些人甚至在探讨WebSockets和REST是否能够兼容的问题。
|
Ganesh继续谈到了REST对一般性QoS的问题:
REST不能支持这些一般性QoS背后的原因是,它们都需要维护“会话状态”。有状态(statefulness)存在明显的缺陷(如,影响可伸缩性和错误恢复),但是随着Redis之类的宣称常数时间(即O(1))和高性能的NoSQL存储的出现,就有可能将会话状态从内存中转移到这样的存储中,因而可支持在多个节点间共享会话,进而可以满足QoS的需要。 |
回到Ganesh谈到的另外两点:
1.他认为,HTTP的动词太少,尤其对于需要做点对点交互的场景。他建议:“INCLUDE(将资源加入到某个资源集合中并返回服务端设定的URI)、PLACE(使用客户端指定的URI向资源集合中添加资源)、REPLACE(全部替换)、FORCE(PLACE或REPLACE)、AMEND(部分更新,它是一个容器动词,为一个资源子集指定一个或多个动词)、MERGE(通过提供的表述合并部分资源)、RETIRE(比DELETE更好)和SOLICIT(替换GET,它也是一个容器动词,用于告知响应端对发起方的资源做些什么,因为现在是点对点的场景了)”
|
参照一下HTTP 2.0的初始草案,就能发现它不可能完全采纳Ganesh的建议。然而,Ganesh本人在过去5年里好像一直致力于提出一个新规约:
我正在编写一个称作Internet Draft的新应用协议,它可以绑定任何传输(发布/订阅、异步点对点或同步请求/响应)。该协议是被我称为ROMA(面向资源/表述的消息传输架构)的新型分布式计算架构的一部分,它不仅包含数据模型和消息传输API,还包含更高级的功能(QoS、描述和流程协作) |
该规约发布之后,如何解决这些已知的问题?是否能够获得REST社区的积极响应?将是很有意思的看点。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
数字化转型:如何更好地利用API和微服务
API,即应用程序编程接口,它提供给应用程序、开发人员访问其它应用的能力,而又无需访问源码,无需理解内部工作机制细节;简单地说,API就是实现应用与应用连接的一种隐形的桥梁。
-
金融行业数字转型:利用API构建新IT基础
从制造业、物流业,银行业到零售业,各行各业的根基都因应用经济的兴起发生着深刻的变革。在互联网和智能手机普及化的推动下,这种现象变得司空见惯。到2021年 ,蓬勃发展的全球应用经济的预估总值将达到6.3万亿美元,相比2016年的1.3万亿美元,增长近5倍。
-
如何使用Azure API管理服务?
在云和微服务架构时代,API是数字化业务的通用语言。根据分析公司Forrester Research预测,仅在美国,API管理工具的支出将在未来5年内达到近30亿美元。
-
私有存储云如何构建?
如何构建自己的私有存储云呢?在这之前,我们要先退后一步,思考一下云计算到底意味着什么。