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

REST和SOAP:谁更好,或者都好?

 
阅读更多

如今,Web开发者的可选技术相当之多;从简化的数据库访问技术,到易用的中间件服务包装技术,以及各种有趣的客户端软件等等,一应俱全。所有这些产品和工具,都是为了帮助Web开发者用最快的速度开发出最好的Web应用。

然而,拥有大量可选软件方案以及为Web应用的特定部分选用特定方案,都是具有挑战的事;而且,现在Web开发者必须持续跟踪各种不断变化着的标准与方法。

举个例子,Web服务技术就有SOAP(Simple Object Access Protocol,简单对象访问协议)和REST(Representational State Transfer,表示性状态转移)这两种方案。它们都是有效的方案,但在具体场合下采用哪种方案好,这要取决于Web开发者。

 

然而,SOAP作为一种古老的Web服务技术,短期内还不会退出历史舞台。而且,随着SOAP 1.2的出现,SOAP印象中的一些缺点已得到改进,采纳率和易用程度也都得到提高。另需注意的是,从W3C SOAP 1.2版开始,SOAP这一缩写不再代表Simple Object Access Protocol(简单对象访问协议),而是仅仅作为协议名称而已。

相对REST而言,SOAP 1.2多出一些开销,不过这些开销也带来了一些好处。首先,SOAP在三个方面离不开XML(Extensible Markup Language,可扩展标记语言):SOAP信封(envelope)是基于XML的,它定义了消息里有什么以及如何处理它;一套用于数据类型的编码规则;过程调用和响应的规划。SOAP信封由传输协议(HTTP/HTTPS)发出,RPC(Remote Procedure Call,远程过程调用)得到执行,然后一个XML文档随SOAP信封返回。

 

需要注意的是,基于“通用”传输协议是SOAP的一个优点。REST目前基于HTTP/HTTPS;而SOAP可支持任何传输协议,从HTTP/HTTPS到SMTP(Simple Mail Transfer Protocol,简单邮件传送协议),甚至JMS(Java Messaging Service,Java消息传递服务)。不过,由于XML较为冗长且解析费时,因此采用XML也成为一个弊端。

不过,对Web开发者来说的好消息是,目前上述两种方案都是行之有效的方案。REST和SOAP都能解决许多Web方面的问题与挑战,而且在许多情况下,它们各自都能满足开发者的要求,也就是说可互换使用。

但很多人不知道,这两种技术可以混合搭配使用。REST很好理解,且极易上手;不过由于它缺乏标准,因此只被看作是一种架构方法。与之相比,SOAP是一个工业标准,它具备良好定义的协议,以及一套良好确立的规则,在大型和小型系统中均有采用。

因此,REST的适用场合包括:

  • 有限的带宽和资源 别忘了返回的结构可以采用(由开发者定义的)任何格式。另外,由于REST采用标准的GETPUTPOSTDELETE动词,因此可被任何浏览器所支持。除此以外,REST还可以使用为目前大多数浏览器支持的XMLHttpRequest对象,这为AJAX增色不少。
  • 完全无状态的操作 对于那些需多步执行的操作,REST并非最佳选择,采用SOAP更合适。但是,如果你需要无状态的CRUD(Create/Read/Update/Delete,创建/读取/更新/删除)操作,那么应采用REST。
  • 缓存考虑 若要利用无状态操作的特性,使得信息可被缓存,那么REST是很好的选择。

以上已经覆盖很多方案了,那么,为什么还要考虑SOAP呢?正如前述,SOAP比较成熟而且是经过良好定义的,具有完整的规范。而REST只不过是一种方法,对开发未作任何规约;因此,假如你遇到以下场合,那么SOAP是最佳选择:

  • 异步处理与调用 如果你的应用需要确保可靠性与安全性,那么请采用SOAP。SOAP 1.2为确保这种操作补充定义了WSRM(WS-Reliable Messaging)等标准。
  • 形式化契约 若提供者/消费者双方必须就交换格式取得一致,那么采用SOAP更合适。SOAP 1.2为这种交互提供了严格的规范。
  • 有状态的操作 如果应用需要上下文信息与对话状态管理,那么应采用SOAP。SOAP 1.2为此补充定义了WS-Security、WS-Transactions和WS-Coordination等标准。相比之下,REST方法要求开发者自己来实现这些框架性工作。

正如你所看到的,REST和SOAP各自有其用武之地。它们在安全性和传输层等方面有着自己的潜在问题,不过它们都能完成任务,而且在许多情况下,它们都丰富了Web的技术手段。因此,就这一论题,其实最好的原则就是灵活性原则;因为至少在现今的Web开发中,无论面对何种问题,Web开发者们总有办法运用好这两种技术中的一种。

