【WebServices系列】REST和SOAP之争


推荐阅读【REST系列】详解REST架构风格
主要参考资料


REST和SOAP的发展情况

2000-2005

2000年,同时出现了两种用于构建web服务的方案,一种以REST为主导,一种以SOAP为主导

  • REST 是Roy Thomas Fielding在他2000年的博士论文中提出 用于指导web架构的架构风格
  • SOAP 是1998年被软件巨头们(IBM、Microsoft)提出的,并于2000年提交到了W3C(万维网联盟)。软件巨头们以SOAP为主,WSDL、UDDI为辅,组成了一套用于构建web服务的技术

此后的五年,SOAP一直占有主要优势

这是为什么呢?

以下是REST论文的中文译者 李琨 被采访的内容(于2007年)
在这里插入图片描述

从这段采访中我们可以得知:REST论文的阅读难度大,并且当时的web技术发展并不成熟,人们还没有意识到REST用于web架构的有效性

REST还只是刚被发表的存在于论文中的一个有待研究的抽象内容,而SOAP已经成为了一个W3C具体的标准

2000年的互联网已经按捺不住,即将迎来井喷式的发展。在软件巨头们的带领下,基于SOAP的web方案被迅速推广应用。在此期间,没有多少人考虑或谈论REST,想想也是,因为没有什么是比讨论博士论文更乏味的事情了。

2005-

在经过几年的发展后,人们逐渐意识到SOAP的一系列问题。同时REST的研究也开始有了成果,开发者开始倾向于REST

可以通过我收集到的资料来了解一下这个转变的过程

《REST深入剖析及实践策略研究》

在这里插入图片描述


REST和SOAP的区别

SOAP的优势仅在于它在当时看来是一个具体的内容,并且受到软件巨头们的推广。但该来的还是会来的,SOAP注定只能扮演一个临时方案。

①本质区别

《REST与SOAP的冲突》 描述了一个核心因素:REST和SOAP对web的理解不同。它们都试图解决同样的问题:应该如何提供Web服务,使web架构更加规范化。但是SOAP和REST使用的技术和准则却大相径庭,甚至截然相反。

SOAP是一个用于web服务的通信协议,我们把基于SOAP(还有WSDL、UDDI)构建的web服务叫做SOAPful WebServices (SOAP式的web服务)。SOAPful WebServices 认为Web服务就是一组消息的交互,而Web只是用来承载这一交换过程的一个中间载体,所以它本质上是一个RPC风格的web服务。

REST是一个web架构风格,我们把基于REST风格构建的web服务叫做RESTful WebServices (REST式的web服务)。REST 认为Web本身就是一组资源的集合,Web服务本质上是对资源的访问和操作

简单来说,SOAP是面向消息的,REST是面向资源的。
它们的区别就像是面向过程和面向对象的区别,请求不再是单纯调用一些函数并传递参数,而是在一个特定的对象(资源)上调用一个方法并为其它信息提供参数。

有人很喜欢质问说:你能告诉我有什么功能是RPC无法实现的吗?!
这个问题确实没法回答,你只要下定决心排除万难,RPC能实现一切功能。类似你完全可以使用汇编语言或者C语言来做Web开发、处理HTML。

但面向对象的优点是什么?可维护性、松耦合、代码重用等等。

Fielding作为HTTP协议的起草人之一,以及Apache Web服务器开发者,对Web的理解显然更深刻一些

② 对HTTP的不同使用

REST真正地利用HTTP的原生语义来构建web。而SOAP仅仅是将HTTP作为一种传输协议来使用,所有的信息都在SOAP信封中

这使得RESTful WebServices本身非常轻量、简洁、结构清晰。
而SOAP则越来越重量化。随着SOAP在Web服务的广泛应用,随着需求的增长,SOAP不断地增加附加的内容,增加协议以支持安全性,这使它变得异常庞大,虽然增加了SOAP的成熟度,但SOAP也变成了一个复杂的、传输效率低的协议

慢慢地,一线开发者越来越不喜欢SOAP
截自 REST论文中文译者 李琨 tg群聊
在这里插入图片描述


欢迎指正和补充


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值