24小时热门版块排行榜    

查看: 468  |  回复: 4
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

dayv

木虫 (小有名气)

[交流] 分布式对象技术简介

分布对象技术是伴随网络而发展起来的一种面向对象的技术。以前的计算机系统多是单机系统,多个用户是通过联机终端来访问的,没有网络的概念。网络出现后,产生了Client/Server的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等等。随着网络的更进一步发展,许多软件需要在不同厂家的网络产品、硬件平台、网络协议异构环境下运行,应用的规模也从局域网发展到广域网。在这种情况下,Client/Server模式的局限性也就暴露出来了,于是中间件应运而生。中间件是位于操作系统和应用软件之间的通用服务,它的主要作用是用来屏蔽网络硬件平台的差异性和操作系统与网络协议的异构性,使应用软件能够比较平滑地运行于不同平台上。同时中间件在负载平衡、连接管理和调度方面起了很大的作用,使企业级应用的性能得到大幅提升,满足了关键业务的需求。但是在这个阶段,客户端是请求服务的,服务器端是提供服务的,它们的关系是不对称的。随着面向对象技术的进一步发展,出现了分布式对象技术。可以这么说,分布式对象技术是随着网络和面向对象技术的发展而不断地完善起来的。90年代初CORBA 1.0标准的颁布,揭开了分布式对象计算的序幕。

  分布对象计算中,通常参与计算的计算体(分布对象)是对称的。分布对象往往又被称为组件(Component),组件是一些独立的代码的封装体,在分布计算的环境下可以是一个简单的对象,但大多数情况下是一组相关的对象复合体,提供一定的服务。分布环境下,组件是一些灵敏的软件模块,它们可以位置透明、语言独立和平台独立地互相发送消息,实现请求服务。
传统的面向对象技术有两个基本的特点:封装性和继承性,通常其强调的是代码复用,对象往往仅存在于一个程序中,程序的外界并不可能感知和访问这些对象。而分布式对象技术主要使用了面向对象技术的封装性,组件可以分布在网络的任何位置。对外界来说,它所需关心的只是组件的界面,至于内部是如何实现的则无需考虑,远程客户通过方法调用来访问它。这是分布式对象技术和传统的面向对象技术的最大的不同点。

  此外,分布对象计算系统中都不支持跨站点的继承性,例如,假设对象1是对象2的一个特例,而2个对象将要分布在不同站点上,如果完全按照面向对象的概念的话,对象1可以继承对象2的代码和数据;但是在分布式环境下,对象1要想继承对象2的代码和属性是非常困难的,没有任何一个分布系统能够支持这种继承性,因为实现代价太大。

  另外,在分布式对象里一般不提对象,而提组件。那么,组件和对象有什么区别呢?我们知道,在面向对象技术里可以有很小的一个对象,比如说一个邮政编码做一个对象;但在分布对象计算中,我们往往会把一些小的相关的对象组合在一起,形成一个相对比较大的组件,通过这个组件来提供一系列的服务。
目前国际上,分布式对象技术有三大流派——COBRA、COM/DCOM和Java。CORBA技术是最早出现的,1991年OMG颁布了COBRA 1.0标准,在当时来说做得非常漂亮;再有就是Microsoft的COM系列,从最初的COM发展成现在的DCOM,形成了Microsoft一套分布式对象的计算平台;而Sun公司的Java平台,在其最早推出的时候,只提供了远程的方法调用,在当时并不能被称为分布式对象计算,只是属于网络计算里的一种,接着推出的JavaBean,也还不足以和上述两大流派抗衡,而其目前的版本叫J2EE,推出了EJB,除了语言外还有组件的标准以及组件之间协同工作通讯的框架。于是,也就形成了目前的三大流派。

[ Last edited by 幻影无痕 on 2006-11-16 at 07:38 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

linspirit

铜虫 (初入文坛)

0.5

good
4楼2006-01-13 10:01:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dayv 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见