分享到:
评论

相关推荐

    SOAP:XML跨平台Web Service开发技术

    为了更好地理解SOAP的工作原理,下面给出一个简单的SOAP请求和响应的例子: - **SOAP请求示例**: ```xml <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> ...

    REST 基础(二):Web 服务编程,REST 与 SOAP

    在实践中,了解并掌握REST和SOAP的基本原理,以及相关的开发工具,能够帮助我们更好地设计和实现Web服务。同时,理解何时使用REST,何时选择SOAP,将有助于提高系统的效率和可维护性。无论选择哪种方法,重要的是...

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

    REST则以其简洁、直观的接口设计和更好的可扩展性受到现代Web服务的青睐。通过此项目,开发者可以将现有SOAP服务的接口转换成RESTful风格,使客户端应用能够更高效地与服务器进行通信。 【标签】"rest-api":REST ...

    soap和rest比较

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

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

    在IT行业中,Windows Communication Foundation(WCF)是微软推出的一种用于构建分布式应用程序的...通过学习和分析这些源码,开发者可以更好地掌握WCF服务的创建、配置和使用,为后续的Web服务开发打下坚实的基础。

    soap资料soap资料soap资料

    SOAP相比REST(Representational State Transfer),更注重强类型和契约式编程,具有更好的错误处理机制和安全特性。然而,REST通常更简单,更适合资源导向的架构,且更易于实现和消费。 8. **SOAP版本**: SOAP...

    soap-rest-attachments:如何在 Mule ESB 中通过 SOAP 和 REST 调用处理附件的 E2E 示例

    通过分析和运行这些示例,你可以更好地理解如何在实际环境中应用上述概念。 总的来说,Mule ESB 提供了一套全面的工具,使开发者能够有效地处理 SOAP 和 REST 通信中的文件附件。理解和掌握这些技术,对于在企业...

    REST WebService与SOAP WebService的比较.docx

    如果需要标准、健壮且跨平台的服务,SOAP 可能是更好的选择;如果追求简洁、高效且易于开发,REST 则更具优势。随着互联网的发展,REST 的普及程度越来越高,但也面临着标准化和统一性的挑战。未来,这两种技术可能...

    SOAP很好的学习资料

    掌握SOAP的基础知识,不仅可以帮助开发者更好地设计和实现分布式应用,还能促进对现代Web服务架构的理解。随着技术的发展,SOAP虽然面临着诸如REST等新兴协议的挑战,但它在某些场景下的优势仍然显著,值得深入学习...

    soap 文档,pdf 格式的

    SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务中交换结构化和类型化的信息。SOAP消息通常封装在HTTP协议中,允许不同系统...通过深入学习这些文档,开发者将能更好地理解和应用SOAP技术。

    一个支持SOAP11和12规范的PHP客户端

    这两个版本是SOAP的两个主要迭代,1.1是较早的标准,而1.2则引入了一些改进,如更清晰的XML模式定义、更好的错误处理机制以及更灵活的绑定选项。 标签“PHP开发-REST API”表明,尽管这个客户端主要关注SOAP,但...

    SOAP协议介绍

    SOAP 1.2在SOAP 1.1的基础上进行了改进,包括更清晰的语义定义、更好的错误处理机制以及对XML Schema的引用支持。 ### 4. SOAP与Web服务 Web服务是通过SOAP进行通信的应用程序,它们通过WSDL(Web Services ...

    webservice Soap和XFire2种方式代码列子

    SOAP更注重消息的完整性和安全性,适合企业级的、需要强类型和事务处理的场景。而REST则更轻量,基于HTTP协议,易于理解和实现,适合互联网应用的API设计。选择哪种方式取决于具体的应用需求和环境。 综上所述,...

    白话REST-识别真假REST

    REST(Representational State Transfer),即“表征...总结来说,REST是一种架构风格,它定义了一系列的约束条件,使得系统能够更好地适应Web的特性和环境。理解并正确应用这些约束条件是构建RESTful服务的关键所在。

    REST结构全面解析手册

    3. **互操作性**:REST的简单性和易用性使其具有更好的互操作性。SOAP由于其复杂的协议栈,可能在某些情况下更难实现跨平台互操作性。 4. **性能**:REST通常被认为比SOAP更轻量级,因此在性能方面具有优势。 5. *...

Global site tag (gtag.js) - Google Analytics