`
lbxhappy
  • 浏览: 309146 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rest 和 soap比较

    博客分类:
  • j2ee
阅读更多

我有这样一个推断,在计算机世界中,但凡那些让开发人员记住的重要概念,都有一个很酷的名称首字母缩写,否则的话,开发人员很快就会将其抛之脑后。比如 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 基础(二):Web 服务编程,REST 与 SOAP

    在本篇博客“REST基础(二):Web服务编程,REST与SOAP”中,我们将深入探讨两种主要的Web服务编程模型:Representational State Transfer (REST) 和 Simple Object Access Protocol (SOAP)。这两种技术都是用于构建...

    soap和rest比较

    尽管SOAP和REST都有各自的优势,但在实际应用中选择哪种技术方案取决于具体的需求和场景: 1. **安全性需求高**:如果项目对数据传输的安全性有较高要求,如金融领域,那么选择SOAP可能是更好的选择,因为它提供了...

    SOAP vs REST WebService

    SOAP and REST WebService 的比较分析,SOAP and REST WebService 的比较分析

    面向服务的架构SOA分为2种 SOAP即Webservice和REST

    百度百科.url"和"SOA接口的两种常用实现比较:SOAP(WebService) vs REST(GET,POST).url"可能是链接到更详细的参考资料,它们提供了关于REST架构风格的深入介绍,以及SOAP和REST在实际应用中的优缺点比较。...

    Boomerang - SOAP & REST Client-7.7.6.zip

    无缝集成和测试SOAP和REST服务。 您是否正在寻找可以帮助您访问和使用REST和SOAPWeb服务的出色应用程序? 您想通过一个新的、有用的SOAP客户端将您的体验提升到一个新的水平,并以前所未有的方式改进您的REST服务吗...

    rest soap cxf webservice maven springmvc

    在IT行业中,REST和SOAP是两种常见的Web服务接口设计风格,而CXF是一个流行的开源框架,用于构建和消费这两种服务。Maven是一个项目管理和综合工具,SpringMVC则是Spring框架的一部分,专门用于构建Web应用程序。...

    SOAP to REST_library_

    SOAP是一种基于XML的协议,用于在Web上交换结构化和类型化的信息,而REST则是一种轻量级的架构风格,通常用于构建Web服务。 描述中提到的"soap to rest powerbuilder"可能是指一个PowerBuilder应用,这是一个用于...

    REST与SOAP WEB SERVICE的区别1

    总结来说,SOAP和REST在设计哲学和应用场景上有显著差异。SOAP适合需要严格协议和安全保证的企业级服务,而REST更适合互联网环境中快速开发和高效率的需求。选择哪种方式取决于具体项目的需求,如系统的规模、安全...

    soap_to_rest_node:将SOAP转换为REST请求的项目

    【标题】"soap_to_rest_node:将SOAP转换为REST请求的项目"是一个旨在帮助开发者将传统的SOAP...同时,项目中的源代码和测试案例可以作为学习REST和SOAP转换的实例,对于提升开发者在API设计和实现方面的技能大有裨益。

    soap vs rest 图对比

    对比soap和rest的区别,从架构 应用 传输 数据承载区分

    soap和rest的应用flickr(一个照片管理网站的源代码)

    本项目"soap和rest的应用flickr"是一个基于这两种技术实现的照片管理网站源代码,让我们深入探讨它们以及在实际应用中的工作原理。 首先,SOAP是一种基于XML的协议,主要用于在Web上交换结构化和类型化的信息。它的...

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

    SOAP和REST都是实现SOA接口的常见方式,但在灵活性和性能方面,REST通常被认为是更优的选择,尤其是在互联网和移动应用中。 文件`rest(一种软件架构风格)_百度百科.url`和`SOA接口的两种常用实现比较:SOAP...

    REST WebService与SOAP WebService的比较.docx

    REST(Representational State Transfer,表述性状态转移)和SOAP(Simple Object Access Protocol,简单对象访问协议)是两种主要的Web服务技术,它们在Web服务领域中有着不同的设计理念和应用场景。理解两者的差异...

    基于WCF创建SOAP和REST服务源码

    通过实践这些源码,你可以深入理解WCF如何处理SOAP和REST请求,以及如何配置不同的绑定和行为。 C#是.NET框架的主要编程语言,用于编写WCF服务非常自然。这个源码应该包含了C#类、接口和方法的示例,展示了如何在...

    Boomerang - SOAP & REST Client 6.1.0.0.zip

    浏览器插件,无缝集成和测试 SOAP 和 REST 服务。 Boomerang - SOAP & REST Client 6.1.0.0 for Chrome。 压缩包内包括 crx、pem、rar 等文件,谷歌内核的浏览器可直接拖放 crx 文件安装,如果提示“该扩展程序未列...

    SOAP webserivce 和 RESTful webservice 对比及区别

    SOAP Web服务和RESTful Web服务是两种常见的Web服务交互方式,它们在设计理念、协议复杂度、数据格式和操作方式等方面存在显著的区别。 首先,SOAP(简单对象访问协议)是一种基于XML的协议,它允许不同系统之间的...

    service-proxy:使用Java编写的REST和SOAP的API网关

    作为WebSockets和STOMP路由器 开始使用 下载。 打开包装。 启动service-proxy.sh或service-proxy.bat 。 看一下主要的配置文件conf/proxies.xml 。 对该文件的更改将立即部署。 运行示例文件夹中的示例,遵循或...

    SOAP协议规范——SOAP详解

    SOAP(Simple Object Access Protocol),即简单对象访问协议,是一种基于XML(Extensible Markup Language)的协议,用于在Web服务中传递结构化的和格式化的信息。SOAP允许应用程序通过HTTP(Hypertext Transfer ...

Global site tag (gtag.js) - Google Analytics