(计算机应用技术专业论文)基于j2ee的共享数据环境研究与应用.pdf_第1页
(计算机应用技术专业论文)基于j2ee的共享数据环境研究与应用.pdf_第2页
(计算机应用技术专业论文)基于j2ee的共享数据环境研究与应用.pdf_第3页
(计算机应用技术专业论文)基于j2ee的共享数据环境研究与应用.pdf_第4页
(计算机应用技术专业论文)基于j2ee的共享数据环境研究与应用.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于j 2 e e 的共享数据环境研究与应用 摘要 在信息化建设呼声高涨的今天,许多企业、学校、机关等纷纷建立了自己的管 理信息系统。然而我们发现,在实际应用中,我们经常需要其他系统中的共享数据。 原有分散系统之间的数据库之间往往没有很好的实现共享,在实际应用中却需要共 享,这就形成了很多“信息孤岛”,这些信息孤岛使我们历史积累的大量有用数据 失去了进一步开发的价值。 本文详细介绍了j 2 e e 平台以及基于j 2 e e 平台共享数据环境的构成,对构建基 于j 2 e e 平台的共享数据环境提出了完整的解决方案,并且讨论了实现系统所需的 关键技术。本文在分析已有信息系统在数据共享和传输方面的缺陷结合j 2 e e 技术 和现已有资料的基础上,提出了一套完整的共享数据环境方案。采用了综合数据库 以及数据转换环境等概念。在该方案中,共享数据环境分为由数据转换环境和综合 应用环境构成。本文详细介绍如何建立数据转换环境,数据转换环境的核心是综合 数据库,要建立综合数据库要经过综合数据库的建模与设计、综合数据库建模实现、 数据的抽取与转换、数据清洗、问题数据处理等过程,采用数据清洗等最新技术, 解决了异构数据库之间的数据访问以及扩展应用等问题。 关键词: 中间件;分布式;数据交换;j 2 e e ;e j b ;数据集成;数据共享;共享数据环 境:数据库 兰刿型王盍堂亟堂焦监塞一一一一一茧曼 r e s e a r c ha n da p p l i c a t i o nt h es h a r ed a t a e n v i r o n m e n tb a s e do nj 2 e e a b s t r a c t t o d a y ,m a n yc o m p a n i e sb u i l tu po w nm a n a g e m e n ti n f o r m a t i o ns y s t e m h o w e v e r ,w eu s u a l l yn e e dt h es h a r ed a t aw i t h i no t h e rs y s t e m s av e r y d i f f i e u l ts h a r eo ft h ed a t a b a s eb e t w e e no y i g i n a ld i s p e r s i o ns y s t e m ,t h i s b e c a m ea1 0 to f ”i n f o r m a t i o ni s l a n d s ”t h e s ei n f o r m a t i o ni s l a n d sm a k e s o u rd a t a1 0 s et h ev a l u eo ft h ed e v e l o p m e n t t h i st h e s i si n t r o d u c et h et e r r a c eo fj 2 e ea n da c c o r d i n gt ot e r r a c e s h a r ed a t ae n v i r o n m e n to fj 2 e e p u tf o r w a r dt os e tu pa c c o r d i n gt ot h e s o l u t i o no ft h es h a r ed a t ae n v i r o n m e n ti n t e g r i t yo ft h et e r r a c eo fj 2 e e , a n dd i s c u s s e dt h ek e yt e c h n i q u e t h i st h e s isp u tf o r w a r das e to fs h a r e d a t ae n v i r o n m e n t p r o j e c t o f i n t e g r it y a d o p t e dt h ec o n c e p t s s u c ha s c o m p r e h e n s i v ed a t a b a s ea n dt h ed a t ac o n v e r s i o ne n v i r o n m e n te t c i nt h a t p r o j e c t ,t h es h a r ed a t ae n v i r o n m e n t i sd i v i d e di nt ob ec o n v e r t e dt h e e n v i r o n m e n ta n d c o m p r e h e n s i v ea p p li e d e n v i r o n m e n t s b y t h ed a t at o c o n s t i t u t e t h ec o r eo ft h ed a t ac o n v e r s i o ne n v i r o n m e n ti sc o m p r e h e n s i v e d a t a b a s e e s t a b l i s h m e n tc o m p r e h e n s i v ed a t a b a s en e e d st os e tu pt h em o l d a n dd e s i g n s ,c o m p r e h e n s i v ed a t a b a s er e a l i z a t i o n ,t h ed a t as a m p l ew i t h c o n v e r s i o n ,t h ed a t ac l e a n ,t h ep r o b l e md a t ap r o c e s s i n ge t c t h ep r o j e c t s a d o p t i o nd a t ac l e a n st h el a t e s tt e c h n i q u ei ne t c ,r e s o l v i n gt h ed a t a b e t w e e nt h ei n f o r m a t i o ni s l a n d si n t e r v i e wa n de x p a n dt h ea p p l i e d p r o b l e m k e y w o r d s : m i d d l e w a r e :d i s t r i b u t e d ;d a t ae x c h a n g e :j 2 e e ;e j b ;d a t ai n t e g r a t i o n d a t as h a r e :s h a r ed a t ae n v i r o n m e n t :d a t a b a s e 原创。e f 声明 y 7 2 1 0 1 3 本人声明,所呈交的学位论文是本人在导师指导。f 进行的研究工作及取得的研 究成果。尽我所知,除了论文中特剐加以标注和致谢的地方外,沧文中不包含其他 人已经发表或撰写过的研究成果,也0 i 包含为获得兰州理工大学或其他单位的学位 或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文中作 了明确的说明。 作者签名:彦静 日期:立止年月f f 关于学位论文使用授权说明 本人了解兰州理工大学有保留、使用学位沦文的规定,即:学校有权保留学位 论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,町 以采用复印、缩印或其它手段保存学位论文;学校可根据国家或甘肃省有关部门规 定送交学位论文。 作者签名:童趁垂导师签名日期:卫生年月上日 兰捌理王盘堂亟_ 土堂位论窑一j 量l l 逾 1 1 概述 第一章绪论 大多数现有的信息系统是各部门根据自己的需要单独设计和研制的,各系统 之间的一体化程度和数据共享水平普遍不高。然而我们发现,在实际应用中,我 们经常需要其他系统中的共享数据。在这种时候,我们往往会遇到一下几个问题: 1 、数据库建立的时候没有考虑到数据库共享;2 、不同的数据库系统可能采用了 不同的d b m s 甚至是不同的操作系统;3 、不同的数据库系统中起相同作用的表可 能有不同的名称,起相同作用的属性也可能有不同的名称,在实际应用中如何消 除这些差异:4 不同数据库系统中起同样作用的表中可能会有许多不同的字段, 有的数据库系统中表的字段少,丽有的多。在实际应用中我们往往无法消除这些 差异;5 、如何统一的表示这些具有差异性的数据文件。如何解决这些问题是我 们建立顺利运用共享数据的关键。为了满足同益增长的数据共享需求,必须全面 提高信息系统的一体化建设水平 1 。 然而,数据环境建设是企业信息化关键的基本工作。分析企业信息化四项任 务的相互关系及实现难度,很容易发现:企业信息基础设施基本上是花钱买来的, 而信息资源的开发利用却是花钱也无法买到的,至于真正意义上的企业集成信息 系统,从来也没有哪一家集成商的“交钥匙工程”获得过成功。一个时期以来, 不少人“重硬轻软”、“重软件轻数据”,只重视通信网和计算机网,不重视信息资 源网,这对企业信息化建设来说,都是”见木不见林”。 企业集成信息系统的基础与核心是数据集成,或者说是标准化、规范化的信 息资源管理,只有在这个基础上才能建立和运行集成化的信息系统。 准确地理解和创建企业共享数据库是一个关键技术问题。例如,某公司最先 开发了工资系统,按职工工资单建立了数据存储。后来又开发了人事系统,按人事 档案建立了人事数据存储。在管理工作中,工资系统要用人事数据,人事系统要用 工资数据,这就需要编制至少2 个数据抽取和格式转换接口。随着公司的发展和 职工人数的增加,又开发了职业历史跟踪系统,并购买了工班计划软件包。这样, 四个应用系统相互使用数据,就至少需要1 2 个接口。而接口的数目和复杂性,随 着新的应用的增加而按几何级数增加,因此,靠增加接口的办法实现系统集成是 不可能的。 企业信息系统建设搞总体数据规划的基本目的,就是要对相互有关的应用项 目的倍息资源搞好规划和协调。通过这项工作,可以最大限度地提高数据的共享, 使数据冗余度降到最低。上例四个应用中,如果将有关职工的信息组织成共享数 据库,四个应用都直接存取共享数据库,而不是通过接口互用数据,就简单、可靠、 高效率地实现了四个应用的集成。 工资单和人事登记表等是管理人员使用的数据格式,我们把它称为“用户视 图”。般来说,不能按用户视图的原样子来建立数据库。然而,实际工作中许多 应用系统都是这样“建库”的,这正是许多单位信息系统搞不好的根本原因。 詹姆斯马丁( j a m e sm a r t i n ) 在8 0 年代初提出了企业计算机信息系统以数 据为中心的原理,写出了数据集成的理论和方法专著信息工程与总体数据规 兰蛆理工盍兰亟堂位论塞 一 签= 重缝监 划。”数据中心”原理是指,只要企业的性质和目标不变,它的数据类就是稳定的, 任何经营管理活动都离不开对这些数据的存取。信息系统的开发应该面向数据, 而不应该面向处理过程,因为处理过程是多变的。他明确提出”数据环境”( d a t a e n v i r o n m e n t ) 的概念。认为企业的计算机应用有四类数据环境,反应了由低级到 高级的发展过程。我们说,企业信息系统集成的基础与核心任务是数据集成,就 是要改造以数据文件和应用数据库为主的、混乱的、低档次的数据环境。企业信 息系统集成的重要标志是达到高档次的数据环境主题数据库和信息检索系 统。 诺兰( n o l a n ) 模型把集成和数据管理分为前后两个阶段,似乎可以先搞集成 后搞数据管理。但后来的大量实践证明这是行不通的。 米歇( m i s c h e ) 模型对此做了修正,说明了信息系统集成与数据管理不可分, 集成阶段的重要特征就是搞好数据组织,或者说信息系统集成的实质是数据集 成。企业信息资源管理( i r m ) 的技术工作就是数据环境的建设,特别强调以主题 数据库为主体的集成化的数据环境的建设。 1 2 国内外研究现状 数据环境技术在国外的研究相对较早,技术也较为先进,国内也有一些学者 在研究 “。 1 2 1 多数据库系统 早期的多数据源集成主要是指异构多数据库之间的集成,有两种集成方式。 第一种方式是多数据库语言系统,它提供了统一的多数据库操作语言和公共接口 以访问成员数据库,各成员数据库高度自治,该方案没有解决语义异构和实现存 取定位透明,用户必须指明所要访问的数据库,数据库之间的约束或依赖关系也 必须由用户或应用程序定义和维护,适合少量数据库的集成。第二种方式是模式 集成系统,它提供了一个全局模式,使得用户可以透明访问各成员数据库,各成 员数据库保持较高的自治性。模式集成适合于集成大量数据库或者要求高的存取 透明度。 由华中科技大学计算机科学与技术学院研制的基于c o r b a x m l 的多数据库原 型系统p a n o r a m a 可以有效集成o r a c l e 、s y b a s e 和d m 2 等数据库。 1 局部模式j 由数据库的数据模型来表示; 2 输出模式:将局部模式转换成公共数据模型得到输出模式; 3 全局模式:集成多个输出模式以产生全局模式以及数据分布的映射信息; 4 用户外模式:为一个用户或一个应用定义的模式,主要用来存放不能由输 出模式导出的附加信息。 多数据库原型系统p a n o r a m a 的体系结构类似m e d i a t o r w r a p p e r 集成系统,是 一种扩展的多数据库集成系统,不仅可以集成各种异构的数据库管理系统,还可 以集成w e b 上的一些文件系统。此外该系统支持常用的查询,修改等操作以及基 本的事务处理命令。 1 2 2 联邦数据库系统 联邦数据库的体系结构如图1 1 所示,它具有以下特点: 由在不同结点上松散耦合分布的异构成员数据库构成:没有全局模式:成员 数据库可自由地加入或退出联邦:单个成员结点有权拒绝或允许其它成员结点对 它的访问:联邦数据模式由本地库数据模式和异地数据模式组成,系统支持基于 兰趔蛋工太堂亟堂位论奎噩= 重缝监 联邦模式的多数据库查询。 圈1 一l 邦数据库的系统体系结构 联邦数据库系统在每两个数据库之间建立连接,允许数据库成员之间的相互 访问,实现起来较为简单,缺点是随着成员库的增加,链接数较多 1 2 3 统一库结构共享数据环境 图1 2 统一库结构共享数据环境模型 图1 2 是前一段时间比较流行的一个共享数据环境技术的框架,我们可以 看出该框架结构比较复杂,不便实现。 第二章分布式对象的技术基础 2 1 软件设计的基本思想 2 1 2 隐式与显示 隐式( i m p l i c i t l y ) 与显式( e x p l i c i t i l y ) 是软件开发技术中经常出现的两个修 饰术语,用于指明程序设计语言、编程工具或软件开发环境等对软件开发人员的 两种不同支持方式【4 】。例如,一个采用面向对象方法完成的系统设计可以采用c 语言实现,然而c 语言对面向对象的支持是一种隐式的方式,面向对象设计的 许多概念在c 无法直接地表达出来,显然这种隐式支持远远比不上c 十+ 、j a v a 、 a d a 、e i f f e l 、s m a l 】t a l k 等面向对象程序设计语言提供的显式支持。 软件开发人员获德显式支持的本质可看作是将许多原来必须有程序员动手 实现的任务交由更底层的编译程序、开发工具或运行环境完成。例如在数据库管 理系统的帮助下,应用程序开发数据处理应用程序时减轻了许多数据定义、数据 操纵、完整性、安全性等方面的负担。程序设计技术与软件开发技术的发展方向 之一是不断为软件开发人员提供更完善、更有效的显式支持。 程序设计技术的发展过程很好地体现了这一趋势。侧如,c 语言或p a s c a l 语言无法显式地描述求平方根函数s q u a r e r o o t 0 中可能引发的异常( 譬如计算对 象是个负数) ,而c + + 或j a v a 语言允许在操作的规格说明( 即操作的对外接口) 中显式地将操作实现可能引发的异常表达出来,这种显式表达使编译程序可帮助 程序员检查操作实现中是否真的可能引发这些异常,并约束使用这些操作的程序 必须依据操作接口处理哪些异常。此外,将异常作为操作接口的一部分也有助于 使用操作的程序员更全面地理解这些操作的语法与语义。 又如,在面向对象程序设计中一个实体除属性与行为外,还应该有实体的属 性与行为应满足的约束。譬如银行账户a c c o u n t 除拥有账户标识、存款余额等属 性及存款、取款、查询余额等行为外,还至少必须满足一个约柬,即在账户生存 期的任一时刻存款余额不得小于0 ( 如果是允许透支的信用卡账户,贝应将约束 修改为透支不得超过某一上限,而透支上限是账户的一个属性) 。在c + + 或j a v a 语言中,程序员无法将这一约束显式地表达出来,只能在账户对象的初始化、存 款、取款等行为中隐式地表达,使用这些对象的其他程序员也只能通过理解这些 行为的实现才能了解到a c c o u n t 的这种约束。当然通过注释将约束表达出来是一 种良好的程序合计风格,但可惜编译程序不能据提供任何有效帮助。相比之下, e i f f e l 程序员可显式地描述a c c o u n t 必须满足的约束,以及每操作之前或操作 之后必须满足的条件,从而可分离正常条件下的业务代码与异常条件下错误处理 代码。 在分布式软件开发中比传统的集中式软件开发有更多的问题需要解决,程序 员可以自己动手解决这些问题,更理想的情况则是由底层的支持( 如语言、工具、 环境等) 帮助程序员完成这些任务。本课题着重讨论在分布式软件开发中需要解 决的核心阉题,以及当前的分布式软件开发规范与产品对解决这些问题提供的支 持。 对显式支持与隐式支持的讨论可以提醒我们,必须留意在分布式软件开发中 存在哪些问题需要解决,这些问题并不会因为得不到显式支持丽消失,在只有隐 兰捌墼王盔堂亟土堂焦地塞簋三重筮查基盟茎鲤基垄基驾 式支持的情况下程序员仍要自行解决这些问题。因而对解决关键问题的显式支持 是评价与选择分布式软件的体系结构规范、规格说明语言与程序设计语言、软件 开发工具与环境的一个重要因素。当然更重要的点是提醒我们,在软件开发过 程只能考虑可为分布式软件开发添加哪些新的显式支持,从而为分布式软件在我 国的推广应用做出自己的贡献。 2 1 2 逻辑的与物理的 逻辑的( 1 0 9 i c a l ) 与物理的( p h y s i c a l ) 本质上分别代表着两个不同的抽象层 次。早在1 0 多年前有i e e e c s a c m 联合制定的9 l 计算教学计划中,就已 将抽象层次( 1 e v e l so f a b s t r a c t i o n ) 列为计算机科学与工程专业学生必须掌握的重 要核心概念之一,这一概念贯穿了计算机学科的众多领域。 所谓抽象是指将复杂事物的一个或多个特性去掉,而只留意其他剩余特性的 行为或过程。我们也可以认为抽象就是将若干有区别的事物的共性抽取出来,并 加以孤立地考察行为或过程。例如在一幅城市地图中,道路、铁路、机场、码头、 桥梁等均被表示为点、线或符号,两个机场表示为不同位置上相同符号的点,因 为我们只关心机场的地理位置而忽略了那些不关心的特性,如机场跑道条数、可 起降机型、地勤人员数目等。显然,抽象行为在很大程度上取决于观察者所站的 角度,譬如一幅军用地图通常比民用地图含有更丰富的信息,譬如桥梁涵洞的最 大通过能力,建造材料等特性。 虽然抽象是人类把握复杂性的最基本方法之一,但这种认知世界的强有力的 工具并不是人类与生俱来,而是人类长期认识世界与改造世界的活动错昌盛的结 果。英国哲学家与数学家罗素在其名著数理哲学导论中断言:“发现一对鸡、 两昼夜都是数2 的实例,一定需要很多年代,其中所包含的抽象程度确实不易达 到。至于1 是一个数的发现,也必定很困难。说到0 ,这更是晚近加入的,希腊 人和罗马人没有这个数字”。 抽象源于人类自身控制复杂性能力的不足:我们无法同时把握太多的细节, 复杂的问题迫使我们将一些相关的概念组织成不同的抽象层次。日常生活中常见 的i s - a 关系满足了人们对概念进行抽象和分类的需要,例如苹果是一种水果,水 果是一种植物等,生物学采用的界、门、纲、目、科、属、种标准生物分类方式 是这一思维方式的经典应用。在程序设计中将这种i s a 关系显式地表达出来而形 成抽象层次的实例,例如变量一类型、对象一类一抽象数据类型、实体一规格说 明、数据流图分解与平衡等。 逻辑层与物理层组织是一种常见的抽象层次。一个典型的c + + 程序从逻辑上 看是由m 个类与1 个主函数m a i n 0 组成,但同样的逻辑组织形式却在物理上可 根据不同需要组织为不同形式的文件模块,整个程序既可能划分为n 。个文件模 块,也能划分为n z 个文件模块。从不同的抽象层次来看,这两个程序的物理组 织形式虽然有所不同,但其逻辑组织形式却完全一样的。 又如在大型信息系统的开发过程中,领域分析与需求说明的主要任务是根据 现有信息系统的物理模型建立更高抽象层次的逻辑模型,逻辑模型抛弃了物理模 型中那些开发人员不关心的细节,又表达了系统边界之内拥护最关心的内容,这 一建模过程的本质就是一个抽象过程。通过对逻辑模型的研究与改进,软件开发 人员可实现以计算机和网络为管理工具的一个新物理模型。 在分布式软件系统中,有许多机制虽然与传统的集中式软件在物理层次表现 出很大差异,但从逻辑层次长看它们确实统一的,例如普通函数调用与远程过程 调用( r p c ) 、对象消息传递与远程方法调用( r m i ) 、接口与实现的分离、同一接 兰世| 理兰太堂硒坐焦地童 箍三童壁壶式盟塞的热垄薹趟 口多种实现等。因而在分布式对象技术的应用中,利用不同抽象层次可帮助我们 站在更高层次掌握分布式软件系统的这种机制,并能够以一种统一的知识框架来 理解分布式软件与传统集中式软件的基本概念、表示技术以及开发过程。 2 1 3 面向对象技术 2 0 世纪8 0 年代兴起的面向对象技术 5 ,己在软件生存期的各个阶段取代了 传统的结构化方法,成为当今软件开发的主流技术。在分布式软件开发领域也不 例外。 面向对象开发过程本质上是一个建模过程。开发人员通过分析问题域中实体 的属性、行为、约束等,抽象出能描述这些实体共同结构与特征的概念,然后在 计算机中利用类建立这些概念的系统模型,再通过类创建具体的对象实例模拟问 题域的实体行为。类似m j a c k s o n 提出的j s d ( j a c k s o ns y s t e md e v e l o p m e n t ) 方 法,面向对象开发方法强调将系统功能建立在系统模型之上,所有系统功能采用 底层的系统模型提供的术语来表达,从而提高了软件系统的可扩展性与可维护 性。 除封装、信息隐藏、数据抽象、模块化、异常处理等特征外,面向对象技术 的最主要特色是继承与多态性。继承是日常生活中i s a 关系在程序中的显式表 达,是复用数据与操作的重要手段。程序多态性这一术语的含义甚广,面向对象 程序的多态性主要是指运行期间程序表现出来的多态性,他建立在继承与动态绑 定的基础上,使得一个对象在程序运行时可从属不同的动态类型,从而大大提高 了面向对象程序的表达能力。多态性是将定义的代码融合到已有应用框架的一种 强有力的工具,光法应用在图形用户界面、多线程程序设计、分布式对象组件等 高级a p i 中。 先进的分布式计算技术总是与面向对象技术结合在一起,从而可分享面向对 象技术带来的众多好处。例如,由开放软件基金会( o s f ) 于1 9 9 2 年发布的分 布式计算环境( d i s t r i b u t e dc o m p u t i n ge n v i r o n m e n t ,简称d c e ) 采用远程过程调 用( r e m o t ep r o c e d u r ec a l l ,简称r p c ) 技术,r p c 支持开发人员进行结构化程 序设计,使得客户程序像调用本地过程一样调用服务程序中的远程过程;而由 s u n 公司于1 9 9 6 年发布的远程方法调用( r m i ) 技术则是一种分布式对象模型, 它保持了j a v a 语言的对象语义,支持分布式应用程序员进行面向对象程序设计, 在客户程序中可以像将消息传递给本地对象一样,将消息传递给服务程序中远程 对象。 当前几种主流的分布式计算模型均有机地融合了分布式计算与面向对象技 术,包括o m g 组织的公共对象请求代理体系结构( c o r b a ) 、m i c r o s o f t 公司的 分布式组件对象模型( d c o m ) 、s u n 公司的企业级j a v a b e a n s ( e j b ) 等。 2 1 4 软件体系结构 随着计算机软件系统的规模不断增大和复杂性不断提高,在软件开发过程中 对整个软件系统的体系结构进行分析与设计远比对算法与数据结构的选择更为 重要。软件体系结构关心的课题正是整个软件系统的结构,他决定一个软件系统 由什么样的组件构成,以及这些组件之问的交互关系如何,并提供一种模式指导 组件的合成。尽管严格的形式化工作仍处于实验阶段,但软件体系结构在软件工 程中已扮演着越来越重要的角色【6 】。 典型的软件体系结构风格有设计系统或通信协议常用的层次化设计风格、设 计编译程序或信号处理程序常用的管道过滤器风格、设计图形用户界面常用的 事件驱动风格、设计分布式应用程序常用的客户机服务器风格。一个实用的软 兰捌堡王盘堂亟堂僮盐塞 箍三童筮壶式盟塞艘莛鲞基型 件系统通常是几种典型体系结构风格的有机组合。 分布式软件系统一般基于客户机服务器( c l i e n t s e r v e r ,简称c s ) 模型。 组成系统的核心组件是客户程序与服务程序,不同的分布式软件体系结构决定了 各自不同的组件以及这些组件之间的交互方式。例如,在o m g 的c o r b a 模型 中,存在若干成为对象请求代理( o r b ) 的组件,这些组件之间采用因特网o r b 间协议( i i o p ) 进行通信;在o s f d c e 中,客户程序与服务程序之间通过远程 过程调用( r p c ) 进行交互,参数与返回值的编码采用外部数据表示( x d r ) 技 术;而s u n 的e j b 组件模型则利用远程方法调用( r m i ) 进行交互,参数与返 回值的编码采用j a v a 语言专用的对象序列化技术。 2 2 客户机j l i 务器体系结构 2 2 1 客户机与服务器 2 0 实际9 0 年代兴起的客户机服务器数据库技术是自7 0 年代关系数据库技 术以来数据库领域的一次重大飞跃。在客户机,服务器数据库系统中,系统的处 理任务被划分为客户系统与数据库服务器前后两端,因而褡裢的数据库操作可在 后端运行,工作站能够运行前端软件即可。尽管客户机朋艮务器系统比传统的集 中式系统更复杂,然而这一新的计算模型带来的优势是显而易见的,例如减轻了 网络传输负担,实现了工作站无关性,更方便维护数据的完整性等 7 】。 其实客户机朋务器体系结构并不仅仅限于数据库应用,这种计算模型有着 更广阔的前景。如果一个系统被划分为两类不同的但相互联系的组成部分,其中 一方提出对信息或服务的请求( 成为客户机) ,而另一方提供这种信息或服务( 称 为服务器) ,那么这种体系结构可看作是一种客户机朋艮务器计算模型。按照这一 定义,局域网中的工作站与文件服务器至今也是一种客户机服务器模型,其中 工作站项文件服务器发送服务器请求,例如要求访问文件或网络打印机等,文件 服务器接受这些请求后为工作站提供相应服务。因特网的许多应用程序均采用客 户机,服务器模型,例如w e b 浏览器与服务器、电子邮件客户程序与服务程序、 f t p 客户程序与服务程序等。 客户机与服务器是一个相对的概念,一个服务器可能是另一个服务器的客户 机,一个客户机也可能是另个客户机的服务器。客户机与服务器的划分有时是 指执行任务的计算机硬件系统或通信设备,有时也指计算机软件系统,这时我们 将这两端分别称为客户程序与服务程序。 一个常见的简单的例子是在过程式程序设计中,执行过程调用的表达式的子 程序与实现过程体的子程序看作一种客户机服务器体系结构,其中过程实现方 扮演服务程序,过程调用方扮演客户程序。在面向对象程序设计中,消息传递可 看作是客户程序向服务程序发送服务请求的一种途径,发送消息的是客户程序, 接收并处理消息的是服务程序。 在普通的过程调用中,对于过程实现与过程调用双方最为重要的是两者之间 的接口以及通信协议。客户程序与服务程序之间的描述越清晰,对编写客户程序 与服务程序的开发人员帮助越大,同时各种编程工具或可复用组件管理工具越有 可能为开发人员提供有力支持 8 】。在一个过程的接口中一般都包含了过程名字、 返回值类型、形式参数与后置条件等。尽管当前这些接口信息都是语法层面上的, 但如果有朝日提供语义层面的接口描述,软件开发人员将看到软件构造自动化 的曙光,这当然还依赖于形式语义学领域研究的进一步突破。 兰趔堡王太堂亟土坐僮迨室 箍三童盆查丞盟塞盟垫盎基垂! ! 分布式软件系统绝大多数采用客户机朋务器体系结构,其中最重要的仍是 上述接e 1 问题与通信协议问题,只不过由于客户端与服务端在物理层次上的分 离,导致接口约定更加重要且通信协议更加复杂,此外可靠性、安全性、性能因 素显得更加突出。 2 2 2 客户端与服务端的分离 分布式软件系统与传统的集中式软件系统的主要区别在于客户端与服务端 的地理位置分离。虽然这两种软件系统在逻辑层次上有许多一致的方面,但在物 理层次上两者仍有许多重大的区别。在分布式软件系统中,客户端与服务端的物 理分离可带来许多好处【9 】。 首先,整个系统的所有计算任务可在客户端与服务端上重新分布负载,从而 使得r i s c 工作站与微机建立的计算机网络系统可胜任以前只有昂贵的大型机 ( m a i n f r a m e ) 才能完成的工作,实现企业计算规模的下行( d o w n s i z i n g ) ;而与 传统的基于局域网文件服务器的应用系统相比,客户端与服务端的分离大大减少 了网络传输的数据量,可有效地提高系统的运行效率,实现企业计算规模的上行 ( u p s i z i n g ) 。 其次,这种新的计算模型更好的支持了平台的无关性。客户端既可以是i b m p c 兼容微机、m a c i n t o s h 微机、r i s c 工作站等不同机型,也可以运行m i c r o s o f t w i n d o w s 、1 i b mo s 2 、a p p l es y s t e m 8 、各种版本的u n i x 等不同操作系统,还支持 t c p i p 、i p x s p x 、n e t b e u i 等不同网络协议。 此外,采用客户机朋匣务器计算模型的软件系统具有更好的可扩展性。例如, 可在服务端功能不变的前提下对服务端程序进行改进或扩充,而这种改进与扩充 不会影响到客户端的应用程序。 当然这种分离也会带来一些问题,对于软件开发人员而言,最主要的问题是 分布式软件系统通常比集中式软件系统更为复杂。例如,开发人员不得不分别编 写客户端与服务端的应用程序,并力求保持两端应用程序的一致性,软件系统的 调试、测试、部署、维护等工作也更加困难。此外,设计分布式软件系统比设计 集中式需要考虑更多的可靠性、安全性、性能等软件质量要素。 2 2 3 两层结构与多层结构 早期的客户机朋艮务器体系结构又称为两层结构。在图2 1 所示的两层结构 中, 客户机( 通常是桌面p c )服务器( 典型的u n i x 服务器) i 童;:用归界面代码i ,i 。 ;存储避穆 。 i 4 i i :业务逻辑我鹤f 、峄= j 匕叠j 蝴骞_ 图2 - 1 两层客户机,服务器体系结构 兰趟理王盍堂堑堂焦盈毫箜三童盆查式越囊殴棼垄基型 软件系统被划分为客户组件与服务组件两部分【l 。客户组件实现应用程序与终端 用户进行交互的表示逻辑( r e p r e s e n t a t i o nl o g i c ) ,并且包含应用程序的大部分业 务逻辑( b u s i n e s sl o g i c ) ;典型的表示逻辑通常采用图形用户界面方式,业务逻 辑负责执行实际应用问题的特定业务流程。服务端组件主要由关系数据库组成, 并可能包含以存储过程表达的部分简单业务逻辑。客户端组件与服务端组件之间 的通信可采用数据库中间件o d b c 或其他专用接口。 在两层客户机朋臣务器体系结构中,由于客户程序直接访问数据库,因而 台客户机都必须安装数据库驱动程序,增加了系统安装与维护的工作量。由于数 据库由众多客户程序直接访问,造成系统数据的完整性与安全性难以维护。更突 出的问题是两层结构的可扩展性较差,由于客户端组件含有数据库访问功能,对 软件系统的业务逻辑、数据库访问,甚至数据库本身的任何修改常常导致要求在 所有客户机上重新部署客户端组件。 在两层结构的基础上发展起来的多层客户机服务器体系结构提高了系统的 可扩展性与数据安全性。尽管从原理上我们可划分出任意多层次,但实际应用中 最常见的是三层结构,它将软件系统划分为三个逻辑层次:表示层、业务逻辑层 和数据层,如图2 2 所示。 客户机 ( 表示层) 应用服务器 ( 业务逻辑层) 数据库服务器 ( 数据层) 图2 - 2 三层客户机服务器体系结构 三层客户机朋醍务器体系结构与两层结构最大的区别是将业务逻辑层抽象为 一个独立的中间层,客户端的表示层与服务端的关系数据库之间被中间的业务逻 辑层分隔,表示层组件只能通过业务层组件直接地访问关系数据库。 这种新的软件体系结构至少带来几大好处。首先,由于客户端组件更大程 度地从系统中分离t t :l 来,系统其余部分的变化对客户端的影响进一步减少,从而 提高了整个系统的可扩展性。 其次,中间层可以运行在不同于客户机或数据库服务器的其他机器上,通 过合理的任务划分与物理部署可使整个系统的工作负载更趋均衡,从而提高应用 程序的运行效率。运行业务逻辑层的机器又称应用服务器,利用应用服务器的集 群机制( c l u s t e d n g ) 还可进一步提高系统的可伸缩性与可靠性。 此外,从客户端组件的角度看,业务逻辑中间层相当于将一个企业的所有 业务流程抽象为一组更高层次的应用编程接口( a p i ) ,客户端组件完全通过这 些接口构建整个企业的应用系统,并且客户端的用户界面方式也可呈现出多样 兰趟堡工奎堂亟堂焦迨塞箍三墓盆盔式牡基尥基杰基地 性。与两层结构相比,三层结构或多层结构可更好地支持对企业业务流程的集中 控制与管理。 2 2 4 分布式对象系统 当前流行的分布式对象技术是面向对象设计风格与多层客户机服务器体系 结构的有机结合。在这种软件体系结构中,应用程序的所有功能都表达为由众多 分布式对象提供的各种服务,每一对象也可利用系统中的其他对象( 甚至是来自 其他系统的对象) 提供的服务。一个对象既可以担任服务方角色,也可以同时担 当客户方角色,客户程序与服务程序之间的界限更加淡化【“】。 与客户机朋匣务器体系结构相比,分布式对象系统具有更高的灵活性。系统 中的分布式对象通过接口向其他对象表明它所能提供的信息或服务,其他对象根 据接口了解这些分布式对象的用法。对象接口是分布式对象系统的核心内容,它 代表了软件系统中不同组件之间必须共同遵守的和约。只要对象接口的语法与语 义保持不变,对象实现的变化( 例如采用不同的数据结构与算法、由关系数据库 改为对象数据库、甚至改用不同的程序设计语言等) 不会对使用该对象的起他对 象产生任何影响。 分布式对象技术通常还为应用程序中的大量分布式对象提供了诸如并发控 制、事务处理、持久性、安全性等服务,帮助开发人员构建具有高度可伸缩性和 安全性的分布式应用系统。 兰趔壁兰盘堂照坐焦:| 垒塞 差三童j g 眭与g 厦羞毽越丕 第三章j 2 e e 与e j b 关键技术 本章从五个方面对j 2 e e 进行了比较全面的介绍。从j 2 e e 的概念说起,到它的优 势,蛩j j 2 e e 典型的四层模型和它的框架结构,最后是j 2 e e 十三种核心技术的一个简 介。本文章分门别类的对j 2 e e 中的服务,组件,层次,容器,a p i 都做了比较详细的 介绍,重点介绍e j b 技术。 3 1 j 2 e e 的概念 目前,j a v a2 平台有3 个版本,它们是适用于小型设备和智能卡的j a y a2 平台 m i c r o 版( j a v a2p l a t f o r mi i c r oe d i t i o n ,j 2 m e ) 、适用于桌面系统的j a v a2 平 台标准版( j a v a2p l a t f o r ms t a n d a r de d i t i o n ,j 2 s e ) 、适用于创建服务器应用 程序和服务的j a v a2 平台企业版( j a v a2p l a t f o r me n t e r p r i s ee d i t i o n ,j 2 e e ) n 2 | 。 j 2 e e 是一种利用j a v a2 平台来简化企业解决方案的开发、部署和管理相关的复 杂问题的体系结构。j 2 e e 技术的基础就是核一b j a v a 平台或j a v a2 平台的标准版,j 2 e e 不仅巩固了标准版中的许多优点,例如”编写一次、随处运行4 的特性、方便存取数 据库的j d b ca p i 、c o r b a 技术以及能够在i n t e r n e t 应用中保护数据的安全模式等等, 同时还提供了对e j b ( e n t e r p r i s ej a v a b e a n s ) 、j a v as e r v l e t sa p i 、j s p ( j a v as e r v e r p a g e s ) 以及x m l 技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅 缩短投放市场时间的体系结构。j 2 e e 体系结构提供中间层集成框架用来满足无需太 多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的 开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集 成强有力支持,完全支持e n t e r p r i s ej a v a b e a n s ,有良好的向导支持打包和部署应 用,添加目录支持,增强了安全机制,提高了性能。 3 2j 2 髓的优势 j 2 e e 为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制: 保留现存的i t 资产:由于企业必须适应新的商业需求,利用已有的企业信息系 统方面的投资,而不是重新制定全盘方案就变得很重要。这样,一个以渐进的( 而 不是激进的,全盘否定的) 方式建立在已有系统之上的服务器端平台机制是公司所 需求的。j 2 e e 架构可以充分利用用户原有的投资,如一些公司使用的b e at u x e d o 、 i b mc i c s ,i b m e n c i n a ,、i n p r i s ev i s i b r o k e r 以及n e t s c a p ea p p l i c a t i o ns e r v e r 。 这之所以成为可能是因为j 2 e e 拥有广泛的业界支持和一些重要的企业计算领域供 应商的参与。每一个供应商都对现有的客户提供了不用废弃已有投资,进入可移植 的j 2 e e 领域的升级途径。由于基于j 2 e e 平台的产品几乎能够在任何操作系统和硬件 配置上运行,现有的操作系统和硬件也能被保留使用。 3 2 1 高效的开发 j 2 e e 允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成。 这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。高级 兰拙墼至盍兰亟兰照逾塞 簋三童2 堕生啦羞整鼓苤 中间件供应商提供以下这些复杂的中间件服务: 3 2 2 状态管理服务 让开发人员写更少的代码,不用关心如何管理状态,这样能够更快地完成程序 开发。 3 2 3 持续性服务 让开发人员不用对数据访问逻辑进行编码就能编写应用程序,能生成更轻巧, 与数据库无关的应用程序,这种应用程序更易于开发与维护。 3 2 4 分布式共享数据对象c a c h e 服务 让开发人员编制高性能的系统,极大提高整体部署的伸缩性。 3 2 5 支持异构环境 j 2 e e 能够开发部署在异构环境中的可移植程序。基于j 2 e e 的应用程序不依赖任 何特定操作系统、中间件、硬件。因此设计合理的基于j 2 e e 的程序只需开发一次就 可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。j 2 e e 标准也允 许客户订购与j 2 e e 兼容的第三方的现成的组件,把他们部署到异构环境中,节省了 由自己制订整个方案所需的费用。 3 2 6 可伸缩性 企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足 那些在他们系统上进行商业运作的大批新客户。基于j 2 e e 平台的应用程序可被部署 到各种操作系统上。例如可被部署到高端u n i x 与大型机系统,这种系统单机可支持 6 4 至2 5 6 个处理器。( 这是n t f l 匣务器所望尘莫及的) j 2 e e 领域的供应商提供了更为广 泛的负载平衡策略。能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可 达数于个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。 3 2 7 稳定的可用性 一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。因为 i n t e r n e t 是全球化的、无处不在的,即使在夜间按计划停机也可能造成严重损失。 若是意外停机,那会有灾难性后果。j 2 e e 部署到可靠的操作环境中,他们支持长

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论