Restful与webService区别

首先需要了解:REST是一种架构风格,其核心是面向资源;而webService底层SOAP协议,主要核心是面向活动

RESTful是什么:

首先要了解什么是REST,REST就是(REpresentational State Transfer单词太长记不住就对了)是一种构架风格,REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或者设计就是RESTful,核心就是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性,为什么这么说,因为RESTful是无状态的,无状态是指任意一个web请求必须完全与其他请求隔离,是独立的,当请求端提出请求时,请求本身包含了这一请求的全部信息,这个约束提高系统的可伸缩性,可见性,可靠性。无状态优势就是在调用接口,操作资源的时候,可以不考虑上下文,不用考虑当前状态,降低复杂度。

WebService是什么:

WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。也就是说,你可以通过编程的方法通过Web来调用这个应用程序。它可以跨编程语言,跨操作系统平台的这么一个远程调用技术,采用SOAP(面向对象访问协议)协议传输。差不多就是这样,深入点的我也不是很清楚。


REST是一种架构风格,其核心是面向资源;WebService底层是SOAP协议,主要核心是面向活动。

1. 相关概念
1.1 SOAP
SOAP(Simple Object Access Protocol,简单对象访问协议):是一种基于XML的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME),基于“通用”传输协议是 SOAP的一个优点。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP提供了一系列的标准,如WSRM(WS-Reliable Messaging)形式化契约确保可靠性与安全性,确保异步处理与调用;WS-Security、WS-Transactions和WS-Coordination等标准提供了上下文信息与对话状态管理。

1.2 REST
REST(Representational State Transfer,描述性状态转移):REST是一种轻量级的Web Service架构风格,其实现和操作比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,这种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST架构尤其适用于完全无状态的CRUD(Create、Read、Update、Delete,创建、读取、更新、删除)操作。

基于REST的软件体系结构风格(Software Architecture Style)称之为面向资源体系架构(Resource-oriented Architecture,ROA)。按照REST原则设计的软件、体系结构,通常被称为“REST式的”(RESTful),在本文中以下称之为RESTful Web服务,以便于和基于SOAP的Web服务区别。

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

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

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

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

3.2 SOAP
SOAP偏向于面向活动,有严格的规范和标准,包括安全,事务等各个方面的内容。

SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义。

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

3.3 如何选择
如何确定使用REST:

若本身只是简单的CRUD业务操作,那么抽象资源就比较容易。
而对于复杂的业务活动抽象资源并不是一个简单的事情,比如校验用户等级,转账,事务处理等。
如何确定使用SOAP:

若有严格的规范和标准定义要求,且前期需要指导多个业务系统集成和开发的时,因SOAP风格有清晰的规范标准定义,SOAP更适合。
一句话:简单数据操作,无事务处理,开发和调用简单使用REST架构风格较好。

4. 比较
4.1 成熟度
总的来说SOAP在成熟度上优于REST
SOAP对于异构环境服务发布和调用,以及厂商的支持都已经达到了较为成熟的情况。

REST国外很多大网站都发布了自己的开发API,很多都提供了SOAP和REST两种Web Service,

但是由于REST只是一种基于Http协议实现资源操作的思想,因此各个网站的REST实现都自有一套。

REST实现的各种协议仅仅只能算是私有协议,当然需要遵循REST的思想。

4.2 效率和易用性
REST更胜一筹
SOAP协议对于消息体和消息头都有定义,同时消息头的可扩展性为各种互联网的标准提供了扩展的基础,

WS-*系列就是较为成功的规范。但是也由于SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP

处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。

REST被人们的重视,其实很大一方面也是因为其高效以及简洁易用的特性。

这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,

同时也最大限度的利用了Http最初的应用协议设计理念。

同时,REST很好的融合当前Web2.0的很多前端技术来提高开发效率。

例如:很多大型网站开放的REST风格的API都会有多种返回形式(XML,JSON,RSS,ATOM)等形式。

4.3 安全性
SOAP在安全方面使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,

当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持。

REST 开放REST风格API的网站主要分成两种:

一种是自定义了安全信息封装在消息中,

另外一种就是靠硬件SSL来保障,这只能够保证点到点的安全,如果是需要多点传输的话SSL就无能为力了。

安全这块其实也是一个很大的问题。

posted @ 2022-04-11 12:32  fredy0902  阅读(379)  评论(0编辑  收藏  举报