原文链接:http://blog.csdn.net/zhaohuabing/article/details/39643127

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

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操作),也可以充分利用缓存提高响应速度和系统的吞吐效率。
  • 由于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接口,是一个综合了各方面优点的完善的解决方案。

[转]SOA接口的两种常用实现比较:SOAP vs REST的更多相关文章

  1. Windows校验文件哈希hash的两种常用方式

    大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像 ...

  2. Spring Cloud Config采用Git存储时两种常用的配置策略

    由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略.即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就 ...

  3. 两种常用的jquery事件加载的方法 的区别

    两种常用的jquery事件加载的方法   $(function(){});  window.onload=function(){}  第一个呢,是在DOM结构渲染完成以后调用的,这时候网页中一些资源还 ...

  4. jsp中 RequestDispatcher接口的两种跳转:forward()和include()

    在web程序中,经常是由多个Servlet来完成请求.RequestDispatcher接口就是为了多个Servlet之间的调整而实现的.该接口可以用httpSerbletRequest的getReq ...

  5. iOS- 网络访问两种常用方式【GET & POST】实现的几个主要步骤

    1.前言 上次,在博客里谈谈了[GET & POST]的区别,这次准备主要是分享一下自己对[GET & POST]的理解和实现的主要步骤. 在这就不多废话了,直接进主题,有什么不足的欢 ...

  6. iOS- 网络请求的两种常用方式【GET & POST】的区别

    GET和POST 网络请求的两种常用方式的实现[GET & POST] –GET的语义是获取指定URL上的资源 –将数据按照variable=value的形式,添加到action所指向的URL ...

  7. 说一说Web开发中两种常用的分层架构及其对应的代码模型

    昨天妹子让我帮她解决个问题,本以为可以轻松搞定,但是打开他们项目的一瞬间,我头皮发麻.本身功能不多的一个小项目,解决方案里竟然有几十个类库.仅仅搞明白各个类库的作用,代码层次之间的引用关系就花了一个多 ...

  8. C#动态调用WCF接口,两种方式任你选。

    写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...

  9. 两种常用的全排列算法(java)

    问题:给出一个字符串,输出所有可能的排列. 全排列有多种算法,此处仅介绍常用的两种:字典序法和递归法. 1.字典序法: 如何计算字符串的下一个排列了?来考虑"926520"这个字符 ...

随机推荐

  1. Cognos10.2.1配置加密信息不能被加密

    好奇心害死猫,可是我不是猫.这个问题已经不是第一次出现了,之前是从10.1.1到10.2.0出现的,这次是从10.2.0到10.2.1出现的,上次由于时间的问题被搁置了,这次竟然再次遇到同样的问题,已 ...

  2. Hidden Markov Model Toolbox for Matlab

    官网:http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html Download Click here. Unziping creates a direc ...

  3. busybox hexdump 命令使用

    http://blog.sina.com.cn/s/blog_a6559d920101gvlk.html hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别 ...

  4. springmvc 入门(1)

    1.1 Springmvc 本套课程基于spring4.X来讲解的 SpringMVC 概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的 MVC 框架之一 ...

  5. 全栈project师体能备战--知识面(10--20)

    WCF Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,能够翻译为Windows 通讯开发平台. 对于 WCF 的client ...

  6. 对固态硬盘ssd进行4k对齐

    别让SSD成半吊子!你真的4K对齐了吗? http://ssd.zol.com.cn/537/5374950_all.html SSD固态硬盘一键分区后如何检测4K对齐? http://pcedu.p ...

  7. (一)struts2入门——登陆验证熟悉struts2部署

    0.了解 Struts(支柱.支干)是什么? Struts是流行和成熟的基于MVC设计模式的Web应用程序框架.使用它能帮助我们减少在运用MVC设计模型来开发Web应用时间. 为什么2.1.3之后用S ...

  8. 火狐浏览器(firefox)中js要注意的问题

    1.出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因. 添加   async  : false  , -> async. 默认是 true,即为异步方式,$.aja ...

  9. 【 Linux 】单台服务器上并发TCP连接数(转)

    单台服务器上并发TCP连接数    问题:一台服务器到底能够支持多少TCP并发连接呢? 1. 文件描述符限制:    对于服务器来说,每一个TCP连接都要占用一个文件描述符,一旦文件描述符使用完,新的 ...

  10. FPGA管脚分配文件保存方法

    使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment -> Pins,打开F ...