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

REST VS SOAP

 
阅读更多

REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。

 

REST提出设计概念和准则为:     

1.网络上的所有事物都可以被抽象为资源(resource)     

2.每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识     

3.所有的操作都是无状态的      

 

REST简化开发,其架构遵循CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建,获取,更新和删除就可以完成相关的操作和处理。您可以通过统一资源标识符(Universal Resource 搜索Identifier,URI)来识别和定位资源,并且针对这些资源而执行的操作是通过 HTTP 规范定义的。其核心操作只有GET,PUT,POST,DELETE。      

 

由于REST强制所有的操作都必须是stateless的,这就没有上下文的约束,如果做分布式,集群都不需要考虑上下文和会话保持的问题。极大的提高系统的可伸缩性。      

 

对于SOAP Webservice和Restful Webservice的选择问题,首先需要理解就是SOAP偏向于面向活动,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义。

而REST强调面向资源,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。

 

RESTful 应用问题      

是否使用REST就需要考虑资源本身的抽象和识别是否困难,如果本身就是简单的类似增删改查的业务操作,那么抽象资源就比较容易,而对于复杂的业务活动抽象资源并不是一个简单的事情。比如校验用户等级,转账,事务处理等,这些往往并不容易简单的抽象为资源。      

其次如果有严格的规范和标准定义要求,而且前期规范标准需要指导多个业务系统集成和开发的时候,SOAP风格由于有清晰的规范标准定义是明显有优势的。我们可以在开始和实现之前就严格定义相关的接口方法和接口传输数据。      

 

简单数据操作,无事务处理,开发和调用简单这些是使用REST架构风格的优势。而对于较为复杂的面向活动的服务,如果我们还是使用REST,很多时候都是仍然是传统的面向活动的思想通过转换工具再转换得到REST服务,这种使用方式是没有意义的。

 

效率和易用性     

SOAP协议对于消息体和消息头都有定义,同时消息头的可扩展性为各种互联网的标准提供了扩展的基础,WS-*系列就是较为成功的规范。但是也由于SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。     

REST被人们的重视,其实很大一方面也是因为其高效以及简洁易用的特性。这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。同时,在我看来REST还有一个很吸引开发者的就是能够很好的融合当前Web2.0的很多前端技术来提高开发效率。例如很多大型网站开放的REST风格的API都会有多种返回形式,除了传统的xml作为数据承载,还有(JSON,RSS,ATOM)等形式,这对很多网站前端开发人员来说就能够很好的mashup各种资源信息安全性      

 

技术没有好坏,只有是不是合适,一种好的技术和思想被误用了,那么就会得到反效果。REST和SOAP各自都有自己的优点,同时如果在一些场景下如果去改造REST,其实就会走向SOAP(例如安全)。      

 

REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。而SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。所以我觉得纯粹说什么设计模式将会占据主导地位没有什么意义,关键还是看应用场景。      

同时很重要一点就是不要扭曲了REST现在很多网站都跟风去开发REST风格的接口,其实都是在学其形,不知其心,最后弄得不伦不类,性能上不去,安全又保证不了。

 

成熟度      

SOAP虽然发展到现在已经脱离了初衷,但是对于异构环境服务发布和调用,以及厂商的支持都已经达到了较为成熟的情况。不同平台,开发语言之间通过SOAP来交互的Web service都能够较好的互通。      

由于没有类似于SOAP的权威性协议作为规范,REST实现的各种协议仅仅只能算是私有协议,当然需要遵循REST的思想,但是这样细节方面有太多没有约束的地方。REST日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力。

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

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

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

    SOAP vs REST WebService

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

    soap vs rest 图对比

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

    REST结构全面解析手册

    1. **REST vs SOAP**:REST是一种架构风格,而SOAP是一种具体的协议。REST应用程序可能使用SOAP协议,但在大多数情况下,REST应用程序更倾向于使用简单的HTTP协议进行数据交换。 2. **消息格式**:SOAP使用XML作为...

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

    【标题】"soap_to_rest_node:将SOAP转换为REST请求的项目"是一个旨在帮助开发者将传统的SOAP(简单对象访问协议)服务转换为更现代、更易于使用的REST(表述性状态转移)API的开源项目。该项目主要使用JavaScript...

    REST与SOAP WEB SERVICE的区别1

    【REST与SOAP WEB SERVICE的区别】 在Web服务领域,REST(Representational State Transfer)和SOAP(Simple Object Access Protocol)是两种常见的通信方式,它们各有特点,适用于不同的场景。REST以其简洁和直观...

    rest soap cxf webservice maven springmvc

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

    SOAP to REST_library_

    标题中的"SOAP to REST_library_"表明了我们讨论的主题是关于将SOAP(Simple Object Access Protocol)服务转换为REST(Representational State Transfer)服务的库或工具。SOAP是一种基于XML的协议,用于在Web上...

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

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

    soap和rest比较

    ### SOAP与REST的比较 #### 一、引言 在当今的互联网技术中,Web服务作为连接不同系统间的关键桥梁,扮演着极其重要的角色。在众多实现Web服务的技术方案中,SOAP(Simple Object Access Protocol)与REST...

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

    文件`rest(一种软件架构风格)_百度百科.url`和`SOA接口的两种常用实现比较:SOAP(WebService) vs REST(GET,POST).url`分别指向了关于REST和SOAP/REST比较的参考资料,它们可以进一步深入理解这两种接口实现的区别...

    Boomerang - SOAP & REST Client-7.7.6.zip

    名称:Boomerang - SOAP & REST Client -------------------- 版本:7.7.6 作者:https://boomerangapi.com/ 分类:开发者工具 -------------------- 概述:无缝集成和测试 SOAP 和 REST 服务。 描述: 无缝集成和...

    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 文件安装,如果提示“该扩展程序未列...

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

    在IT行业中,Windows Communication Foundation(WCF)是微软推出的一种用于构建分布式应用程序的服务框架,它集成了多种通信协议,如SOAP(简单对象访问协议)和REST(Representational State Transfer)。...

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

    在IT行业中,SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)是两种常见的Web服务接口设计风格,用于构建分布式系统,使不同应用程序能够相互通信。本项目"soap和rest的应用flickr...

    REST WebService与SOAP WebService的比较.docx

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

    SoapUI 32位的,测试REST/SOAP webservice神器

    soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。soapUI...

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

    膜服务代理 ... 作为API网关 作为安全代理 ...作为WebSockets和STOMP路由器 开始使用 下载。 打开包装。... 启动service-proxy.sh或service-proxy.bat 。... 看一下主要的配置文件conf/proxies.xml 。... 运行示例文件夹中的示例,...

Global site tag (gtag.js) - Google Analytics