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

2008 年 8 月 12 日

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

2008 年 8 月 12 日 23:451236
用户头像

发布了 63 篇内容, 共 22.0 次阅读, 收获喜欢 3 次。

关注

评论

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

工厂模式——这一篇真够了

海星

Java 架构 面试 设计模式 工厂模式

Jenkins:批量自动将 Maven 类型 Job 迁移到自由风格类型

donghui2020

jenkins

k8s上运行我们的springboot服务之——在linux安装docker并搭建docker私服

柠檬

Docker k8s

【有奖调研】大数据与人工智能从业者有奖需求用研

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

【写作群星榜】本周写作平台优秀作者&文章排名

InfoQ写作平台

写作平台 排行榜

系统服务构建-BFF 助力前后端分离

图南日晟

php 微服务 BFF

系统化服务构建-调用链管理

图南日晟

微服务 全链路监控 链路追踪

乙己说:LFU实现思路整理

再见小飞侠

缓存 LeetCode

【Howe 学 JAVA】断点续传原理精析及简单实现

Howe

Java 断点续传

SpringCloud之服务提供者与消费者

北漂码农有话说

2020年4月北京BGP机房网络质量评测报告

BonreeAPM

运维 服务器 机房 数据中心 评测

G-P-M 调度模型深度解析之手撸一个高性能 goroutine 池

潘建锋

go 并发编程 协程

真香!谷歌终与美国国防部合作,签署百万美金云服务合同

神经星星

云计算 互联网巨头 互联网 谷歌Google

现代生活对我们大脑的危害

七镜花园-董一凡

生活质量

一文读懂Java注解

JFound

Java

学会独立思考的前提

fahsa

自我提升

k8s上运行我们的springboot服务之——k8s 1.16.0安装

柠檬

k8s

投机者

Neco.W

投机 口罩 头盔 投机者

写给管理者的睡前故事

石云升

读书笔记 故事 管理者

自我革新最难的是革自己的命

史方远

职场 成长

H2 的全文检索功能

Page

全文检索 lucene H2 内存数据库

职场提问的“唐太宗”原则

大伟

Android | Tangram动态页面之路(七)硬核的Virtualview

哈利迪

android

用 R 语言打个印咋就这么费事儿呢

张利东

可视化 R

突然的自我

月白

自我思考

JVM源码分析之堆内存的初始化

猿灯塔

unittest框架

蜗牛前进

Python 自动化测试 unittest

Java 简介

编号94530

Java jdk java简介 jdk8

回“疫”录(23):如果岁月可回头

小天同学

疫情 个人成长 回忆录 现实纪录 纪实

k8s上运行我们的springboot服务之——上传服务到docker私服

柠檬

Docker springboot

奈学教育分享:Hadoop分布式系统HDFS工作原理

奈学教育

hadoop hdfs 分布式

AI如何在普惠金融的探索中发挥作用?

AI如何在普惠金融的探索中发挥作用?

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