REST与SOAP之比较 ——REST篇

转载 2007年09月17日 21:21:00

 我有这样一个推断,在计算机世界中,但凡那些让开发人员记住的重要概念,都有一个很酷的名称首字母缩写,否则的话,开发人员很快就会将其抛之脑后。比如Ajax、SOAP以及REST就证明了这一点。

REST能够在计算机领域被广泛采用,它走的道路是不同寻常的。这个术语是由Roy Fielding创造的。Fielding毕业于Irvine市加利福尼亚大学,在他的博士学位论文中第一次提出了REST这个概念。在Web方面,我们必须承认Fielding是非常精通的,他曾经帮助创建HTTP 1.0规范,该规范从1996年开始就为Web提供基本准则。他在Web标准方面非常有经验,这为他的这篇博士论文奠定了坚实的基础。

  Fielding指出,使用且符合代表性状态传输(REST)设计约束的 Web 上部署的组件,可以充分利用 Web 的有用特性,万维网(World Wide Web)才能够达到最佳的工作效果。可以这样理解REST——当一个浏览器得到并且显示构成HTML页面的各个元素时,它正在获取资源的当前状态的表现形式。在Fielding的博士论文中,他列举了REST风格的设计约束,并且解释了为什么这些约束能够充分利用Web 的有用特性,使其达到最佳状态,以及这些约束的关键所在。同时,在论文中,他也包含了一些关于REST和某些目前的Web风格之间 “不符合”的讨论,以及这些Web风格是如何导致设计无法利用Web特性的。

  Fielding认为,对于使用HTTP承载应用程序协议穿越防火墙,XML-RPC 和SOAP所采用的方式是“从根本上被误导的概念。”它们所采用的方式违背了设立防火墙的概念,结果是,防火墙厂商为了保护系统需要侦察出所承载的协议。由于大多数SOAP应用程序使用HTTP都是为了穿越防火墙,因此,你可以发现REST与SOAP之间的冲突是从哪里开始的。Fielding认为,如果你打算使用HTTP的话,就应该与充分利用HTTP本身的含义。

  REST风格强调,通过有限的操作或者是“动词”以及一个组件之间的标准接口,也就是HTTP协议提供的借口,来提升客户与服务之间的交互。通过为每一个资源分配其自己的URL,来实现灵活性,REST可以调用包含上百个URI的资源类型的客户,其中的关键是REST能够给你无限多的“名词”。REST使用HTTP的动词——简单的良定义操作集:POST, GET, PUT,DELETE进行请求和响应,从而避免了歧义。举个例子,GET只能够简单地返回资源的表现形式,而不能够创建任何其他的内容。

  在Web发展的初期,由于人们都在试验通过收集各种不同来源的元素,从而把Web应用程序融合在一起,有大量这种Web服务的不成熟探索的例子——从HTTP页面中解析信息,用于页面创建者没有计划到的用途。这种“屏幕抓取”的Web类比表明,REST风格的方法是先于那些更加复杂的Web服务而出现的。

  REST是一种风格而不是一个标准

  你可能会把软件的架构风格当作对上层设计模式的抽象。然而,根据Fielding所说,设计模式的堆砌并不等同于架构风格,因为模式是非常接近于特定问题的。

  由于REST是超文本系统的一种风格,而不是Web服务的,因此,本文的标题“REST与SOAP之比较”就有些让人误解。然而,很多软件设计人员会将其混淆,他们在考虑如何创建Web服务时,会得出这样的结论:SOAP过于复杂,而简单的类似于REST的设计却更加适合。

