EJB、DCOM、CORBA
---- 90年代出现的分布式对象技术为网络计算平台上软件的开发提供了强有力的解决方案。目前,分布式对象技术已经成为建立服务应用框架和软件构件的核心技术,在开发大型分布式应用系统中表现出强大的生命力,逐渐形成了3种具有代表性的主流技术,即Microsoft的COM/DCOM技术、Sun公司的Java技术和OMG的COBRA技术。本期访谈,中国科学院软件研究所对象技术研究开发中心李京主任将带我们一起去看看——
分布对象技术的新进展
本刊记者 郭弘
---- 问:分布对象技术是如何产生出来的呢?它的概念是什么?
---- 答:应该说,分布对象技术是伴随网络而发展起来的一种面向对象的技术。以前的计算机系统多是单机系统,多个用户是通过联机终端来访问的,没有网络的概念。网络出现后,产生了Client/Server的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等等。随着网络的更进一步发展,许多软件需要在不同厂家的网络产品、硬件平台、网络协议异构环境下运行,应用的规模也从局域网发展到广域网。在这种情况下,Client/Server模式的局限性也就暴露出来了,于是中间件应运而生。中间件是位于操作系统和应用软件之间的通用服务,它的主要作用是用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够比较平滑地运行于不同平台上。同时中间件在负载平衡、连接管理和调度方面起了很大的作用,使企业级应用的性能得到大幅提升,满足了关键业务的需求。但是在这个阶段,客户端是请求服务的,服务器端是提供服务的,它们的关系是不对称的。随着面向对象技术的进一步发展,出现了分布式对象技术。可以这么说,分布式对象技术是随着网络和面向对象技术的发展而不断地完善起来的。90年代初CORBA 1.0标准的颁布,揭开了分布式对象计算的序幕。
---- 分布对象计算中,通常参与计算的计算体(分布对象)是对称的。分布对象往往又被称为组件(Component),组件是一些独立的代码的封装体,在分布计算的环境下可以是一个简单的对象,但大多数情况下是一组相关的对象复合体,提供一定的服务。分布环境下,组件是一些灵敏的软件模块,它们可以位置透明、语言独立和平台独立地互相发送消息,实现请求服务。
---- 问:您提到,分布对象技术随着面向对象技术的发展而不断地成熟与完善起来,那么,分布对象技术与传统的面向对象的技术有什么本质不同?
---- 答:我们知道,传统的面向对象技术有两个基本的特点:封装性和继承性,通常其强调的是代码复用,对象往往仅存在于一个程序中,程序的外界并不可能感知和访问这些对象。而分布式对象技术主要使用了面向对象技术的封装性,组件可以分布在网络的任何位置。对外界来说,它所需关心的只是组件的界面,至于内部是如何实现的则无需考虑,远程客户通过方法调用来访问它。这是分布式对象技术和传统的面向对象技术的最大的不同点。
---- 此外,分布对象计算系统中都不支持跨站点的继承性,例如,假设对象1是对象2的一个特例,而2个对象将要分布在不同站点上,如果完全按照面向对象的概念的话,对象1可以继承对象2的代码和数据;但是在分布式环境下,对象1要想继承对象2的代码和属性是非常困难的,没有任何一个分布系统能够支持这种继承性,因为实现代价太大。
---- 另外,在分布式对象里我们一般不提对象,而提组件。那么,组件和对象有什么区别呢?我们知道,在面向对象技术里可以有很小的一个对象,比如说一个邮政编码做一个对象;但在分布对象计算中,我们往往会把一些小的相关的对象组合在一起,形成一个相对比较大的组件,通过这个组件来提供一系列的服务。
---- 问:我们知道,目前分布式对象技术有3种主流技术——COM、Java和COBRA,请您谈一下这3种技术是如何发展起来的?各自的特点是什么?
---- 答:目前国际上,分布式对象技术有三大流派——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。
---- 目前我们经常谈到的分布式对象技术主要就是这3种,涉及到它的模型、规范、标准和实现。3种分布对象技术的详细比较可参见附表。
---- 问:据说,国外软件厂商像Oracle、Sybase、Lotus等纷纷宣布其软件产品中采用了分布对象技术,并呈现出很好的应用势头。那么,分布式对象技术有哪些应用?如何应用呢?有人说,我国在分布式对象技术领域基本与国外处在同一起跑线下,您对此怎么看?介绍一下我国的情况,以及分布式对象技术的新进展。
---- 答:Oracle、Sybase和Lotus等国外软件产商均在其主流产品中支持CORBA、EJB和DCOM技术以支持企业级应用和Web应用,这些产品在企业ERP和电子商务中均得到大量的应用。
---- 分布对象技术在比较大型的网络系统中应用较多,比如像医学方面的医学信息系统、银行业、交通、电信,几乎各行各业都有成功的例子,但在国内成功的比较少。
---- 分布对象技术应用起来比较复杂,因为这种软件通常都比较庞大,涉及到网络、对象技术等多种技术,尤其是COBRA,系统开发比较困难。分布式系统通常采用组合框架软件(Component Software)方法进行开发或集成,是基于软件体系结构的集成,只有特殊需求的组件才需要新开发,与其他组件在集成框架下集成为一个整体。当然使用组合框架软件进行分布式系统开发需要一整套方法、工具和平台的支持。
---- 国外利用分布对象技术开发的大型应用相对传统方法也不是很多,除了开发难度较大外,我想这里面还有这样一个原因,那就是人们都喜欢用成熟的技术。而在大型软件采用分布对象技术,在项目开发过程的控制方面的经验不足,从一定程度上限制了分布对象技术的应用。对于分布式对象计算这样的应用来说,需要有一系列方法论、软件工程的方法和工具。如果不从开始就按照面向对象的方法来设计,利用面向对象的方法论和工具来支持的话,很难做成一个成功的分布式应用。
---- 我个人不赞成处于同一起跑线上这一说法。我认为,在分布式对象技术方面,我国和国外的差距还是全面的,应该说国内一直在跟踪这个技术,也在研究开发方面加入了一些中国特色,比如通讯方面,中国的通讯线路不太好,我们就专门针对通讯模块做了改进。说差距是全面的,首先所有分布对象技术的标准均是国外组织和企业制定的;第二在支撑平台上,国外有名的产品已不下百种,而中国除了少数几个科研院所和公司有一些原型外,基本没有自己的产品;第三,成功的应用太少。一般说来,网络分布式应用的第一代模式叫Client/Server模式,第二代叫3层Client/Server模式,第三代叫分布式对象模式,目前国外基本上已经从第二代向第三代过渡,电子商务的兴起将加速这一进程。而我国目前大型应用还主要是简单Client/Server结构,但越来越多地采用3层Client/Server的模式。
---- 谈到分布式对象技术的新进展,目前国外的一个进展就是将分布对象计算与Web 以及嵌入式移动计算结合在一起,另外就是和中间件(如交易中间件、通讯中间件等)的结合。例如COBRA新的标准里加入了Internet服务和消息服务,消息服务可以支持异步的方法的调用,可以提高程序的吞吐量,并行能力的加强提高了系统整体的性能,并增加了系统的灵活性。
---- 问:有人说,分布式对象技术的发展方向是智能Agent技术,这种说法您怎么看?请您谈一下分布式对象技术将来的发展趋势?
---- 答:我认为,分布式对象技术和Agent技术具有一些共性,它的某一个分支可能会发展成智能Agent,但智能Agent技术不能代表分布式对象技术的全部。Agent通常包含2个含义:第一,Agent较普通组件具有更高的自主性,能够对周围环境具有一定的赶制性,第二,Agent可以理解为移动组件,它可以根据需要在网络节点间移动。
---- 分布对象技术中,有关其软件体系结构及开发方法上还有许多研究课题,此外如何通过统一的方式集成不同标准的组件也是未来值得研究的课题。分布对象技术将会向智能化、小型化和标准融合的方向发展,并将在移动计算和电子商务的应用中发挥巨大的作用。
---- 责任编辑:郭弘guo_hong@ccw.com.cn
---- 责任美编:王战辉 wang_zhanhui@ccw.com.cn
附表 3种分布对象技术的比较
---- 集成性:集成性主要反映在基础平台对应用程序互操作能力的支持上。它要求分布在不同机器平台和操作系统上、采用不同的语言或者开发工具生成的各类商业应用必须能集成在一起,构成一个统一的企业计算框架。这一集成框架必须建立在网络的基础之上,并且具备对于遗留应用的集成能力;
---- 可用性:要求所采用的软件构件技术必须是成熟的技术,相应的产品也必须是成熟的产品,在至关重要的企业应用中能够稳定、安全、可靠地运行。另外,由于数据库在企业计算中扮演着重要角色,软件构件技术应能与数据库技术紧密集成;
---- 可扩展性:集成框架必须是可扩展的,能够协调不同的设计模式和实现策略,可以根据企业计算的需求进行裁剪,并能迅速反应市场的变化和技术的发展趋势。通过保证当前应用的可重用性,最大程度地保护企业的投资。
CORBA/ORB ActiveX/DCOM EJB/RMI
集成性
支持跨语言操作 好 好 一般
支持跨平台操作 好 一般 好
网络通讯 好 一般 好
公共服务构件 好 一般 好
可用性
事务处理 好 一般 一般
消息服务 一般 一般 一般
安全服务 好 一般 好
目录服务 好 一般 一般
容错性 一般 一般 一般
产品成熟性 一般 一般 一般
软件开发商的支持度 一般 好 好
可扩展性 好 一般 好