【IT168 技术文章】
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所花的时间非常短,而再往上的版本的发布就相对十分缓慢了。