CORBA是对象管理集团(OMG)的一个标准,使得不同语言编写的,运行在不同计算机上的能够协同工作。标准包括分布式计算的通讯协议(GIOP和IIOP),可映射到多种语言的接口描述语言(IDL),对象请求代理(ORB)以及相关服务,如生命周期,全局事务,持久性等。

SOA是以可互操作的服务的形式设计和开发软件的一系列原则和方法。SOQ是一种抽象的方法,和具体的技术无关,但是一般来说,涉及Web服务和企业服务总线(ESB)技术有关。下面比较SOA的异同时主要是指这两项技术。

  • Web服务是用来 支持网络中的机器对机器的互操作的软件系统。Web服务包括基于HTTP和XML的通信协议(SOAP)和服务接口描述语言(WSDL),以及服务查找接口(UDDI)
  • 企业服务总线(ESB)是用于设计和实现互交互软件应用之间的交互和通讯的软件体系架构模型。

Protocol Buffers(protobuf)是一种高效、可扩展的结构数据编码的方式。谷歌在所有的内部远程过程调用(RPC)和文件格式上 使用protobuf。protobuf可以将编程语言中的对象转换为可以在网络上发送的字节流。protobuf有自己的描述数据结构的语言,并提供一个编译器将该描述编译成编程语言中的对象,目前支持C++,Python,Java几种语言。

共同点
三者之间的共同点有:

  • 都是分布式计算环境下的技术。
  • 都是跨平台、跨语言的技术。
  • 都解决了对象的序列化和反序列化问题。
  • 都是与通信协议有关,IIOP,SOAP, protobuf 是三种不同的通信协议。
  • 都可以用来实现远程过程调用(RPC)
  • 都有描述数据结构的语言,如IDL,WSDL+XML Schema,protobuf的描述语言。

