五、分布式对象技术-- COM、Java和COBRA之间特性比较
目前国际上,分布式对象技术有三大流派-- COBRA、COM/DCOM和Java。CORBA技术是最早出现的,1991年OMG颁布了COBRA 1.0标准,在当时来说做得非常漂亮;再有就是Microsoft的COM系列,从最初的COM发展成现在的DCOM,形成了Microsoft一套分布式对象的计算平台;而Sun公司的Java平台,在其最早推出的时候,只提供了远程的方法调用,在当时并不能被称为分布式对象计算,只是属于网络计算里的一种,接着推出的JavaBean,也还不足以和上述两大流派抗衡,而其目前的版本叫J2EE,推出了EJB,除了语言外还有组件的标准以及组件之间协同工作通讯的框架。于是,也就形成了目前的三大流派。
应该说,这三者之中,COBRA标准是做的最漂亮的。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的"软总线";在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。总之,CORBA的特点是大而全,互操作性和开放性非常好。目前CORBA的版本是2.3。CORBA 3.0也已完成了,增加了有关Internet集成和QoS控制等内容。CORBA的缺点是庞大而复杂,并且技术和标准的更新相对较慢,COBRA规范从1.0升级到2.0所花的时间非常短,而再往上的版本的发布就相对十分缓慢了。
相比之下,Java标准的制订就快得多,Java是Sun公司自己定的,演变的很快。Java的优势是纯语言的,跨平台性非常好。Java分布对象技术通常指远程方法调用(RMI)和企业级JavaBean(EJB)。RMI提供了一个Java对象远程调用另一Java对象的方法的能力,与传统RPC类似,只能支持初级的分布对象互操作。Sun公司于是基于RMI,提出了EJB。基于Java服务器端组件模型,EJB框架提供了像远程访问、安全、交易、持久和生命期管理等多种支持分布对象计算的服务。目前,Java技术和CORBA技术有融合的趋势。
COM技术是Microsoft独家做的,是在Windows 3.1中最初为支持复合文档而使用OLE技术上发展而来,经历了OLE 2/COM、ActiveX、DCOM和COM+等几个阶段,目前COM+把消息通讯模块MSMQ和解决关键业务的交易模块MTS都加进去了,是分布对象计算的一个比较完整的平台。Microsoft的COM平台效率比较高,同时它有一系列相应的开发工具支持,应用开发相对简单。但它有一个致命的弱点就是COM的跨平台性较差,如何实现与第三方厂商的互操作性始终是它的一大问题。从分布对象技术发展的角度来看,大多数人认为COM竞争不过COBRA。
下面是三者在集成性和可用性方面的比较:
·CORBA/ORB ActiveX/DCOM EJB/RMI
·集成性:
·支持跨语言操作 好 好 一般
·支持跨平台操作 好 一般 好
·网络通讯 好 一般 好
·公共服务构件 好 一般 好
可用性:
·事务处理 好 一般 一般
·消息服务 一般 一般 一般
·安全服务 好 一般 好
·目录服务 好 一般 一般
·容错性 一般 一般 一般
·产品成熟性 一般 一般 一般
·软件开发商的支持度 一般 好 好
·可扩展性 好 一般 好
六、CORBA应用前景
CORBA规范的推出,重新调整了客户机与服务器之间的关系。客户机可以向服务器提出事务请求,同时也可以为下一个请求充当服务器角色。
由于CORBA系统引入了中间件的概念,即事务代理,由中间件完成客户机与服务器之间的通信,使得服务器对于客户机的位置相对透明,取消了原有分布式计算模型中客户机、服务器之间的一一对应关系。CORBA客户机可以在运行时动态获得服务对象的位置,并且可以对多个服务对象提交事务请求,因此,极大推动了分布计算的发展。
分布计算是指网络中两个或两个以上的软件相互共享信息资源。这些软件可以位于同一台计算机中,也可以部署在网络节点的任意位置。基于分布式模型的软件系统具有均衡运行系统负载、共享网络资源的技术优势。
另外,CORBA规范约束采用面向对象的分布式软件的构造方法,以接口定义语言的形式实现对象内部细节的完整封装,从而降低了软件系统的复杂程度,增加了软件功能的可重用性。CORBA提供到C/C++、Java、SmallTalk等高级语言的映射,很大程度地减小了对程序设计语言的依赖性,使软件开发人员可以在较大范围内共享已有成果。
正是以上特点推动了分布式多层软件体系结构的发展。目前,CORBA技术在银行、电信、保险、电力和电子商务领域都有广泛的应用。对象中间件技术发展迅速,各大软硬件厂商都在积极参与有关标准的制定和产品开发工作,像IBM、HP、DEC、AT&T、ICL、Microsoft等都制定了相应的战略。许多对象中间件的专门厂商也相继诞生,未来的对象中间件市场将会出现群雄逐鹿的局面。
附:学习CORBA应理解的一些基本概念
1、CORBA(Common Object Request Broker Architecture)公共对象请求代理程序体系结构)。CORBA是一个规范(specification)而不是程序实现(implementation)。它提供了一个允许在分布式和异构型环境中应用程序之间进行互操作的框架。
2、ORB(Object Request Broker)对象请求代理:它作为一个"软件总线"来连接网络上的不同对象,提供对象的定位和方法调用,它是CORBA实现的关键。
3、OA(Object Adapter)对象适配器:用于构造对象实现与ORB之间的接口。它给框架发送方法,调用并且支持服务器对象的生命周期(如:对象的创建和删除)。
4、BOA(Basic Object Adapter)基本对象适配器:负责激活对象,即当客户请求对象的服务时,激活对象实现的能力。
5、POA(Portable Object Adapter)可移植对象适配器:是BOA的替代方式,提供大量可扩展的接口,来处理一些对于BOA来说不合理的要求。特性:
(1)支持透明激活对象。
(2)允许单个服务者支持很多对象标识。
(3)允许一个服务者上有多个POA,每个都有自己的一套管理策略。
(4)将对不存在服务者的请求委托给默认服务者,或者向服务者的管理器请求一个合适的服务者。
6、DII(Dynamic Invocation Interface)动态调用接口:位于客户端,发送客户端的调用请求。
7、DSI(Dynamic Skeleton Interface)动态框架接口,位于服务器端,传送客户端的调用请求。
8、IDL(Interface Definition Language)接口定义语言:定义客户和服务器之间的静态接口,通过编译器生成客户存根、服务器框架,以及根据支持的语言映射,自动生成来自一个CORBA IDL的代码。目前支持的语言映射包括:Java,C++,Ada,SmallTalk和COBOL等。
9、SII(Static Invocation Interface)静态调用接口:位于客户端,客户与ORB之间的静态接口。
10、SSI(Static Skeleton Interface)静态框架接口:位于服务器端,ORB与服务器之间的静态接口。
11、stub 存根:位于客户端,由IDL编译器编译IDL文件生成,其功能类似一个客户代理。
12、skeleton 框架:位于服务器端,由IDL编译器编译IDL文件生成,其功能是负责发送一个操作调用给能实现此操作的服务。
13、IR(Interface Repository)接口存储库:存储运行时所需要的IDL规范。
14、IMR(Implementation Repository)实现存储库:存储对象实现(一个服务器)的详细信息(即一个执行程序需要被放置在哪一个服务器上)。
15、GIOP(General Inter-ORB Protocol)通用ORB之间的协议:定义了一个不同ORB之间的接口。
16、IIOP(Internet Inter-ORB Protocol)因特网ORB之间的协议:IIOP把GIOP消息数据映射为TCP/IP连接行为和输入/输出流读/写。
注意:IIOP不是完全从GIOP分离出来的协议,它更像是GIOP的一个实例。
17、IOR(Interoperable Object Reference)可操作对象引用:它包括所有客户与服务器联系所需的各种信息(包括CORBA服务器对象进程的IP地址和TCP端口等),ORB将通过它产生在网络上唯一标识那个将被分布对象的消息。
18、ORBAservices-- CORBA服务:在ORB级别之上,定义了大多数分布式企业对象利用的公共服务。
如:命名服务、交易对象服务、关系服务、生命周期服务、外表化服务、持久性服务、查询服务、对象集合服务、属性服务、事件服务、许可证服务、时间服务、事务服务、并发控制服务和安全服务等
19、CORBAfacilities-- CORBA工厂:位于CORBAservices之上,定义了更高层次的分步式服务与框架。如:打印、电子邮件、文档管理等。
