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. Java并发编程:Future接口、FutureTask类

    在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就 ...

  2. HDU1247 Hat’s Words 【trie树】

    Hat's Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. ListView的优化

    1. ListView须要设置adapter,它的item是通过adapter的方法getView(int position, View convertView, ViewGroup parent)获 ...

  4. [Unit Testing] Angular Unit Testing, ui-router, httpbackend and spy

    // backend test beforeEach(inject(function (_$compile_, _$httpBackend_, _$rootScope_, _$state_, _Ann ...

  5. logcat使用

    做android有些日子了,只是对主要的logcat的具体使用方法还是非常模糊,今天有空,学习一下. logcat能够在adb中使用,也能够直接在命令行下使用. logcat [options] [f ...

  6. Linux 磁盘挂载和mount共享

      针对Linux服务器的磁盘挂载mount和共享做简单操作说明: 1.  查看已使用的磁盘情况 df –h 2.  查看所有磁盘 fdisk –l 3.  查看指定磁盘“/dev/xvde”的分区情 ...

  7. js通用对象数组冒牌排序

    数组对象通用 function sort(data, sortFiled, orderby) { var result = data, temp; for (var i = 0; i < res ...

  8. Windows与自定义USB HID设备通信说明.

    1 .   所使用的典型 Windows API CreateFile ReadFile WriteFile 以下函数是 DDK 的内容: HidD_SetFeature HidD_GetFeatur ...

  9. java反射机制 struts2 获取 action、method、invocation、proxy

    ActionInvocation invocation = ActionContext.getContext().getActionInvocation(); Object action = invo ...

  10. jQuery验证框架 .

          目录视图 摘要视图 订阅 “程序人生”中国软件开发者职业生涯调查     CSDN社区“三八节”特别活动      开发者职业生涯调查之未来 jQuery验证框架 分类: JQuery 2 ...