restful webservice SOAP webservice
为了说明这个问题,必须的纠正一下我们对HTTP的认识。
首先回顾一下OSI七层模型
OSI(Open System Interconnection,开放系统互连)七层模型
7 应用层
6 表示层
5 会话层
4 传输层
3 网络层
2 数据链路层
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 目前没有任何说明。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。