解读COM与CORBA(上)

原创 2001年08月03日 15:26:00
解读COM与CORBA(上)
技术解析
(作者:施晓军编译 2001年04月13日 13:53)

  COM (Common Object Model)有时被称为公共对象模型,微软官方则称之为组件对象模型(Component Object Model)。DCOM用于分布式计算,是微软开发设计的,作为对COM的一个扩展。CORBA (Common Object Request Broker Architecture)表示公共对象请求代理体系结构,是由对象管理工作组(OMG)开发的。COM/DCOM和CORBA都是用面向对象的方法,进行软件组件的开发和应用。它们是客户/服务器世界中,进行应用系统开发时的两个竞争对手。这些体系结构都支持分布式计算,并且提供对交互操作性和有限的可移植性的支持。在创建可扩展的客户/服务器系统时,分布式计算技术是必须的。由于这些分布式对象里面封装了数据和商业规则,因此,它们能存在于系统的任何部分。现在异构系统越来越普遍,这就导致分布式对象也变得越来越流行,并且,它们在连接异构系统时确实做得非常好。

  CORBA和DCOM都是被设计用于分布式对象的客户/服务器模式的通信。在这两种技术中,都是一个客户调用一个请求,该请求则由远方的一个对象来实现,远方的对象充当服务器的角色。提供服务的对象都有一个界面(interface,接口),该界面是通过界面定义语言(IDL)来定义的。由于界面的存在,使对象的实现过程对于客户是隐蔽的。CORBA 和COM都是通过RPC和引用远程对象的方法来实现的。这两种技术中,对数据类型的支持都局限于几种数据类型,这些数据类型被映射到多种程序设计语言中。

起源
  ●COM/DCOM

  COM/DCOM的前身OLE(Object Linking and Embedding,对象链接和嵌入)是用于在微软的WIN 3.1操作系统中链接文档。开发COM是为了在一个单一的地址空间中,动态地集成组件。COM为在一个单一的应用程序中复杂客户二元组件的动态使用提供支持。组件交互是基于 OLE2界面和协议的。虽然COM使用OLE2界面和协议,但我们也必须知道COM不是OLE。DCOM是COM的扩展,支持基于网络的交互,允许通过网络进行进程处理。

  ●CORBA

  公共对象请求代理体系结构是由对象管理工作组(OMG)开发的。OMG是由成千上百个公司组成的组织,他们致力于构建分布式对象计算的标准体系结构。CORBA基于对象管理体系结构,对象管理体系结构由OMG在1991年发布。CORBA为厂商提供一个标准框架,使他们使用不同的语言、操作系统、和硬件开发出来的应用系统,仍然具有可移植性和互操作性。

技术观点
  ●COM/DCOM

  COM允许客户调用服务,服务是由COM兼容的组件通过定义一个二元兼容规范和实现过程来提供的。COM兼容组件(COM对象)提供了一系列的界面,允许客户通过这些界面来调用相关的对象。


  COM定义了客户和对象之间的二元结构,并且作为用不同程序语言书写的组件之间的相互操作的基础,只要该语言的编译器支持微软的二元结构。

  COM对象可以具有复杂的界面,但是每一个类必须具有它自己唯一的类标识符(CLSID),并且它的界面必须具有全球唯一的标识符(GUID),以避免名字冲突。对象和界面是通过使用微软的IDL(界面定义语言)来定义的。COM体系结构不允许轻易地对界面作修改,这种方法有助于防止潜在的版本不兼容性。COM开发者,为了给对象提供新的功能,必须努力为对象创建新的界面。COM对象是在服务器内运行的,服务器为客户访问COM对象提供了三种方法。

  在服务器中处理(In-process server):客户和服务器在相同的内存处理进程中运行,并且通过使用功能调用的方法彼此通信。

  本地对象代理(Local Object Proxy):允许客户使用内部进程通信方法访问服务器,而服务器运行于同一物理机器的一个不同的进程中。这种内部进程通信方法也称为廋远程过程调用。

  远程代理对象(Remote Proxy Object):允许客户访问在另外机器上运行的远程服务器。客户和服务器的通信使用分布式计算环境RPC。 远程对象支持这种方法,被称为DCOM服务器。

  COM的两个主要的扩展:MTS 和MSMQ是由DCOM提供的。DCOM服务器对象支持多线程。MTS(Microsoft Transaction Server )运行于Windows NT Server,提供事务导向的进程,并且是基于DTC(Distributed Transaction Coordinator,分布式事务协调)的。MTS作为一个实时中间环境被包含于DCOM中,提供对MSMQ 的异步应用操作,以及针对RPC(Remote Procedure Call)的同步操作。DCOM中还内建了远程垃圾收集的功能,使之成为一个健壮的系统。

  ●CORBA

  CORBA被设计和架构为服务于用不同程序语言书写、运行于不同平台上的对象系统。CORBA依赖于ORB中间件在服务器和客户之间进行通信。ORB扮演一个透明地连接远程对象的对象。每个CORBA对象提供一界面,并且有一系列的方法与之相联。ORB负责为请求发现相应的实现,并且把请求传递给CORBA服务器。ORB为客户提供透明服务,客户永远都不需要知道远程对象的位置以及用何种语言实现的。


  CORBA是基于对象管理体系结构的(Object Management Architecture,即OMA),OMA为构建分布式应用定义了非常广泛的服务。OMA服务为划分为三层,分别称为CORBAServices, CORBAFacilities, 和 ApplicationObjects 。当应用程序需访问这些服务时,就需要ORB通信框架。这些服务在OMA中实际上是不同种类的对象的定义,并且为了支持分布式应用,定义了很广泛的功能。

  CORBAServices(CORBA服务):是开发分布式应用所必需的模块。这些服务提供异步事件管理,事务、持续、并发、名字、关系和生存周期的管理。

  CORBAFacilities(CORBA工具):对于开发分布式应用不是必须的,但是在某些情况下是有用的。这些工具提供信息管理、系统管理、任务管理和用户界面。

  ApplicationObjects(应用对象):主要为某一类应用或一个特定的应用提供服务。它们可以是基本服务、公共支持工具或特定应用服务。

  CORBA界面和数据类型是用OMG界面定义语言定义的。每个界面方法也是用OMG IDL定义的。IDL是CORBA体系结构的关键部分,它为CORBA和特定程序设计语言的数据类型之间提供映射。IDL也允许对原有代码实行封装。IDL是一个面向对象的界面定义语言,具有和C++相类似的语法。由于所有的界面都是通过IDL定义的,CORBA规范允许客户和对象用不同的程序设计语言书写,彼此的细节都是透明的。CORBA在不同对象请求代理之间使用IIOP(Internet Inter-ORB Protocol)进行通信,使用TCP作为网络通信协议。

  CORBA组件包括ORB核心,ORB界面,IDL存根,DLL(Dynamic Invocation Interface,动态调用界面),对象适配器,IDL骨架,DSI(Dynamic Skeleton Interface,动态骨架界面)。 CORBA运行结构(ORB核心)是由特定开发商决定的,不是由CORBA定义的。不管怎样,ORB界面是一个标准的功能界面,是由所有的CORBA兼容ORB提供的。IDL处理器为每个界面产生存根。这就屏蔽了低层次的通信,提供了较高层次的对象类型的特定API。DLL是相对于IDL存根的另一种方法,它为运行时构建请求提供了一个通用的方法。对象适配器,为把可选的对象技术集成进OMA提供支持。IDL骨架类似于IDL存根,但是,它们是工作于服务器端的(对象实现)。对象适配器发送请求给IDL骨架,然后,IDL骨架就为之调用合适的对象实现中的方法。

