SOA接口的两种经常使用实现比较:SOAP vs REST

SOA架构用于异构系统的协做,所以须要一种跨操做系统、跨语言的通用的消息交换格式。SOAP和REST都是基于文本的消息体,相比二进制消息而言具备跨平台的优点,所以被选做SOA接口的经常使用实现方法。但SOAP和REST又有各自不一样的特色和用途。web

SOAP:将HTTP协议做为传输层协议,本质是采用HTTP进行传输,使用XML封装消息内容的RPC调用。缓存

REST:REST并非一种协议,只是一种设计规范,该设计规范要求程序遵照HTTP协议最初设计的初衷,使用HTTP的GET/PUT/DELTET/POST对资源进行操做,REST接口是以URI资源为基础,对资源进行CRUD操做的接口。服务器

SOAP和REST的对比:架构

SOAP相对REST来讲较为重量级,因为采用XML格式的消息体,消息的有效负荷占比较REST经常使用的JSON少,不过XML较JSON来讲更容易为人阅读。工具

SOAP接口是自解释的,采用WSDL进行描述,程序能够基于WSDL进行解释并自动生成SOAP调用代码;REST接口只能经过接口文档进行描述,难以作到程序解释接口定义。开发工具

SOAP采用HTTP做为传输层协议,对HTTP协议来讲服务调用是透明的,防火墙上难以对SOAP进行细粒度的权限控制,也难以使用http的缓存机制提升效率。而REST是标准的HTTP访问,能够充分利用HTTP协议提供的一些好处,例如能够在防火墙上较好地进行权限控制(最小粒度能够基于每一个URL的CRUD操做),也能够充分利用缓存提升响应速度和系统的吞吐效率。ui

因为REST是标准的HTTP访问,其适用性更广,web应用,移动应用均可以在不使用第三方库的状况下方便地使用REST接口构造应用程序。操作系统

对于移动程序而言,因为REST的有效负荷占比高于SOAP的XML封装,采用REST接口能够下降程序使用的带宽。设计

根据REST设计原则,接口是无状态的,所以能够简单地经过对服务器进行水平扩展提高服务能力。接口

对于WEB Service而言,SOAP和REST各有千秋,SOAP有完善的标准规范和自动化开发工具,REST则更简单,对移动应用更友好。Oracle SOA Suite提供了将SOAP转换为REST接口的快捷方法,能够为已有的SOAP接口提供REST形式的封装,为web service同时提供SOAP和REST接口,是一个综合了各方面优势的完善的解决方案。

相关文章
相关标签/搜索