多层分布式信息管理之研究

  • 格式:pdf
  • 大小:27.11 KB
  • 文档页数:3

●刘红梅 赵捧未(西安电子科技大学经济管理学院 陕西 710071)多层分布式信息管理之研究 摘 要:多层分布式信息管理正在得到越来越广泛的应用。

本文分析了它的发展现状,提出了一个基于Windows平台组件管理器模式的多层分布式模型。

理论分析和初步原型实验证明了方法的有效性。

关键词:信息管理;分布式算法/可扩展标记语言Abstract:Multi2tier distributed in formation management is finding wider and wider applications.With an analysis of its development status in quo,this article presents a multi2tier distributed m odel based on Windows component manager pattern.The theoretical analysis and the preliminary prototype experiment prove the validity of the method.K eyw ords:in formation management;distributed alg orithm/X M L 传统的“主机/终端”或“客户机/服务器”模式处理信息时存在很多局限性,已经不能适应当前应用的需要。

随着中间件与Web技术的发展,三层或多层分布式应用体系结构得到了越来越广泛的应用。

客户机/服务器系统(Client/Server System)结构是指把一个大型的计算机应用系统变为多个互相独立的子系统[1],服务器是资源存储与管理的中心,不同客户机各自处理相应的功能,共同实现整个系统完整的应用。

随着因特网的不断发展,又产生了浏览器/服务器(Browser/ Client)结构模式。

Client/Server体系结构存在安全性低、维护量大、消耗服务器资源多、网络易阻塞等缺点。

为了解决上述问题,人们又提出将业务处理与客户交互相分离[2],实现瘦客户/业务逻辑(可细化为多层)/数据服务的三层(多层)分布式应用体系结构。

在多层分布式信息管理中,客户机只存放表示层软件,完成人机交互;业务逻辑完成事务处理、监控、信息排队、负载均衡、Fail/Recover、安全隔离;后台是数据库。

在这种体系中,系统资源被统一管理和使用,这使信息处理更安全、稳定并且信息系统易维护、响应快和容易扩展。

由此可见,多层应用和分布式瘦客户信息管理体系是发展的主要方向。

1分布式信息管理发展现状多层分布式体系的开发主要考虑3方面的技术[1]。

首先是开发环境,开发人员需要一种能够创建新组件并可以将已有组件加以集成的开发环境。

其次是应用程序的集成,开发人员需要集成各种应用程序,以创建出更强大的应用。

第三是应用程序的配置,多层分布式体系的开发需要配置平台的支持,以便在用户剧增时能有效地扩展,并保持系统的稳定。

目前分布式技术的主要规范有两个:Micros oft的C OM +、DC OM(Distribute C omm on Object M odal)和C OR BA (C omm on Object Request Broker Architecture)。

当然,从C OR BA衍生出不少新技术,比如E JB(Enterprise JavaBean)、RMI(Rem ote Method Inv ocation)等。

在Windows平台上,构建多层分布式应用的技术有消息队列中间件、DC OM结构模型和Active X组件技术。

它们主要应用微软消息队列服务器(Micros oft Message Queue Server)和I BM的M QSeries、Micros oft Windows R DNA以及微软的分布式组件对象模型技术、Active控件技术。

具体的实现产品有Micros oft Visual S tudio610及Micros Framew ork支持的Active X、DC OM、MTS;Borland公司的Delphi提供的Midas构件,第三方提供的Delphi环境下Asta、Midware等构件。

这种基于分布式的组件对象模型技术必须在系统注册表中进行注册后才可以被其他远程计算机调用。

它的缺点是如果要跨平台(如包括Unix和Windows两种平台)就需要使用C OR BA结构模型。

2 基于组件管理器模式多层分布式信息管理体系Sun公司J2EE(Java2Enterprise Edition)[3]平台的E JB 是一种分布式、跨平台的体系结构。

同时,J2EE平台还包含C OR BA。

E JB运行在E JB容器中,所有的J2EE容器包含一个遵循C OR BA标准的OR B(对象请求代理)。

来自多个供应商的E JB容器之间的互操作协议是基于C OR BA标准的。

我们可以在现有编程语言的基础上,利用其支持的技术,来研究多层分布式开发。

受到E JB体系结构的启发,—62—© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.在Windows 平台上实现了一种类似E JB 的多层分布式信息管理系统。