EJB、DCOM、CORBA 三种技术分析

---- 90年代出现的分布式对象技术为网络计算平台上软件的开发提供了强有力的解决方案。目前,分布式对象技术已经成为建立服务应用框架和软件构件的核心技术,在开发大型分布式应用系统中表现出强大的生命力,...
  • wzg1031
  • wzg1031
  • 2014年10月10日 10:32
  • 1201

解读COM与CORBA(下)

解读COM与CORBA(下)技术比较(作者:施晓军编译 2001年04月13日 13:53)  CORBA依赖于IIOP进行远程对象通信,DCOM则依赖于对象远程处理过程调用(ORPC)以达到相同的目...
  • yangmajituipo
  • yangmajituipo
  • 2001年08月03日 15:29
  • 761

CORBA、 EJB(JavaEE规范)、WebService比较

CORBA和EJB 1.工业标准: 都是。很多厂商共同遵守。 2.提供的基本支撑: (1)构件化: CORBA提供半自动的构件运行环境,开发人员除了开发构件还要开发POA(相当于Skel...
  • u010924834
  • u010924834
  • 2016年07月15日 11:06
  • 474

CORBA, C++ and Linux:

http://www.yolinux.com/TUTORIALS/CORBA.html
  • xinqingwuji
  • xinqingwuji
  • 2016年03月28日 18:04
  • 337

RMI, RPC, CORBA区别

RMI 和 RPC均可以均提供远程方法访问的基础通信和参数引用要求的串行化机制,RPC和RMI之间的一个重要差别是RPC用快速而不够可靠的UDP协议,RMI用低速而可靠的TCP/IP协议。另外 RMI...
  • AbnerChai
  • AbnerChai
  • 2012年06月14日 11:02
  • 2112

Corba 学习笔记 (一)

背景:项目上使用到了CORBA这个古老的东东,所以需要学习一下。 CORBA的一些资料,童鞋们可以自己看,我就不贴在这里了 > http://baike.baidu.com/view/153815.h...
  • wssiqi
  • wssiqi
  • 2015年11月10日 21:52
  • 4994

java中rmi和corba的区别

java中rmi和corba的区别:1、定义接口:rmi自己定义接口(interface)corba生成idl代码,然后使用idlj -fall name.idl生成接口和几个类文件2、启动服务:rm...
  • njchenyi
  • njchenyi
  • 2005年08月31日 03:48
  • 3994

分布式技术比较(RPC,CORBA,WebService)

1、RPC(Remote Procedure Call Protocol) RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型。面向过程 2、CORBA(Co...
  • after_
  • after_
  • 2014年01月07日 21:30
  • 1671

CORBA协议相关的概念

CORBA 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Manage...
  • wodeyuer125
  • wodeyuer125
  • 2015年04月26日 14:37
  • 721

CORBA技术及实例

CORBA是一种规范,它定义了分布式对象如何实现互操作。在WorldWideWeb盛行之前,特别是Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。 实际的CORB...
  • johnny_83
  • johnny_83
  • 2007年07月25日 06:07
  • 1262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解读COM与CORBA(上)
举报原因:
原因补充:

(最多只允许输入30个字)