为了说明这个问题,必须的纠正一下咱们对HTTP的认识。前端
首先回顾一下OSI七层模型web
OSI(Open System Interconnection,开放系统互连)七层模型数据库
7 应用层 安全
6 表示层 restful
5 会话层 网络
4 传输层 数据结构
3 网络层 架构
2 数据链路层 less
1 物理层 分布式
HTTP并非一种传输层的“传输协议”(第四层),而是一种应用层的“转移协议”(最高层)。
SOAP类型的WebService就是最好的例子,SOAP消息彻底就是将Http协议做为消息承载,
以致于对于Http协议中的各类参数(例如编码,错误码等)都置之不顾。
Rest(Representional state transfer)
其实,它有着很是丰富的语义,Http协议所抽象的get,post,put,delete就比如数据库中最基本的增删改查,而互联网上的各类资源就比如数据库中的记录。
restful webservice
WEB的在世界范围类的普及和成功,人们从技术角度对它的总结,既--分布式架构,注意强调的是架构风格-architectural style.
是一种全新的Web开发思惟方式, 一种基于Http协议来资源操做的思想,是基于URI来设计系统的架构。
那么它的特色主要由如下五点
1.面向资源(resource)
2.每一个资源都对应惟一的URI uniform resource identifier
3.抽象资源的操做,使用通用链接接口来操做资源 (generic connector interface)
4.对资源的操做不会改变URI
5.全部的操做无状态 (stateless)
能够看出REST 抽象资源的操做跟HTTP 不谋而合,将Http协议的设计初衷做了诠释。为了包装RPC(Remote Procedure Call) 的请求信息,推出了XML-RPC,但XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。
SOAP/WSDL webservice
因而就出现了SOAP
SOAP(Simple Object Access Protocol) 是基于 XML 的结构化数据交换。SOAP能够和多种传输协议绑定(Binding),如包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)使用底层协议交换信息,如: HTTP。
理论上,SOAP就是一段xml,你能够经过HTTP,SMTP等发送它(复制到软盘上,叫快递公司送去也行)。
SOAP跟HTTP 的关系
SOAP在HTTP协议的基础之上,一个基于XML的协议。即HTTP + XML = SOAP或者说 SOAP方式是一个遵守SOAP编码规则的HTTP请求/响应。
WSDL
WSDL是基于SOAP通讯时的描述语言,WSDL是用来描述SOAP的,也是一段xml。
那么,咱们能够从如下几个方面去比较它们的优劣
1.成熟,规范
SOAP 比REST 成熟,规范,受到不少厂商的支持,REST 只是提供了思想,因此你们还处在各自为战的局面。
2.伸缩性
REST 是基于HTTP协议实现资源操做,大大的下降了开发复杂度和伸缩性。
3.效率,易用
SOAP根据需求在不断的扩展协议的内容,致使处理性能降低,学习成本上升。而REST 采用 ROA(Resource-Oriented Architecture,面向资源的体系架构)进行设计而且融合WEB2.0前端技术,提升了开发效率。
4.安全性
SOAP 采用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制,REST 目前没有任何说明。