`
daniel_tu
  • 浏览: 184192 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Web Services:REST还是SOAP?

    博客分类:
  • J2EE
阅读更多

[转自] http://heshun.org/?p=200

 

在实现web service的时候,接口风格是采用Rest还是SOAP呢?首先简单介绍一下REST:

什么是REST?

Rest的全称是Representational State Transfer(可表述的状态转移),这并不是一个新概念。它的基本含义是每个URL都唯一代表某个资源,针对这个资源的操作可以抽象为4种:创建,读 取,更改,删除,分别用HTTP的4个标准方法POST、GET、PUT、DELETE来对应(详见http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services ),出于简单实现的考虑,大多采用POST实现增删改,

REST的核心概念是Resource资源。任何一个资源都可以用一个唯一的URL来标识。基于RESTful的服务是用HTTP和REST原理的简单web service实现,它是一系列资源的集合,包括三个方面:

  • 以URI为基础,如http://heshun.org/items/;
  • web service所支持的MIME类型,如 JSON , XML 或者 YAML 。可以是任何有效的MIME类型;
  • 支持POST, GET, PUT 或者 DELETE这几种HTTP协议;

什么是SOAP?

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:SOAP封装(envelop),封装定义 了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。
WSDL(Web Service Description Language)Web 服务描述语言。在这之前,尚不存在一种机制,使一个业务能自动发现其预期伙伴提供的服务。而如今的电子商务需要一种解决方案来描述以下问题:

  • 您的在线业务提供什么服务?
  • 您如何调用业务服务?
  • 当用户调用您的业务服务时,该业务服务需要他/她提供什么信息?
  • 用户将如何提供这些必需信息?
  • 服务将以什么格式发送返回给用户的信息?

WSDL的使命就是试图来描述清楚以上这些问题,它使用XML来描述。底层通信采用HTTP。

谁在用REST?

现在使用REST风格的站点包括Yahooflickr 、del.icio.us API,Ebay和Amazon同时具有REST和SOAP接口。但在Amazon大约有85%的应用使用REST API,O’Reilly 的CEO Tim O’Reilly 也认为开发人员喜欢更简单的REST ,他说在复杂的场合的确用soap更适合,但他更喜欢入门门槛较低的易被广大用户人群使用的REST。

谁在用SOAP?

google的一些服务在使用SOAP,blogger还使用XML-RPC,还有很多的企业软件也用SOAP.

REST or SOAP?

REST的优点:

  • 轻量级,没有额外的XML标记;
  • 人类易理解的结果;
  • 容易组建,不需要特定的工具;
  • 松耦合,服务端方法的任何改变对客户的影响非常小;

SOAP的优点:

  • 支持复杂的数据类型,有严格的合约,能胜任复杂的场合;
  • 有相应的开发工具生成WSDL;

REST是面向资源的。而SOAP面向服务,每个请求都显式的指明了要调用的方法和参数,耦合度比较高,到底选择哪一种取决于开发人员是否方便开发(开发成本),以及是否具有良好的文档(英文原文:http://www.petefreitag.com/item/431.cfm )。另外,flickr同时具有REST和SOAP的API接口,提供的API文档也很丰富,有繁体中文版,将就着看吧。可以很直观的比较这两种实现的优劣,没有哪种绝对的适合,要结合实际的应用来考虑。

分享到:
评论

相关推荐

    webservices:REST和SOAP Web服务的用法说明

    网络服务 * 此示例项目处理针对rest和soap api的Web服务(客户端和服务器)的创建。 休息: - 取得JSON 获取文件POST FILE和POJO类开机自检文件肥皂: - 获取对象发布对象通过MTOM获取文件通过MTOM发布文件

    Web+Services:技术、架构和应用

    - **JAX-WS**(Java API for XML Web Services):Java平台上的Web服务标准,用于创建和消费SOAP Web服务。 - **.NET Framework**:微软提供的开发环境,支持创建和使用Web服务,包括WCF(Windows Communication ...

    Java.Web.Services:Up.and.Runnin

    - Web Services可以基于SOAP协议实现,也可以基于REST架构风格实现,两者在设计理念和通信协议上有所区别。 7. HTTP协议在Web Services中的作用 - HTTP作为一个协议,在Web Services中承担了核心角色,包括HTTP请求...

    Web Services with SOAP.

    Web服务是一种基于网络的、平台无关的交互方式,它允许不同的系统...O'Reilly的"Programming Web Services with SOAP"可能涵盖了这些主题的深入讨论,包括实践示例和最佳实践,帮助读者掌握SOAP Web服务的开发和应用。

    PHP.Web.Services.APIs.for.the.Modern.Web.2nd.Edition

    RPC and SOAP Services Chapter 8. REST Chapter 9. Webhooks Chapter 10. HTTP Tools Chapter 11. Maintainable Web Services Chapter 12. Making Service Design Decisions Chapter 13. Building a Robust ...

    Building RESTful Web Services with Go

    Building RESTful Web Services with Go:Initially, SOAP-based web services became more popular with XML. Then, since 2012,REST picked up the pace and gulped SOAP in whole. The rise of a new generation ...

    Web Services平台架构

    除了这些标准和框架,开发Web Services还需要理解REST(Representational State Transfer)风格的API,这是一种轻量级的替代方案,特别适合于资源导向的Web应用程序。Java通过JAX-RS(Java API for RESTful Web ...

    webservices:与 SOAP 和 REST 网络服务相关的 5 个任务

    网页服务与 SOAP 和 REST 网络服务相关的 5 个任务实验 1 - REST 实验 2 - SOAP 实验 3 - WSDL 操作、生成客户端、来自 wsdl 实验 4 的模式 - WSDL -> UDDI 实验 5 结合 REST 和 SOAP

    基于SOAP的Web-Services开发的关键技术_SOAP的Web-Services_Web-Services开发_

    5. **SOAP与WS-I(Web Services Interoperability)**:为了确保跨平台和跨语言的互操作性,WS-I定义了一系列最佳实践和规范,如Basic Profile和Advanced Profile,它们规定了SOAP、WSDL和UDDI的具体实现细节,以...

    JAVA访问WebServices接口的简单实例,android可用

    WebServices通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议,通过HTTP协议进行通信。SOAP是面向消息的协议,主要用于企业级应用,而REST则更为轻量级,适用于多种...

    WebServices学习资料

    ### WebServices学习资料:REST与SOAP技术概览 在当今的软件开发领域,Web Services扮演着连接不同系统、实现跨平台通信的关键角色。本文将基于提供的文件信息,深入探讨REST和SOAP两种主流的Web Services风格,...

    Java Web Services教程

    在Java中,JAX-WS(Java API for XML Web Services)框架是用于创建SOAP Web服务的主要工具。 其次,WSDL是定义Web服务接口的XML格式规范,它描述了服务提供的操作、消息格式以及服务的位置。开发者可以通过WSDL...

    SOAP.rar_SOAP java_Web Service SOAP_java soap_java web service_s

    在Java中,通常使用JAX-WS(Java API for XML Web Services)来处理SOAP消息,它提供了一种标准的方式来创建和消费Web服务。 4. **SOAP服务实现**:在Java中,可以通过实现一个接口或者继承特定的类来创建SOAP服务...

    西北工业大学软件工程WebServices实验报告

    **西北工业大学软件工程WebServices实验报告** Web Services是一种基于互联网的、平台独立的软件接口,它允许不同系统之间进行通信和交互。这个实验报告详细涵盖了Web Services的核心概念、技术栈以及在软件工程中...

    Webservices--自己简单的封装类

    Web服务(Webservices)是一种基于互联网的软件通信机制,允许不同系统间的应用程序进行交互和数据交换。在本文中,我们将深入探讨Web服务的核心概念、工作原理以及如何进行简单的封装。 1. **Web服务的基本概念** ...

    [JavaWeb服务:构建与运行].(Java.Web.Services:Up.and.Running).Martin.Kalin.文字版

    本书侧重于代码驱动的方法,介绍JAX-WS(Java API for XML-Web Services),这是Java Web服务的首选框架,无论是基于SOAP的还是REST风格的服务。作者提出对JAX-WS的广义理解,包含了如Jersey项目这样的前沿发展,这...

    Spring web services 2 cookbook

    2. REST和SOAP服务:Spring Web Services支持构建RESTful Web服务,同时也支持SOAP Web服务。读者将学习如何根据需要选择合适的通信协议,并实施相应的服务。 3. 安全性:在Web服务中,安全性是一个重要的方面。...

    Ajax调用webservices

    本文将深入探讨如何使用Ajax调用Web服务(Webservices),以实现客户端与服务器端的异步通信。 一、Ajax基础 Ajax的核心是JavaScript对象XMLHttpRequest,它提供了与服务器进行交互的能力。通过创建XMLHttpRequest...

Global site tag (gtag.js) - Google Analytics