REST与RPC风格之比较

  远程过程调用的架构,是应用在基于XML-RPC或者 RPC风格的SOAP的Web服务中的,它却有着完全不同的风格。客户端发出命令,以使服务做出特定的操作。换句话说,RPC有动词的倾向。

  REST强调资源(名词)有统一的接口以此来对它们寻址,而RPC强调过程(动词)有统一的接口来激发它们。一个基于RPC的架构,动词数量是没有限制的。REST说,我们使用四个动词——非常熟悉,HTTP标准的GET、POST、PUT以及DELETE——来进行请求和响应,REST使用资源寻址来处理其可变性。

  一个简单的REST举例

  假设我们希望一个Web服务暴露一部分目录,从这个目录中,用户将能够得到一些描述、图片、安装指令等等。为了得到数字“n1996-01”的描述,用户需要格式化一个GET请求,类似于下面的这个URL:

  http://company.com/catalog/description/n1996-01

  在处理这个请求时,“/catalog”将映射到一个服务中,之后,通过该服务对“description/n1996-01”进行解释,从而定位资源。在创建响应时,服务需要使用内容类型(Content-Type)的头文件来指定返回格式。在这种情况下,假定返回格式是HTML或者XML,客户端能够使用它来控制页面的布局。如果要得到图片,那么这个请求将对“/catalog/picture/n1996-01”进行寻址,返回的响应将是图片内容类型(Content-Type)。

  REST的商业应用

  最近几年,大多数Web商业企业开始对REST非常感兴趣。Google Data API(目前还在测试版本)专门使用REST规则来提供简单的协议。对服务的HTTP GET请求的响应结果是,采用Atom或者是RSS联合格式的XML数据。Google也使用Atom以及POST、PUT和DELETE操作来完成公共协议。eBay服务提供通过使用不同语言工具来访问服务,这些工具包括文档/文字风格的SOAP以及REST风格。

  那么,对于XML-RPC和SOAP所具有的RPC风格而言,REST风格是否是一个具有竞争力的替代者呢?当然,我决不这样认为,在下一篇文章中,我将尽量向大家展现SOAP所向无敌的领域。

REST Vs SOAP,Soap 和 Rest 的区别

今天有人问了我这样一个问题:“为什么会有人选择 SOAP(Simple Object Access Protocol,简单对象访问协议) 而不是 REST(Representational State...
  • defonds
  • defonds
  • 2015年10月09日 15:47
  • 11087

服务端REST与SOAP的探讨

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!声明:闲来逛论坛看到一篇不错的文章,阅读后受益匪浅。本文从一个简单的...
  • yanbober
  • yanbober
  • 2015年04月27日 13:11
  • 8571

REST与SOAP之比较——SOAP篇

比较REST和SOAP的“风格”  REST依赖一套简单的“动词”,把所有的复杂性都转移到了指定资源的“名词”中。与此不同,SOAP却有一套相当复杂的XML格式化命令和数据传输选项。  在Web服务发...
  • dongtg
  • dongtg
  • 2007年09月17日 21:32
  • 1643

另类感受soap和rest风格webservice不同点

最近一直在看webservice方面的东西,但是刚接触webservice是公司业务要去调用别人的webservice接口,一看文档rest风格。然后就一直有个疑云在心中。因为网上看到的是soap的,...
  • zhanglf02
  • zhanglf02
  • 2017年06月30日 16:24
  • 1055

http、soap和rest的比较

由于被问到rest和http区别,rest是协议吗?懵逼了。。。花了一部分时间学习了下,记录下来,以供不时之需,有理解不到位的望留言告知,再此,多谢。。。。 废话不多说正文开始。。。   ...
  • RogueStudys
  • RogueStudys
  • 2016年10月14日 20:38
  • 4433

CXF系列(五):soap与rest的比较

前四篇文章我都是围绕着soap来进行CXF的代码编写,但是实际业务中还有一种方式特别流行,他就是rest。本文具体来阐述2者的区别,在之前我们先看两者的定义。 SOAP (Simple Object...
  • pangliang_csdn
  • pangliang_csdn
  • 2017年01月10日 16:17
  • 493

三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较

目前知道的三种主流的Web服务实现方案为: REST:表象化状态转变 (软件架构风格) SOAP:简单对象访问协议  XML-RPC:远程过程调用协议  简单介绍: REST:表征状态转移(Re...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年02月27日 11:28
  • 8611

rest 与 soap的比较

转载于: http://blog.csdn.net/idafish/article/details/6308916 REST似乎在一夜间兴起了,这可能引起一些争议,反对者可以说REST是WEB诞生之始...
  • lingxyd_0
  • lingxyd_0
  • 2011年07月25日 11:46
  • 6059

REST与SOAP之比较

REST与SOAP之比较  (2013-09-17 11:48:39) 转载▼ 标签:  rest   soap   webservice   it 分类: J2EE ...
  • u013322876
  • u013322876
  • 2016年02月02日 14:04
  • 238

REST与SOAP比较

本文的标题“REST与SOAP之比较”确实有些让人误解。REST是代表性状态传输的名称首字母缩写,与其说它是标准,不如说是一种风格。然而,在我的前一篇文章中,正如我们所讨论的,众多从事Web服务的软件...
  • bj_xiufeng
  • bj_xiufeng
  • 2011年09月21日 00:29
  • 634
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:REST与SOAP之比较 ——REST篇
举报原因:
原因补充:

(最多只允许输入30个字)