低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

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:451320
用户头像

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

关注

评论

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

华为鲲鹏专家解读:90%代码如何移植到鲲鹏平台

华为云开发者社区

软件 鲲鹏

技术实践丨GaussDB(DWS)运维管理功能“升级”的原理和使用

华为云开发者社区

运维 数据 集群

“一个APP竟然可以适配这么多设备?!”《优酷响应式布局技术全解析》开放下载

破绽

阿里巴巴 阿里云 开发者 优酷 电子书

让黑产无处遁形 京东智联云推出风险识别服务

京东科技开发者

人工智能 学习 风险识别

Github惊现高星神作,两份算法宝典让你横扫大厂算法面试题

云流

编程 程序员 算法 计算机

阿里P8大牛呕心沥血总结整理的《Java面经手册》,通过实践的方式向你深度讲解Java核心知识点

Java架构之路

Java 程序员 架构 面试 编程语言

日常工作问题集锦

hasWhere

几行代码轻松实现跨系统传递 traceId,再也不用担心对不上日志了!

程序员小航

Java 日志 链路追踪 工作笔记 traceId

mongodb内核源码实现、性能调优、最佳运维实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(上篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL 数据库 nosql mongodb 分布式数据库mongodb

华为云数据安全中心正式公测,8大核心数据安全能力守护你的数据

华为云开发者社区

华为 安全 数据

你听过CatBoost吗?本文教你如何使用CatBoost进行快速梯度提升

计算机与AI

Python 学习 优化

Go发起HTTP2.0请求流程分析(中篇)——数据帧&流控制

Gopher指北

golang 后端 HTTP2.0

LeetCode题解:98. 验证二叉搜索树,递归,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

想要高效搭建企业信息平台?教你轻松选择开发框架!

Marilyn

敏捷开发 快速开发

程序员的美丽假期(并不)

Philips

敏捷开发 快速开发

详细分析定制企业应用的价格

Learun

敏捷开发 快速开发 软件架构

GO 类型接口及反射间的转换

superman

go golang golang新手

数字货币交易所开发方案,撮合系统搭建app源码

WX13823153201

Week 4 命题作业及总结

阿泰

LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(三)

陈泽云

人工智能 大数据 计算机网络 操作系统 网络

成为一名合格的技术类产品经理

小清新同学

产品经理

mongodb 源码实现、调优、最佳实践系列-百万级高并发mongodb集群性能数十倍提升优化实践(下篇)

杨亚洲(专注mongodb及高性能中间件)

MySQL nosql mongodb 架构 分布式 分布式数据库mongodb

深入理解 JVM 垃圾回收算法 - 复制算法

Java架构师迁哥

出炉!华为18A自爆SpringCloud微服务分布式笔记

996小迁

Java 编程 架构 面试 SpringCloud

成为 Apache 贡献者,So easy!

海豚调度

Apache 贡献

台湾地区为什么会丢包高?

德胜网络-阳

从分布式到微服务成长手册,助我面试跳槽斩获字节Offer

Java架构追梦

Java 学习 架构 面试 架构微服务

面试大厂被面试官用MyBatis怼到“哑口无言”?这份MyBatis源码笔记助你吊打面试官!

Java架构之路

Java 程序员 架构 面试 编程语言

直播预告 | 云时代的数据库客户端——CloudQuery最佳实践

CloudQuery社区

数据库 sql 安全 工具软件

SpringBoot有多重要?面试用SpringBoot把面试官唬住了要30k都行!

Java架构之路

Java 程序员 架构 面试 编程语言

websocket 是怎么连接的

lockdown56

nginx 网络 HTTP websocket

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

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