基于CORBA/JAVARMI的分布式系统应用研究

2022-10-04

随着Internet、Intranet及Extranet在全球范围内的普及和发展, 基于Web的分布式管理系统引起普遍关注。分布计算技术是指在网络计算平台上开发、部署、管理和维护以资源共享和协同工作为主要应用目标的分布式应用系统。

基于Web的分布式管理系统有很多突出的优点, 但是, 随着应用的不断深入, Web技术一些严重的缺点也暴露了出来。例如, Web只适合处理静态客户, 采用非类型安全 (non-typesafe) 的交互, Web服务器容易出现性能“瓶颈”, 不适合复杂和大规模的应用等。因此, 下一代的Web必须能够处理business-to-business交易和consumerto-business多步骤交易过程中的复杂需求。而目前建立Object Web的可行性比较高的一种方法, 是使用CORBRA和Java。

1 CORBA概述

CORBA (Common Object Request Broker Architecture公共对象请求代理体系结构) 标准主要分为3个部分:接口定义语言 (IDL) 、对象请求代理 (ORB) 以及ORB之间的互操作协议IIOP。

ORB能识别的协议是OMG的接口定义语言IDL。它可完整地确定部件的接口--即客户所需使用接口的全部信息。

IDL定义的接口经IDL编译器编译后能产生客户的桩 (stub) 及执行对象的骨架 (skeleton) 这类能与ORB通信的接口:

(1) 接口桩stub。在编译时确定的静态接口。它位于客户对象的本地, 接受客户的请求, 对客户来说相当于远程的执行对象。接口桩向ORB提交请求。

(2) 动态调用接口 (DII) 。用于编译时不能确定的请求。与接口桩作用相同。

(3) 骨架Skeleton。分动态骨架与静态骨架。它针对执行对象来说代表了远程客户的作用, 可在本地调用执行对象服务, 并与ORB通信。

(4) 对象适配器。提供执行对象可以访问ORB服务的基本接口, 其作用是产生及解释对象引用、安全交互、登记和执行等等。

对于CORBA标准具有如下的一些优点:

(1) CORBA是多个公司共同制定的标准。

(2) CORBA是完全语言中性的。

(3) CORBA提供了许多可选的增值服务。

2 Java RMI

Java RMI (Remote Method Invocation, 远程方法调用) 是在用Java编写的程序之间交换可串行化对象的基本方法, 它的出现增强了Java开发分布式应用程序的能力。

Java RMI具有Java的“Write Once, Run Anywhere”的优点, 用Java RMI开发的应用系统可以部署在任何支持JRE (Java Run Environment, Java运行环境) 的平台上。但由于JRMP是专为Java对象制定的, 因此, RMI对于用非Java语言开发的应用系统的支持不足, 不能与用非Java语言书写的对象进行通信。

RMI编程的主要步骤:

(1) 定义远程接口。

(2) 生成和编译远程接口的实现类。

(3) 用rmic生成远程对象在客户端的存根与服务器端的骨架。

(4) 生成并编译服务器程序。

(5) 注册远程对象。

(6) 生成和编译客户程序。

3 CORBA与Java的结合

3.1 CORBA与Java结合的优点

CORBA与Jav a的基础结构具有互补性, CORBA与Java结合的好处是:

(1) Java提供了一个概念清晰、结构紧凑的分布计算模型和构件互操作的方法, 为构件应用开发提供了相当的灵活性。CORBA是一种集成技术, 也是一个非常完整的分布式对象平台, 而不是编程技术。CORBA可以扩展Java在网络、语言、组件边界、操作系统中的各种应用。

(2) Java不仅是与CORBA捆绑的语言, 还是一个跨平台的对象系统。Java还简化了大型CORBA系统中的代码分配其中内置的多线程和垃圾收集机制使编写可靠的网络对象更为方便。采用CORBA可以将网络对象连接在一起, 并与计算环境中的数据库、遗留系统、其它语言编写的对象和应用相互集成。

3.2 基于CORBA/Java开发应用程序模型

CORBA/Java的开发客户端和服务器端的流程如1图所示。

首先利用OMG IDL语言对即将开发的服务器程序接口加以描述, 然后选择客户方的策略, 如果采用静态调用, 则利用CORBA IDL编译器对接口文件进行编译, 生成相对应的Stub和Skeleton文件;如果采用动态调用, 则只需将IDL文件载入接口库中, 然后用Java语言分别开发服务器应用程序和客户应用程序, 最后通过Java编译器生成客户端字节码和服务器端字节码 (见图1) 。

4 JAVA RMI-IIOP技术

