InfoQ

新闻

SOAP协议栈是令人尴尬的失败?

作者 徐涵 发布于 2008年8月12日 下午11时45分

社区
SOA
主题
Web服务,
REST
标签
Web服务,
SOAP
关于REST vs. SOAP的争论已不是什么新鲜事了。然而,现就职于Sun公司的XML权威Tim Bray近期的一番话再次引发了这一争论。在OSCON上接受采访时,Tim Bray说:
目前,SOAP协议栈通常被认为是一个令人尴尬的失败……SOAP协议栈能做的,REST也能做,而且在可行性、优美性、代价和经济上更优于前者,只是我们尚缺乏相关工具。
跟以往的情况一样,双方的支持者们纷纷出动并发言支持自己所钟爱的风格。他们在Service-Oriented-Architecture Yahoo!讨论组上的辩论已经形成了一个有超过150条回复的主题。争论中,Nick Gall给出了一个已抛弃SOAP技术的大公司的案例:
好几年前,沃尔玛将其供应链的VAN EDI基础设施替换成为EDIINT AS2,并一直愉快地沿用至今。AS2本质上属于普通老式XML(Plain Old XML,POX),它用自己的方法实现了可靠消息传递的幂等性。
Mark Baker补充道
我一直都说SOAP不会在防火墙以外获得广泛使用的。
在谈到什么样的例子才能被算作一个使用SOAP的成功案例时,Nick Gall指出
实际上我在寻找的,是那些真正利用了SOAP的强大、并有力地证明了“此问题用SOAP可以解决、而用其他技术则面临困境”的大公司。在我看来,真正需要用SOAP来解决问题的公司并不多——SOAP进入这些公司,要么是咨询师将之列入了检查列表,要么是因为有些工具默认使用SOAP。大部分应用SOAP的场合似乎只是惯性使然,而不是相信SOAP在完成这件事上存在优势。
Eric Newcomer对Nick给出的例子却不以为然
你的例子是一个在B2B场景下用REST来替代EDI的客户。EDI是面向文档的,REST也是,所以这不足为奇。
我知道有很多使用REST的大公司,因为它们主要是面向Web的公司,所以它们设计和创建的是基于Web的数据中心。但我没听说过有公司数据中心先于Web就存在了还采用REST的。
……
我是一个主张“为任务采取正确工具”的人,我不认为人人都能从使用REST中得到好处,也不认为人人都能从使用Web服务中得到好处。
另外,Steve Jones对于SOAP因为复杂而不被采用的说法表示不赞同,他说:
我从不选择复杂的东西。REST并不简单,它自己有一些非常“好的”方面——但那些并不简单;而且它还有一些尚未解决的重大难题(比方说安全性)。SOAP并不复杂,人们抱怨SOAP,说它太简单了、将网络隐藏起来了。所以说,不采用SOAP的原因可能很多,但说它复杂是不妥的。
虽然David Chappell曾断言“REST与WS-*战争结束”,不过显然,这又是一次关于REST vs. WS-*/SOAP的无休止的辩论。人们都希望这一持久的争论能有个真正的了断,不过那不会“由一方取得压倒性的胜利”。正如John Evdemon所说
一种方案不可能处处适用——选用最适合你客户需求的方案,并用它把事情做好。
Gervas Douglas提议对REST和SOAP进行协议栈的比较,以消除双方在理解上的严重不一致。不过,关于参考模型的选取存在不同意见。Steve Jones建议SOA RM为基础设计SOA栈,然后拿REST/SOAP对照此栈进行比较;而Mark Baker则主张以OSI参考模型为参照。不管怎样,反正Gervas Douglas已经为协议栈比较创建好了wiki条目,让我们拭目以待,看看那里最终会怎样。

查看英文版本:SOAP Stack an Embarrassing Failure?

1 条回复

回复

惆怅 发表人 奕鹏 齐 发表于 2008年8月13日 上午4时17分
  1. 返回顶部

    惆怅

    2008年8月13日 上午4时17分 发表人 奕鹏 齐

    现在大多数的工具都是支持SOAP的。
    另外基本上所有的Web Service协议都是基于SOAP的。
    如果没有vender和协议的支持,我觉得无法抛弃SOAP。

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。