REST 在节节胜利吗?

  • Stefan Tilkov
  • 李鑫

2007 年 5 月 31 日

话题:SOARESTRuby on Rails微软架构

REST是否可以成为基于 Web 整合一个可选择方案?这个问题在 InfoQ 已经引起了数次争论。REST 站在了 Web 服务的对立面,而 Web 服务被一个并不庞大但说话掷地有声的社群认为违背了 Web 的基本原则。

关于 SOAP vs. HTTP 的讨论最早可以追溯到 2000 年,头号支持者 Mark Baker 对 James Snell。早在 2002 年,Paul Prescod 写了一篇文章声称:隐藏在 Web 架构中的原则使其优于“Internet 的 DCOM(DCOM for the Internet)”(他给 SOAP RPC 贴的标签)。从那以后,争论就一直没有停歇过,与此同时还有一个值得注意的趋势,越来越多的专家同时支持 WS-* 阵营和 REST 阵营。InfoQ 有一系列关于这个问题的文章,来自Mark BakerSanjiva WeerawaranaPete Lacey等人,都收到了许多评论,这些评论对 REST 方法的优点褒贬不一。

越来越多的 Web 服务工具,如Apache Axis2CXF,开始提供一些对 REST 模型的支持。Sun已经发起 JSR 311来标准化 Java 平台对 REST 风格的 Web 应用程序的支持。Ruby on Rails从版本 1.2开始已经支持 REST,最近,微软对 REST 的支持也成为了新闻。

在二月份,W3C组织了一个研讨会,会上提交的一篇论文(作者是 Gartner 的 VP 之一 Nick Gall)中包含这如下声明:

基于 SOAP 与 WSDL 的 Web 服务仅仅在名字上体现了“Web”,事实上,它们是 Web 技术中不友好的一层,它们所基于的传统的企业级中间件的架构风格已在过去 10 年中远远落后于人们的期望。

目前主张 REST 的一个重要声明来自 Burton Group 的分析师Anne Thomas Manes,她是 Web 服务领域的著名公众人物之一(并且撰写了该领域的一本书):

如果你准备采用 REST 技术,我建议你马上上路,并且走在潮流的前端 [……] 你将必须训练你的开发人员了解 REST 的准则,你可能会希望采用某一个新的框架或者自己建立一个框架来帮助你的开发人员实现 REST 风格的应用。毫无疑问你需要给你的开发人员提供指导。你想要做到的工作是使 REST 成为你的分布式应用的默认风格。

暂时忘掉我的编辑身份,我完全承认我的看法是偏向于 REST 的,所以,我的看法有可能是错误的。而且也完全有可能 Pete Lacey 说的一点没错,那些人听不见你说的(they can't hear you)。不过看起来显而易见的是,前 SOAP/WS-* 的支持者们之中不断有相当数量的人开始分享 REST 的经验想法了,而且最终供应商也开始支持它(REST)了。

REST 是否在以正确的方式提供 Web 服务,同时 WS-* 是否会完全消失并被 Web 技术所取代?REST 是否只是另外一种技术选择,但在更大范围内并不适用?基于 SOAP、WSDL、WS-* 的 Web 服务是否是支持 SOA 的正确的、毫无疑问的选择?

对此有何看法?

查看英文原文:Is REST Winning?
译者简介:李鑫,硕士毕业于北京航空航天大学软件学院;现就职于北京用友致远。喜爱 Java 开源技术,也希望自己自己能为开源社区做力所能及的贡献,闲暇时喜欢读书、与朋友们一起打篮球。为 InfoQ 中文站贡献内容,请邮件至china-editorial@infoq.com
SOARESTRuby on Rails微软架构