虽然RMI只允许创建Java同构环境下的分布式应用程序, 但是由于RMI比CORBA简单, 开发者不需要熟悉IDL。另一方面, Java语言本身所具有的结构中立、多线程、安全以及平台无关等特点又为分布式的开发提供了一个良好的环境, 而且RMI是自动垃圾收集, 如果只使用Java开发的应用系统, 那么RMI是最好选择。但假如已经有许多用其他语言编写的代码, 则RMI可能无法满足人们的要求。

CORBA的不足之处是CORBA对象不能垃圾收集, 像C++不支持垃圾收集那样。一旦创建CORBA对象, 它将一直存在, 直到你亲自去处理它, 而RMI是自动收集。它的优点就是CORBA设计与语言无关, 是不同语言开发系统的桥梁。所以, 如果有一种可以将两者集成的技术, 将是一种非常理想的选择。

4.1 RMI-IIOP简介

RMI和CORBA作为分布式编程, 彼此的发展是独立的。它们分别用JRMP协议和IIOP (Internet Inter-ORB Protocol) 协议进行通信。

IIOP是一个用于CORBA及兼容平台上的协议, 由于IIOP是基于TCP/IP传输协议, 它比JRMP应用广泛, 而且IIOP源自CORBA, 获得了众多软件供应商的支持, 所以采用一种方法将JRMP映射到IIOP, 这样便可以实现CORBA与RMI的集成。CORBA提供了这种在RMI和CORBA间提供交互的机制——RMI-IIOP。

R MI-I IO P允许C O RB A客户、R MI客户、CORBA对象、RMI对象在系统中进行整合和调用匹配, 它提供了一个在RMI和CORBA之间的桥接机制。RMI-IIOP是RMI可移植的扩展, 它可以应用Internet InterORB协议, 并能够用来与COBRA集成。因为RMI-IIOP服务器与客户之间使用IIOP协议, CORBA服务器与客户也使用同样的协议, 那么彼此的互操作成为可能。

4.2 RMI-IIOP的优势

借助于RMI-IIOP, 可以编写简单易懂的Java代码, 同时使用CORBA提供的丰富的企业功能套件的代码可以在纯Java环境中运行 (当小的资源占用量和灵活性很关键时) , 或者对代码作少量修改后集成到现有的CORBA基础架构中。RMI-IIOP很强大的功能之一是, 它让编写纯Java客户机/服务器实现而不丧失RMI类序列化的灵活性。通过RMI-IIOP, C OR BA对象可以与E JB对象协同工作。RMI-IIOP综合了RMI的简单性和CORBA的多语言性, 克服了RMI只能用于Java的缺点和CORBA的复杂性。

RMI-IIOP通过覆盖Java序列化并在导线上将Java类转换成IIOP。在另一端, Java类被作为IIOP从导线上读下来, 接着创建这个类的一个新实例 (使用反射) , 类的所有成员的值都完整无缺。

5 结语

对于分布式计算技术的架构, 不能绝对地说哪一个最好, 只能说哪一个更合适。针对不同的软件项目需求, 具体分析才是明智的选择。

对于必须服务于大量用户的应用, CORBA与Java技术的结合可以提供比较完备的解决办法, 因为这种方案具有可扩展性和业界广泛的支持。由于CORBA的强健性可以提高Java编程语言的性能, 利用已有的基于标准的技术, Java开发者可以编写出功能强大的Web应用程序。因此, 将CORBA与Java RMI结合的RMI IIOP技术, 可以发挥各自的优势弥补各自的不足, 使分布式应用系统具有更高的柔韧性、可伸缩性、可移植性、灵活性等能适应新的环境需求。

摘要:CORBA和Java RMI是重要和广泛使用的两种分布式对象技术, 但两者各有优缺点。在分析了CORBA体系结构及基本原理的基础上, 结合Java开发分布式应用的特点, 阐述了出了基于CORBA/Java RMI开发分布式应用程序的模型。

关键词:CORBA,Java RMI,IIOP

参考文献

[1] (美) M.L.Liu[著], 顾铁成, 等[译].分布式计算原理与应用[M].清华大学出版社, 2004, 8.

[2] 周颖, 赵岳松.基于CORBA的多层分布式系统研究[J].计算机与现代化, 2002, 10.

[3] 杨晓梅, 于长云, 张冬梅.Java RMI与CORBA在分布式系统开发中的研究[J].天津理工大学学报, 2005, 8.

[4] 蔡超, 童红.Java与CORBA技术结合在分布式系统中的应用[J].武汉工业学院学报, 1.

[5] 刘军, 王宁生.基于CORBA的分布式系统的开发[J].计算机工程与应用, 2001.

上一篇:社区治安管理中的多元主体参与机制研究下一篇:循环流化床锅炉返料运行分析