时间:2022-09-09 05:43:28
【前言】基于Java CORBA的企业分布式计算模型研究由文秘帮小编整理而成,但愿对你的学习工作带来帮助。本文尝试以CORBA作为分布式底层协议,提出一种基于Java CORBA的分布式计算模型,并实现跨语言、跨平台的分布式调用。 二、分布式模型 CORBA[3]是Common Object Request Broker Architecture(公共对象请求体系结构,通用对象请求体系结构)的简称,是由对象管理组织(...
【摘 要】本文在分析现有分布式计算技术的基础上,提出一种基于java corba的企业分布式计算模型,实现跨语言、跨平台分布式调用。
【关键词】CORBA;分布式计算
一、引言
广义上的分布式计算[1][2]是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。网格计算、云计算等均是分布式计算的一种。目前已有分布式项目统一管理平台BOINC(Berkeley Open Infrastructure for Network Computing,伯克利开放式网络计算平台),比较成功的项目有Seti@Home、LHC@Home。比较成熟的分布式计算技术有如下几种:中间件技术、P2P 技术、移动Agent 技术、网格技术、Web Service技术。
本文研究的企业级分布式计算是广义分布式计算的特殊应用,但却广泛使用于实际工程应用中。目前,企业级分布式计算常用的技术有:JavaEE、.NET Web Service、CORBA、COM/COM+等。但往往在做实际项目时,却只用单一的技术,甚至有时为了方便连“分布式调用”也省略了。这将导致项目部署之后负载均衡及可扩展性受到限制,甚至危及大项目的稳定性。
本文尝试以CORBA作为分布式底层协议,提出一种基于Java CORBA的分布式计算模型,并实现跨语言、跨平台的分布式调用。
二、分布式模型
CORBA[3]是Common Object Request Broker Architecture(公共对象请求体系结构,通用对象请求体系结构)的简称,是由对象管理组织(OMG)于1991年提出的,其目的在于解决分布式处理环境中硬件和软件系统的互连的问题。
综合考虑企业级分布式计算实际应用、跨平台跨语言客户端实现等细节,本文提出的分布式模型如图1所示。
该模型分客户端与服务端两大模块。服务端包括ORB(对象请求)、名字服务、IDL Skeleton和IDL实现等模块;客户端主要包括IDL及IDL生成工具。
1. ORB
对象请求(Object Request Broker,简称ORB)是CORBA的核心组件。ORB 提供了识别和定位对象、处理连接管理、传送数据和请求通信所需的框架结构。
在本文模型中,ORB负责解析并传递客户端请求,同时将处理结果返回给客户端。
2. IDL Stub & IDL Skeleton
IDL存根(IDL Stub)和IDL骨架(IDL Skeleton)都是由IDL文件生成的,IDL存根放置在客户端,IDL骨架放置于服务端。客户端通过IDL存根请求远程对象的方法或属性,通过ORB传递将请求发送到相应的IDL骨架中,而IDL骨架调用相应的IDL实现的方法,最后将结果又通过ORB发回到客户端。由此完成一次远程调用。
3. Name Service
Name Service(名字服务)是由服务端提供的唯一的服务定位机制,类似于URL、URI等。目前常见的名字服务有:RMI、CORBA、LDAP等。
4. IDL Tools
IDL工具用于生成客户端IDL存根。对于不同语言的客户端,其IDL生成工具也不同,这也是本文模型中唯一与平台和语言有关的模块。
三、模型实现
本文选取Java CORBA作为服务器端,并使用orbd为服务器。客户端选取三种不同的计算机语言:Java、CSharp和C/C++。本文的实现模型如图2所示。
1. 服务器端
之所以选取orbd作为服务器,是由于Java本身的跨平台特性,它能够方便部署于Windows、Unix等平台上。
服务器端主要模块包括:ORB核心模块、JNDI、IDL骨架及实现类。其中,JNDI是名字服务,用于提供服务名字到服务对象的映射;IDL Skeleton由Java工具生成,用于实现与客户端IDL Stub的通讯;Java Objects为业务实现类。
2. 客户端
客户端通过IDL Stub实现与ORB的通讯,具体原理从略。这里仅简单介绍三种不同语言下IDL Stub的生成工具。
(1)Java语言。JDK提供idlj.exe[4]工具,实现从IDL文件生成相应Java CORBA相关类的功能。
(2)CSharp语言。本文选取开源项目[5]作为CSharp CORBA客户端开发工具。的IDLCompiler.exe工具提供IDL文件编译为CSharp接口的功能。
(3)C/C++语言。本文选取开源项目omniORB[6]作为C/C++ CORBA客户端开发工具。omniORB提供omniidl.exe命令行实现从IDL文件编译为C/C++所需接口的功能。
3. 编程步骤
基于Java CORBA的C/S应用程序开发,基本上遵循如下步骤:
(1)编写IDL接口描述文件;
(2)使用idlj.exe编译Java相关的CORBA接口;编写服务类,实现IDL接口定义的方法列表;
(3)启动orbd.exe,并把服务实现类绑定(部署)到Name Service的节点上;
(4)使用客户端IDL工具(如idlj.exe、IDLCompiler.exe、omniidl.exe等)生成相应客户端语言所需接口;
(5)编写客户程序,访问Name Service上的服务节点。
四、结论
本文以CORBA作为分布式底层协议,提出一种基于Java CORBA的分布式计算模型,并实现跨语言、跨平台的分布式调用。该模型主要优点如下:
(1)模型实现简单可行;
(2)能够实现跨语言、跨平台的异构分布式调用,方便整合不同ERP系统;
(3)模型可移植性好。
但该模型仍然存在不足之处,主要有如下几点:
(1)由于Java CORBA底层机制较复杂,因此与现有ERP系统无缝整合较为困难;
(2)模型没有考虑服务策略及负载均衡,这将导致大访问量引发的服务器崩溃问题。
参考文献:
[1]分布式计算[OL]. .
[5][OL]. http:///projects/iiop-net.
[6]omniORB[OL]. http://