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

阅读数:1173 2008 年 8 月 12 日 23:45

关于 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?

评论

发布