restful webservice SOAP webservice


为了说明这个问题,必须的纠正一下我们对HTTP的认识

首先回顾一下OSI七层模型

OSI(Open System Interconnection,开放系统互连)七层模型

7 应用层 

6 表示层 

5 会话层 

4 传输层 

3 网络层 

2 数据链路层 

1 物理层 

HTTP并不是一种传输层的“传输协议”(第四层),而是一种应用层的“转移协议”(最高层)。

SOAP类型的WebService就是最好的例子,SOAP消息完全就是将Http协议作为消息承载,

以至于对于Http协议中的各种参数(例如编码,错误码等)都置之不顾。
 其实,它有着非常丰富的语义,Http协议所抽象的get,post,put,delete就好比数据库中最基本的增删改查,而互联网上的各种资源就好比数据库中的记录。

restful webservice

Rest(Representional state transfer)
WEB的在世界范围类的普及和成功,人们从技术角度对它的总结,既--分布式架构,注意强调的是架构风格-architectural style.
是一种全新的Web开发思维方式, 一种基于Http协议来资源操作的思想,是基于URI来设计系统的架构。
那么它的特点主要由以下五点
1.面向资源(resource)
2.每个资源都对应唯一的URI uniform resource identifier
3.抽象资源的操作,使用通用连接接口来操作资源 (generic connector interface)
4.对资源的操作不会改变URI
5.所有的操作无状态 (stateless)
可以看出REST 抽象资源的操作跟HTTP 不谋而合,将Http协议的设计初衷作了诠释。



SOAP/WSDL webservice 

为了包装RPC(Remote Procedure Call) 的请求信息,推出了XML-RPC,但XML-RPC只能使用有限的数据类型种类和一些简单的数据结构。
于是就出现了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 目前没有任何说明。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。