REST与SOAP
第63篇
最近遇到REST与SOAP的讨论,对于其中的具体含义不理解,于是找相关的资料了解一下。
1、什么是REST
REST:Representational State Transfer。『表现层状态转换』,是一种互联架构风格,是由Roy Thomas Fielding于2000年提出,兼容于这种风格(简称REST或RESTful)的网络服务可以称为 RESTful web service。
RESTful web service允许客户端使用统一且预定义的无状态操作方法来访问和操作Web资源的表现形式。
REST架构风格的特点
- Client–server architecture 客户端-服务器分离
请求由客户端单方面发起;用户界面和数据存储的分开可以提高界面的跨平台可移植性;分离架构更容易扩展,并且服务的部件可独立发展和升级。 - Statelessness 无状态性
客户端与服务器的会话状态全部由客户端负责,各请求之间不存在相互的状态依赖。 - Cacheability 可缓存
服务端的响应内容可以缓存,从而减少客户端和服务端的数据交互,进一步提高性能 - Layered system 分层
客户端无法判断是否直接连到了服务器还是通过代理连接的,所以中间层可以使用负载均衡或者提供共享缓存来提供可伸缩性,也可以用来部署安全策略。 - Uniform interface 统一接口
是RESTful系统设计的基础。简化并解耦了服务端架构,使得每个部件都可以独立发展升级。
2、什么人是SOAP
SOAP:Simple Object Access Protocol。『简单对象访问协议』 [1] ,是一种交换结构化数据的协议规范,由W3C制定,目前推荐版本是SOAP 1.2,这种协议使用XML定义其消息格式,并通过HTTP/SMTP进行消息传输。
3、REST与SOAP对比
风格VS协议
REST是一种思想,一种设计风格,而SAOP是一种协议。
标准HTTP方法 VS 自定义接口方法
RESTful Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 来抽象所有 Web 系统的服务能力,SOAP 应用都通过定义自己个性化的接口方法来抽象 Web 服务。
可复用HTTP缓存 VS 无法轻易缓存
REST 的应用可以充分地挖掘 HTTP 协议对缓存支持的能力,而SOAP因为无法查看SOAP请求的内容从而无法轻易实现缓存支持。
以资源为中心 VS 以操作为中心
RESTful Web服务是以资源为中心的,以URL定位所有可访问目标,对每个资源的操作都是标准化的HTTP方法,而SOAP的Web服务以操作为核心,每个操作的输入输出都通过XML文件实现。
3、RESTful Web服务与 SOAP Web服务的区别
RESTful架构SOAP架构
通过上面两张图可以明显看出两种Web服务的区别,比如HTTP方法的区别、响应的内容、资源的URL地址、服务端数据的存储方式。
4、参考文章和资料
Representational state transfer 维基百科
SOAP 维基百科
Web 服务编程,REST 与 SOAP
WebService的两种方式SOAP和REST比较
-
SOAP曾经代表“Simple Object Access Protocol”,但这种缩写已经在标准的1.2版后被废止了。1.2版中扩展了定义,SOAP也可以理解为 Service Oriented Architecture Protocol。 ↩