论文部分内容阅读
最近几年,在计算机软件领域,分布式处理技术与面象对象技术的融合成为引人瞩目的潮流。当前比较流行的分布式技术有:Microsoft提出的COM/DCOM技术;OMG提出的CORBA技术;Sun提出的EJB技术。这其中COM/DCOM技术是微软操作系统的核心,Microsoft声称该技术不局限于Windows平台,但是事实上,在Unix平台上使用COM/DCOM技术是相当难的;EJB是Sun公司提出的基于Java的部件技术标准,Sun公司的目标是实现一种与平台无关的部件技术,但是由于Java技术本身的发展,EJB技术还不是十分的成熟。CORBA有着良好的开放性和扩展性。近年来,CORBA又将其它中间件技术的特色吸收到所定义的服务中,同时它也注重不断融合最新出现的技术,如Java,UML,XML,组件技术和移动代理(mobile agent)等。CORBA技术是先有标准,后有产品,这与许多的与CORBA竞争的中间件产品有很大的区别。目前,CORBA技术在银行、电信、保险、电力和电子商务领域都有广泛的应用。 但是国内CORBA方面研究主要还是以应用为主,探讨其实现的很少;正如一些专家所说,国内软件领域应该多一些系统级软件的研究,才能赶上甚至超过国际水平。CORBA平台的设计正是系统级软件的设计。于是本文探讨了CORBA平台的实现,重点讨论CORBA服务的实现。 本文的主要研究工作分为两个部分。第一部分是CORBA核心模块的研究与实现,这部分是前人(上届师兄)研究的成果,作者对这部分进行了完善和整理。第二部分是CORBA的四种核心服务的研究与实现,是本文的主要内容。这四种服务分别是命名服务、事件服务、事务服务、并发控制服务。在这部分中,作者首先研究这四种服务的基本原理,然后根据OMG标准整理出要实现的接口,最后给出了具体的实现。1.CORBA核心模块的研究与实现CORBA的平台的实现是个复杂的工程,本文种所讨论的CORBA的核心模块的实现是对其中的非关键性功能部件经过删减后的实现。它包括两个模块,orb模块和poa模块。对orb模块由七个包构成,它们分别是:orb包,是系统的最核心的部分,负责实现CORBA规范中的ORB接口和管理系统的其他部分;thread包,负责在orb启动后启动监听线程监听客户的请求及根据这些请求启动应用程序的服务端;ior包,负责对可互操作型对象引用及其操作的封装;giop包,负责建立通信通道两侧的的服务端和客户端,负责对客户端发出的请求进行处理;iiop包和protocols包,这两个包之间的关系是继承的关系,前者继承后者,它们主要负责在应用程序的客户和服务端建立一条传送的通道,并且这种传送遵守GIOP协议;cdr包,负责对字节流进行编码和解码。在这部分中还详细分析了请求在客户端被传递的过程。 Poa模块中,给出了它的静态结构后,主要讨论它和orb模块的关系,并且详细分析了请求在服务端被处理的过程。2.CORBA服务的研究与实现 主要研究了四种服务的研究与实现。(1)命名服务的设计与实现 <WP=81>在第三章中,作者讨论了命名服务的实现。命名服务重要实现分布式对象的名字、对象引用的绑定和解析。作者实现了标准的NamingContextExt和BindingIterator,并且提出了一种利用socket传递命名服务本身的对象引用的模型并实现了它。(2)事件服务的研究与实现 在第四章中,作者讨论了事件服务的实现。事件服务是作为CORBA同步通信的补充,提供在异步、多目通信方式。标准服务中共有两个模块CosEventComm是提供给用户的接口;CosEventChannelAdmin是事件服务器要实现的模块,它定义了七个接口,管理起推模型和拉模型两种事件传送的方式,作者分别进行了实现。除了这些标准的接口外,作者自己定义了一个模块CosEventFactory,并在其中定义了EventChannelFactory接口用来进行事件通道的管理,包括创建新的事件通道和查找已有的事件通道。(3)事务服务的研究与实现 在第五章中,作者讨论了事务服务的实现。事务服务主要是维护在分布式环境下的对象状态的一致性,具体过程就是执行两阶段提交协议。它的几个重要的接口有TransactionFactory接口用于Control对象的创建(同时也是整个事务服务上下文的创建);Control接口,具体创建事务上下文和返回Coordinator及terminator对象;Coordinator对资源和同步进行管理登记注册等;Terminator执行提交或者回退。作者实现了这些接口并给出了事务服务器执行两阶段提交协议的动态过程描述。 事务服务器可能因为各种故障而崩溃,对这些问题OMG的标准规范没有给出解决的办法,作者提出了一种当服务器崩溃的时的事务恢复的模型。这种模型是在事务服务运行的过程中记录详细的日志信息,当需要恢复的时候读取这些信息根据记录的不同的状态决定继续提交或者是回退。(4)并发控制服务的研究与实现 在第六章中,作者讨论了并发服务的实现。并发服务与事务服务紧密相连,主要是协调分布式对象对共享资源的争夺。主要是提供给用户一个接口供用户实施两阶段封锁协议。重要的接口有TransactionalLockSet负责对事务型资源的锁定;LockCoordinator负责当事务结束的时候对该事务的锁进行释放。除了这种锁的释放方式外,作者与事务服务向结合,提出