由于这种解决方案是通过类似E JB 容器的一种远程对象调用,所以姑且命名为组件管理器模式。

这种模式的具体实现如图1所示。

图1 组件管理器模式在这种多层模型中,客户的请求由组件管理器接收并进行解释,然后调用其管理的对象组件执行命令,最后由对象组件返回执行状态或结果。

组件管理器与对象组件的关系类似于应用程序与外挂插件。

这种结构的优点是对象组件不用像C OM 、Active X 等Windows 组件那样必须先进行注册后才可被远程调用;真正实现了多层之间的分离和对象组件之间的相互调用;有效控制对数据的访问,从而使系统更加安全;应用对象组件体现了当前流行的面向对象的开发思想。

组件管理器是通用于这种结构的通信程序,这种程序只需编写一次,就可运行于此结构的所有系统,而与具体的信息管理系统无关,易于维护和升级。

如同E JB 有特定的规范一样,要实现这种结构,也必须有相应的规范:如客户与组件管理器之间交流的命令以及数据的格式、对象组件的开发规范和发布形式等。

只有遵从这种规范,整个结构才能真正实现。

3方案实现上述结构的对象组件,我们用Windows 通用的动态链接库的形式实现。

我们把一个或几个业务逻辑包装在一个动态链接库中,供组件管理器进行调用和管理。

客户与组件管理器之间、对象组件与其他层组件管理器之间采用S ocket 通信方式。

要想使组件管理器能调用自己或别人编写的组件,就必须对应用于这种结构的组件进行规范,符合这种规范才能正确通信。

对远程调用的对象结构进行规范是必要的,因为远程调用的对象不能编译到本地工程,并且在编译时不能验证远程对象的操作正确性。

远程对象是在客户发出请求时,由对象管理器创建的,并对其生命周期进行管理。

规范对象结构是对对象进行远程调用的普遍要求,如在使用E JB 结构模式时就要遵循E JB 方法和接口的编码约定,实现它的本地接口(H ome )、远程接口(Rem ote )和Bean 。

客户程序使用Java 命名和目录接口(Java Naming and Directory Interface ,JNDI )定位Bean 的本地接口,本地接口随后返回远程接口的实例,同时暴露必要的Bean 实现方法,客户程序再调用合适的方法。

对于本文提出的组件管理器模式的组件,必须以动态链接库形式实现,动态链接库中调用函数的名称必须相同,这样组件管理器才能调用;返回值必须是预先定义的远程调用类,实现内容是创建并返回此远程调用类的继承类的实例,这是引用动态链接库中对象的规范,相关细节可参考从动态链接库中引用对象的资料。

具体实现如下(Delphi 实现)[4]:function CreateBO :TRem otBO ;S tdCall ; begin Result :=TSample.Create ; end ;与前面介绍相对应,调用函数名统一用CreateBO ,返回值为远程调用类TRem otBO ,TSample 是从TRem otBO 类继承而来的子类。

相关的业务逻辑的实现都封装在TSample 类中。

以下是TRem otBO 的定义和TSample 实现业务逻辑的例程:TRem otBO =class private FParaX ml :S tring ; public procedure ExecuteC ommand ;virtual ;abstract ;property ParaX m l :S tring read FParaX m l write FParaX m l ; end ;TSample =class (TRem otBO ) public procedure ExecuteC ommand ;override ; end ;implementationprocedure TSample.ExecuteC ommand ;begin showmessage (ParaX ml );end ;由上可见,TRem otBO 类是一个抽象类,方法ExecuteC ommand 必须在其子类中实现。

有了以上的组件实现的规范,组件管理器就可以很容易地调用对象组件了。

具体调用过程为:客户端通知组件—702—© 1995-2005 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.管理器业务实现对象的动态链接库及参数列表,组件管理器动态加载动态链接库并传入参数,如果有返回值,组件管理器接收并发给客户端。

调用过程如下:var DllHandle:Thandle; qq:TRem otBO; CreateBO:Function():TRem otBO;begin DllHandle:=Loadlibrary(’XXXXX.dll’); try if DllHandle=0then showmessage(’err’); @CreateBO:=G etProcAddress(DllH andle,’CreateBO’); qq:=CreateBO; qq.ParaX ml:=’Hello!’; qq.ExecuteC ommand; finally freelibrary(DllHandle); end;end;客户端与组件管理器通信的媒介采用X M L[5]。