分布式对象中间件技术
扫描二维码
随时随地手机看文章
摘 要:分布式对象中间件技术是为了解决分布计算和软件复用过程中存在的异构问题而提出的。,EJB,COM/是目前主要的3大中间件技术,他们都有自己的优势应用领域,和的结合在解决 WWW应用方面具有无比的优势。本文介绍了基于/ 的 WWW信息查询系统开发的一般方法。
关键词:中间件;分布式对象中间件;CORBA; ?
随着计算机技术,尤其是技术的发展,跨地域、跨企业、跨业务的计算机应用越来越广泛。但是不同硬件平台、网络环境、数据库等异质性因素影响了计算机系统集成应用。应用开发过程中大约有70%的时间和精力用于解决与业务逻辑没有直接关系的跨平台难题,因此,有必要将分布式应用所面临的共性问题进行提炼,抽象形成一个可复用的软件部件—中间件—供应用软件使用。过去中间件系统如DCE(Distributed Computing Environment)是面向过程的软件复用模式体系结构,随着面向对象技术的发展和客户/服务器模式的流行,分布式对象中间件技术已成为分布计算的主流技术。本文介绍了3大分布式对象中间件技术及基于CORBA/的WWW系统开发的一般过程。?
1中间件技术
中间件是一种独立的系统软件或服务程序,分布式应用借助这种软件可以在不同技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通讯。中间件的目标是要解决系统的互连和互操作,他的核心是解决名字服务、安全控制、并发控制、可靠性保证、效率保证等方面的问题,要实现互联还要解决支持各种通讯协议、各种通讯服务模式、传播各种数据内容、数据格式翻译、流量控制、数据加密、数据压缩等。按照IDC的分类方法,中间件分为6类:终端仿真/屏幕转换中间件、数据访问中间件、远程过程调用中间件、消息中间件、交易中间件和分布式对象中间件。
传统的对象技术通过封装、继承及多态性提供良好的代码重用功能。但是,这些对象只存在于一个程序中,外界并不知道他们的存在,也无法访问他们。分布式对象中间件就是要解决这些问题,他提供一个标准构件框架,能使不同厂家的软件通过不同地址空间、网络和操作系统进行交互访问。对象技术的优势和分布式对象中间件的标准化,促使对象中间件功能最终将涵盖几类中间件的功能,从而成为中间件产品的主流。
?
2分布式对象中间件技术?
2.1公共对象请求代理体系结构CORBA
CORBA由对象管理组织OMG于1991年提出,其旨在将错综复杂的网络编程从单独的组件和应用中移走。ORB是CORBA平台的核心,他提供了客户—对象间实现透明通信的方法,当客户激活一个方法时,ORB负责定位对象实现并透明激活将请求传输给对象实现并返回结果。IDL是不依赖于具体编程语言和计算平台的接口语言,用来定义对象接口,IDL对描述跨平台,跨语言应用程序提供一个公共的表示方式,IDL编译器可根据用户需要将IDL定义转化为应用程序语言,如C++,等。IDL桩为客户提供了静态调用对象方式,IDL构架为客户提供了静态实现方式,他们由IDL编译器产生,作为具有调用功能的子例程分别在客户方和服务器方使用。而动态调用接口DII( Invocation )和动态构架接口DSI( Skeleton )提供了动态调用方式和动态实现方式。在ORB核心和对象实现之间还有对象适配器,他负责服务对象的注册、对象引用的创建和解释、对象实现的激活和去活以及客户请求的分发等。ORB之间的互操作主要是由ORB桥,( InterORB Protocol)和EISP(Environment Specific InterORB Protocol)等互操作协议来规定。是建立在TCP协议之上的基于连接的协议。
2.2分布组件对象模式
是Microsoft与业界厂商合作提出的一种分布构件对象模型。DCOM起源于动态数据交换DDE技术。通过剪切/粘贴(cut/)实现2个应用程序之间共享数据的动态交换。对象连接和嵌入OLE就是从DDE引伸而来的,随后Microsoft引入了构件对象模型COM,形成了COM对象之间实现互操作的二进制标准。COM规定了对象模型和编程要求,使COM对象可以与对象相互操作。DCOM出现是为了弥补COM在支持远程组件方面的不足。他为分布在网络不同节点的2个COM组件提供了互操作的基础结构。
将COM,DCOM,OLE及这些服务结合起来形成了微软创造的分布式网络互联体系结构DNA。
2.3EJB企业JAVA平台
近年来,Sun Microsystem公司提出的基于JAVABean组件技术的EJB及 JAVA平台,JAVABean是JAVA向组件方面的发展,组件的单位叫Bean或JAVABean,这种组件模式是JAVA编写的可移植的,平台独立的组件模式,在分布计算模型中,可用来构建客户端程序。EJB于1998年提出,是服务器方的组件模式,定义了开发和布署可重用的JAVA服务器组件模式和API规范。JAVABeans和EJB体系结构之间,一个最明显的区别是事件处理。JAVABean是为紧耦合的桌面环境而设计,使用局部事件模式,不利于系统的集成。EJB体系结构对分布式的事件提供灵活的支持,允许远程客户通过远程方法调用API访问服务器功能。适应分布式体系结构中的多层应用。EJB还不是一个完整的平台,其提供服务也有限,于是在EJB的基础上,提出能适应广泛企业计算的 JAVA平台技术。 JAVA平台包括EJB ,JSP,Servlet,JDBC等组件。
上述3种中间件各有特点,CORBA可以跨各种操作平台,包括Windows OS ,甚至支持DOS操作系统而DCOM只支持Win 32; 同时CORBA跨多种语言,支持C++,Smalltalk,JAVA,,Ada等语言。DCOM主要以桌面Wintel同质平台对象跨应用使用见长,支持带有指针结构的语言如C,C++而不支持JAVA语言。Enterprise JAVA在Internet环境下集组件模式、跨异构平台、兼具事务处理、数据库连接等许多基础结构服务,但仅限于支持JAVA语言。因此我们利用JAVA语言具有简单、面向对象、分布式、解释型、健壮、安全、可移植性的特点结合CORBA的跨异构平台的特性实现对象的重用。
?
3CORBA/JAVA的WWW应用系统
我们设计的系统是要实现以下目标:在客户端用浏览器下载服务器上小程序Applet,通过Java虚拟机和CORBA的ORB实现对远端服务对象的调用,并通过服务对象访问远端数据库,最后返回查询结果并在浏览器上显示。其系统结构图如图1所示。
3.1程序设计与实现
该系统用Borlard Jbuilder 5.0进行开发, Jbuilder 5.0提供了JAVA语言的CORBA开发支持,VisiBroker for JAVA是一个内置于Jbuild 3.0 IDE的开发工具,可以用来建立、管理和开发分布式的跨多种平台的开放的、易用的、可交互的 CORBA Java应用程序。这里开发一个可以访问MS SQL 数据库3层C/S模式应用。在这个系统中要用到定义JDBC API的.sql包,该包定义了JDBC所有的类,接口和方法。主要的类和接口有Manager—处理驱动程序的装入;.sql.—驱动程序接口;.sql.Statement为sql语句提供一个容器,java.sql.Connection表示到特定数据的连接。
(1)定义CORBA objects和编译IDL接口
首先定义一个接口模块Query?idl,该模块包含的DataQuery接口提供了一个连接数据库并返回查询结果的方法dbQuery( ):
用visiBroker IDL编译器(idl2java)编译Query?idl产生一个JAVA接口DataQuery.java和其他必需的JAVA文件。其中_st_DataQuery.java是客户端的stub,_sk_DataQueryImplBase.java是服务器端的骨架(skeleton),另外还包括为传递参数提供支持的DataQueryHolder.java和提供辅助功能DataQueryHelper.java。
(2) CORBA接口的实现
对象实现类必须结合编译产生的骨架来完成,类DataQueryImpl.java需要继承由 IDL编译产生的骨架_sk_DataQueryImplBase类。其中dbQuery( ) 通过JAVA.JDBC.API实现连接数据库并返回查询结果:
(3)创建服务端应用程序
类?java服务程序负责下列任务:初始化ORB和BOA,建立服务对象DataQueryImpl,通知对象可用及准备接受请求。
(4)创建客户端程序
实现步骤:初始化CORBA环境,查找定位到DataQuery对象,然后调用dbquery( )方法。
最后编译服务器端和客户端程序,设置好程序中用到的数据源,启动提供对象查找服务的. Agent和服务端应用程序.java,最后在客户端IE 地址栏健入:http://
?
4结语
中间件屏蔽了操作系统和网络协议的差异,为应用层软件提供了多种通讯机制和统一的应用平台,简化了软件开发的复杂度,提高了开发的效率。CORBA已成为软件开发的主流。CORBA独立于网络协议,独立于编程语言,独立于软硬件平台,是目前最有生命力的跨平台分布计算技术。JAVA由于其健壮性,安全性,移动性和跨平台及“一次编写,各处运行”的优点,使其成为WWW网上开发最好的语言。毫无疑问,JAVA和CORBA的结合将会把分布计算和软件复用推向新的阶段。