Rest:

一种架构设计风格,提供了设计原则和约束条件

 

RPC:(远程过程调用)

是一种允许分布式应用程序调用网络上不同计算机的可用服务的机制

 

SOAP:(简单对象访问协议) xml-rpc (Simple Object Access Protocol)

是基于rpc的第三代远程调用

 

SOAP是交换数据的一种协议规范,是一种轻量的,简单的,

基于xml的协议规范。

SOAP最主要的工作就是使用xml描述了RPC的请求信息(URI/类/方法/参数/返回值)。

理论上soap就是一段xml,可以通过http,smtp等发送它,并且soap也是

跨语言的。

 

rest与soap的区别:

概念方面:

restful接口与soap接口是完全不同的两种数据通信接口,前者使用的是http协议

通信,请求的响应值可以是xml也可以是json。后者使用的是soap协议通信,

通信请求和响应都是xml,而且有wsdl作为请求和响应信息的标准。

 

核心不同:

rest是基于http之上建立的一种接口规范,核心是资源,soap是本身一种协议,

以xml格式传输,soap的web服务以操作为中心的。

 

协议方面:

restful使用标准的http方法(GET/PUT/POST/DELETE)来抽象web系统的服务

能力,soap应用都通过定义自己个性化的接口方法来抽象web服务。

 

安全控制方面:

代理服务器可以指定安全策略,一般代理服务器的实现根据(URI,HTTP Method)

两元组来决定HTTP请求的安全合法性。当发现DELETE这样请求是,予以拒绝。

对于soap如果我们想借助既有的代理服务器进行安全控制,会比较尴尬。因为代理

服务器需要解码soap的协议。显然这是不合理的。

 

缓存方面:

http GET请求被设计用来节省客户端与服务器之间网络传输带来的开销,

这也给客户端实现Cache机制提供了可能。Rest的应用可以充分地挖掘

http协议对缓存支持的能力,而所有经过缓存服务器的soap消息总是http post,

缓存服务器如果 不解码soap消息体,没法知道该http请求是否是想从服务器获得数据,

决定了基于soap应用的缓存机制要远比REST复杂。

 

总结:

基于rest构建的系统,其系统的扩展能力要强于soap,这可以体现在它的统一接口抽象,

代理服务器支持,缓存服务器支持等诸多方面。并且,伴随着web site as web services演进的

趋势,还有由于rest设计实现的简单性和强扩展性的特点,有理由相信,rest将会成为

web服务的一个重要架构实践领域。