分享
 
 
 

解读COM与CORBA(上)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

解读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骨架就为之调用合适的对象实现中的方法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有