REST ful Web Service是什么?

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架构风格。

REST ful 应用问题

是否使用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日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力。

转载于:https://www.cnblogs.com/lilongsheng1125/p/4978495.html

Web Service 与 RESTful Web Service比较相关推荐

  1. 在GlassFish应用服务器上创建并运行你的第一个Restful Web Service【翻译】

    前言 本人一直开发Android应用,目前Android就业形势恶劣,甚至会一路下滑,因此决定学习服务器开发.采用的语言是java,IDE是Intellij,在下载Intellij的同时看到官网很多优 ...

  2. RESTful Web Service 架构剖析

    如今微服务和分布式架构变的越来越流行,而简单,可靠,高效,跨平台和跨语言的 Web Service 则是这类系统架构的基石. RESTful Web Service 恰好满足这些特点,被越来越多的系统 ...

  3. WCF实现RESTFul Web Service(三):RESTful WebService VS SOAP WebService

    SOAP SOAP最早是针对RPC的一种解决方案,简单对象访问协议,很轻量,同时作为应用协议可以基于多种传输协议来传递消息(Http,SMTP等).但是随着SOAP作为WebService的广泛应用, ...

  4. RESTful Web Services初探

    RESTful Web Services初探 作者:杜刚 近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTf ...

  5. 我所理解的RESTful Web API [设计篇]

    <我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建 ...

  6. RESTful  Web APIs设计风格

    RESTful  Web APIs设计风格 RESTful(Representational State Transfer,简称REST)是一种网络Web程序的设计风格和开发方式. 一.RESTful ...

  7. 带有Jersey的JAX-RS教程,用于RESTful Web服务

    在当今世界,数据扮演着非常重要的角色. 如此众多的应用程序将各种类型的数据用于不同的操作,所以最重要的方面是应用程序之间的通信. 当应用程序可以通信时,它们之间的数据共享变得容易. 就像在亚洲运行的应 ...

  8. 我所理解的RESTful Web API [Web标准篇]

    REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...

  9. WCF实现RESTFul Web Service

    共同学习了前面一些概念,终于开始正题了哈.RESTful的Web Service调用直观,返回的内容容易解析.这里先会描述一个简单的场景--Web Service提供一个方法来搜索个人信息,传入人名, ...

最新文章

  1. 桌面虚拟化之资源分配
  2. ssh 免密码登录(设置后仍需输密码的原因及解决方法)
  3. 16.16. 部分排序
  4. OpenCV:详解掩膜mask
  5. JS-为金额添加千分位逗号分割符
  6. “新基建”下,真正的数字化转型是这样的?有内味了
  7. php 自己电脑运行内存,php 统计网页打开耗时和脚本运行内存
  8. Python接口自动化之接口依赖
  9. 基于JDBC的数据库连接池高效管理策略
  10. PHP+MYSQL+AJAX实现每日签到功能
  11. Atitit 艺术与编程艺术 项目工程艺术 1. 艺术可以分为造型艺术、表演艺术、综合艺术和语言艺术四大类。 1 2. 造型艺术 10 2 2.1. (一) 绘画和雕塑  11 2 2.2. (二
  12. 瀑布模型、V模型、原型模型、增量模型、螺旋模型、喷泉模型
  13. 姚舜:格力董明珠,一个女人的狼子野心
  14. 小牛电动车能跑多快、多远?一起来了解一下
  15. 第二十九章、containers容器类部件QFrame框架部件详解
  16. strut2 上传文件
  17. Linux音视频学习--常见的音视频传输协议及基本概念介绍
  18. 目标规划之问题数学化(建模)
  19. C#下usb条码扫描枪的钩子实现的改进
  20. 专门为某种用途设计的计算机称为,专门为某种用途而设计的计算机,称为( )计算机。...

热门文章

  1. 【Dynamics AX 6】axmodel新特性
  2. Go语言 命令行解析(一)
  3. [图像处理] 直方图均衡化原理 - 数学推导
  4. Linux常用命令: zip、unzip 压缩和解压缩命令
  5. 关于IPv4设置一些常见问题的解答
  6. css背景图片、圆角、盒子阴影、浮动
  7. Spring-----多环境中加载资源配置文件
  8. Sql Server 在数据库中所有表所有栏位 找出匹配某个值的脚本(转)
  9. 妈的,混蛋 wfopen_s 函数
  10. echarts 图表配置tooltip 的formatter