不同点
三者之间的差异有:

  • 分布式计算环境不同,CORBA所处的时代是局域网的时代,而SOA和protobuf都是互联网和万维网的时代。互联网的时代更为开放。
  • 对象的序列化的结果,SOAP使用文本格式,而protobuf,IIOP使用二进制格式。三者经历了从二进制到文本再到二进制的过程。从IIOP的二进制到SOAP使用的XML,追求的是互操作性,而从SOAP的XML到protobuf的二进制,追求的是性能。
  • 作为通信协议,protobuf仅关心对象的序列化和反序列化,而IIOP和SOAP还关心底层的通信协议,RPC的语义等。
  • CORBA和Web服务都可以实现远程过程调用,而protobuf需要与其他技术I来实现RPC( http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns#RPC_Implementations )。基于protobuf的不同RPC实现很难互操作。
  • CORBA和Web服务都是标准,而protobuf是一个具体的技术实现。
  • CORBA和Web服务都是重量级技术 ,而protobuf是一个轻量级技术。

在CORBA和SOA之间的差异有:

    • CORBA是一种组件技术,而Web服务是一种服务技术。相比而言,有以下差异:
      • 服务是粗粒度的,而组件是较细粒度的,对象是更细粒度的。
      • 服务有业务的含义,而组件可以没有。
      • 服务是松耦合的,而组件是较紧耦合的,对象是更紧耦合的。
      • 服务通常是无状态的,而组件和对象是有状态的。
      • 服务是实例化的,带有配置和环境的,而组件是静态的,未部署运行的。
    • SOA更强调互操作性。

------------------------------------------------------

Google的protocol buffers?这个跟corba、soa没啥关系,不同层次的概念,没法比。
protocol buffer:一种序列化协议
corba:对象间分布式通讯协议
SOA:一种架构风格/方式

http://www.zhihu.com/question/20279489

------------------------------------------------------

Window 下Qt怎么使用protocol buffer?

不知道你解决了没有,也不知道你还需不需要解决方案,但既然有这个问题,我就说一下,两种方法:1,.用QT构建一个类库工程,把protobuf的源代码放进去,用qmake编译,这样,最后就形成了可用的库。但是中途苦难重重,各种报错,不建议。
2.用CYGWIN/mingw+msys 编译protobuf库,是的,用CYGWIN编译最容易也最简单,因为需要的库和头文件都可以自行安装,而mingw+msys的libtools的更新速度赶不上protobuf的更新速度,有时候缺少头文件,编译会失败。
我用的第二种方案,编译成功后会有libprotobuf.a libprotobuf.dll.a等6个文件生成,注意接下来这一步很关键,在qt里面引用的时候LIBS += -Lxxxx/cygwin/usr/local/lib -lprotobuf 同时不要忘记加:INCLUDEPATH += xxxx/cygwin/usr/local/include不然依然会构建失败。

http://www.zhihu.com/question/20987397

protocol buffer和当年corba ,和现在SOA有啥异同点的更多相关文章

  1. Corba、protocol buffer、SOA的区别 (转)

    From: http://www.zhihu.com/question/20279489 Google的protocol buffers?这个跟corba.soa没啥关系,不同层次的概念,没法比.pr ...

  2. Protocol Buffer搭建及示例

    本文来源:http://www.tanhao.me/code/150911.html/ Protocol Buffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,与传统的XM ...

  3. 从零开始山寨Caffe·伍:Protocol Buffer简易指南

    你为Class外访问private对象而苦恼嘛?你为设计序列化格式而头疼嘛? ——欢迎体验Google Protocol Buffer 面向对象之封装性 历史遗留问题 面向对象中最矛盾的一个特性,就是 ...

  4. [原创翻译]Protocol Buffer Basics: C#

    Protocol Buffer 基础知识:c#    原文地址:https://developers.google.com/protocol-buffers/docs/csharptutorial   ...

  5. Google Protocol Buffer 的使用和原理[转]

    本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...

  6. Google Protocol Buffer 的使用

    简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...

  7. 学习Google Protocol buffer之语法

    上一篇结尾的时候问了几个问题,其实主要就是这个protoBuffer协议的语法,弄清楚语法后边才好开展工作嘛,不然大眼而对小眼儿,互相不认识,就没法玩耍了.其实就是学习怎么用google提供的这套 p ...

  8. 学习Google Protocol buffer之概述

    XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下 ...

  9. Google Protocol Buffer 简单介绍

    以下内容主要整理自官方文档. 为什么使用 Protocol Buffers .proto文件 Protocol Buffers 语法 编译.proto文件 Protocol Buffers API 枚 ...

随机推荐

  1. Guice学习(一)

    Guice学习(一) Guice是Google开发的一个轻量级依赖注入框架(IOC).Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,A ...

  2. 详述iOS国际化

    在真正将国际化实践前,只知道通过NSLocalizedString方法将相应语言的字符串加载进来即可.但最近公司项目的新需求增加英文版本,并支持应用内无死角切换~,这才跳过各种坑实现了应用内切换语言, ...

  3. Windows下用C语言获取进程cpu使用率,内存使用,IO情况

      #ifndef PROCESS_STAT_H #define PROCESS_STAT_H   #ifdef __cplusplus extern “C” { #endif   typedef l ...

  4. Java Performance Optimization Tools and Techniques for Turbocharged Apps--reference

    Java Performance Optimization by: Pierre-Hugues Charbonneau reference:http://refcardz.dzone.com/refc ...

  5. 开启mysql慢查询日志并使用mysqldumpslow命令查看

    mysql服务器有一项功能,可以检测到哪条sql语句查询得比较慢,就是慢查询slowlog,现在介绍如何开启. 在[mysqld]下面增加如下代码: long_query_time = 1 log-s ...

  6. Android学习手记(4) BroadcastReceiver监听电池信息

    Android 中,Broadcast是一种在应用程序之间进行传输信息的机制.BroadcastReceiver对发送过来的Broadcast进行过滤和响应.根据这种机制,我们可以获取电池现有电量等信 ...

  7. 马士兵SVN.

    下载 服务端:VisualSVN Server 和客户端:TortoiseSVN cmd,并cd 到 VisualSVN Server安装目录下的bin目录. 新建库: svnadmin create ...

  8. iOS 天气应用代码中文介绍

    天气应用 解释请求参数 q: 表示Location(可以给出城市名字;或者直接给城市的经纬度) 例子:q=beijing 例子 q=48.834,2.394 num_of_days: 需要预报的天数 ...

  9. 【C++学习之路】派生类的构造函数(三)

    三.多层继承的派生类 1.多层继承的派生类只需在构造函数的初始化列表中写出直接基类的构造函数即可 class student { public: student(int n, string nam) ...

  10. 标准SQL语言的用法

    原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94 ...