




已阅读5页,还剩80页未读, 继续免费阅读
(计算机软件与理论专业论文)基于comdcom的异构数据库中间件的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要中国科学技术大学硕士学位论文 摘要 解决各类数据库系统的异构问题是8 0 年代中期以来数据库界的研究热点, 并提出了很多的解决方案。对地理上分布的多个异构数据库,在尽可能少地影 响其本地自治性的基础上,实现异构数据库的信息共享是本文的研究目标。 本文采用组件化程序的设计思想,基于c o m i ) c o m 组件标准设计并实现 数据库互连中间件。该中间件解决了异构多数据库连接、数据类型转换、查询 分解、结果汇总、事务处理、并发控制等异构数据库互连的关键问题,实现了 透明访问及信息共享的目标。中间件的实现由于融合了c o m 的优点,并引入了 一些新的思想和方法,使得系统具有适应性强、灵活性高、可维护性好、局部 自治等诸多优点。 文中简要介绍了数据库系统,异构数据库系统的发展,探讨了解决数据库异 构性所需面临的问题。根据异构数据库互连的功能需求,提出了基于组件对象 模型分布式组件对象模型的异构数据库的三层体系结构解决方案。该方案的关 键技术有:建立数据库连接池提高系统访问局部数据库的效率;建立全局数据 字典实现全局一致模式访问;分析全局查询语句,将其分解为可在局部库上执 行的局部查询语句:采用“复制+ 上锁解锁”方式模拟2 p c 协议实现全局事务 管理;利用信号量机制实现多线程并发控制。 在此中间件的基础上开发的应用软件烤烟质量评价体系,解决了用统一 的方法调用不同数据库中烤烟数据的难题,取得了良好的应用效果。 关键词:异构数据库,中间件,c o m d c o m ,m f c u a b s t r a c t 中国科学技术大学硕士学位论文 a b s t r a c t f i n das o l u t i o nt oi n t e g r a t eh e t e r o g e n e o u sd a t a b a s ei sa ni m p o r t a n tb r a n c h i nd a t a b a s er e s e a r c h m a n ys c h e m e sw e r ed e s i g n e d t h i s 】p a p e ru s e sc o m p o n e n t p r o g r a md e s i g n i n ga n dd e v e l o p i n gd a t a b a 解m i d d l e - s o f t w a r eb yc o m d c o m c o m p o n e n tt e c h n o l o g y t h em l d d l e w a r eg i v e st h eu s e r aac o n s i s t e n t l yg l o b a lv i e w o ft h el o c a ld a t a b a s e sb yg l o b ed a t a b a s e t h i s p a p e r ,i n t r o d u c e s t h e d e v e l o p m e n t o fd a t a b a s es y s t e ma n d m u l t i d a t a b a s e s y s t e mc o m p e n d i o u s l y ,a n d d i s c u s s e st h e p r o b l e m o i l h e t e r o g e n e o u sd a t a b a s ei n t e g r a t i o n t h i s 、p l a c ee m p h a s i s o nr e s e a r c h i n gt h e c o n c e p t i o n ,c l a s sa n df u n c t i o n o fm i d d i e w a r c t h i sp a p e ra l s or e s e a r c ht h e f r a m e w o r ka n di m p l e m e n to fc o m p o n e n t t h e nw ep u tf o r w a r dt h et h r e e s t r a t u m ss t r u c t u r e ds c h e m eo fh e t e r o g e n e o u sd a t a b a s ei n t e g r a t i o no nc o m p o n e n t o b j e c tm o d e la n dd i s t r i b u t e dc o m p o n e n to b j e c tm o d e l ,a n dd e t a i l so ft h e i m p l e m e n ti sa l s os h o w e d t h ed a t a b a s em i d d l e w a r ea c h i e v ek e ya i ma tl o c a ld a t a b a s ej o i n e d ,t h e d i v e r s i t y o ft h el o c a ld a t a b a s e sc o n c e a l e d ,g l o b a lq u e r y ,r e s u l tg a t h e r e d d u et o m e r i t so fc o ma n dj o i n i n gs o m en e wi d e a sa n dm e a n s t h es y s t e m :h a st h e a d v a n t a g eo ff l e x i b l ee x p a n s i b i l i t y ,c o n v e n i e n t ,l o c a ls e l f r u l e o nt h eb a s eo ft h em i d d l e w a r e ,w ed e v e l pt h ea p p l i c a t i o ns o f t w a r e - - s y s t e m o fa p p r a i s i n gq u a l i t yo ff i n e - c u r e dt o b a c e o i tc a nu s et h ef l u e c r u e dt o b a c c od a t a b yg l o b a lv i e w k e y w o r d :h e t e r o g e n e o u s d a t a b a s em i d d l e w a r ec o m d c o m m f c m 第1 章绪论 中国科学技术大学硕士学位论文 第1 章绪论 1 1 异构数据库技术发展的背景 数据库技术是现代信息技术的重要组成部分,也是计算机应用系统的核心和 基础。在过去的3 0 多年里,数据库技术是计算机科学技术中发展最快,应用最 广泛的分支之一。数据库系统的发展根据其数据模型的不同,可分为三个阶段: 第一代是网状,层次数据库系统;第二代是关系数据库系统;第三代是以面向对 象模型为主要特征的数据库系统 ”。 由于数据库的不断发展,造成多种数据库产品的共存。一个大型系统中常有 许多分支机构,由于工作的侧重点不同,各分支机构可能使用不同的数据库管理 系统来管理数据。这样各机构之间因为各个不同的数据库系统在开发过程中形成 了各自不同的标准,在需要有大量的信息交换的时候,就面临着数据库异构问题。 根据异构层次的不同,异构数据库的异构特征体现在以下几个方面: 计算机体系结构的异构:从巨、大、中、小型机到工作站、p c 、咀及笔 记本电脑、嵌入式系统等; 基础操作系统的异构:各个数据库的基础操作系统可以是u n i x 、 w i l a d o w sn t 、o s 2 等: d b m s 本身的异构:可以是同为关系型数据库系统的o r a c l e 、 s q l s e r v e r 等,也可以是不同数据模型的数据库,如关系、模式、层次、网 络、面向对象、函数型数据库共同组成一个异构数据库系统; 系统控制方式不同:有集中式与分布式; 网络的异构:l a n 、w a n 、以太总线结构与令牌环结构等。 1 2 异构数据库互连的需求及研究目标 异构数据库互连就是将分布在网络上不同节点上的多个不同的数据库联合 使用以达到资源共享的目的。进一步讲,异构数据库互连就是将操作系统不同、 操作平台不同、存储方式不同的数据库联合起来,屏蔽其差异,给用于一个概念 第】章绪论中国科学技术大学硕士学位论文 化的包含了所有各个节点的本地数据库中信息的全局数据库,使用户可以对全局 库进行透明的操作。 在异构数据库互连系统中,由于组成整个系统的各个常规数据库是分布在不 同网络结点上的,在异构数据库互连系统概念中,将这些常规数据库称为局部数 据库,将以这些局部数据库为基础所形成的虚拟的数据库( 包括系统中面向用户 的所有数据1 称为全局数据库 2 】【3 】 4 】。 异构数据库互连技术的主要研究内容,就是对用户屏蔽各种层次的异构特 性,为用户提供简便的全局性查询和综合结果。近年发展起来的异构数据库互连 应用技术是一个既与各种数据库密切相关,又有别于各种具体数据库的新的研究 领域。它的研究目标是对地理上分布的多个异构数据库( h d b :h e t e r o g e n e o u s d a t a b a s e s ) ,在尽可能少地影响其本地自治性的基础上,构造具有用户所需要的 透明性的全局数据库,以支持对各数据库的全局应用及各异构数据库之间灵活的 信息交换和共享【5 】1 6 胴。 1 3 异构数据库的应用及本课题的来源 1 3 1 异构数据库的应用领域 异构数据库的应用在实际中是大量存在的: ( 1 ) 电子商务 它包括大量网络交互的参与者,安装有各种专用的信息系统。这种环境下的 挑战包括异质信息源的集成、可靠的分布校验和电子金融。 ( 2 ) 保健信息系统 医生在异地工作时需要多种信息,一个病人的医疗纪录可能存储在多个医院 和保险公司的异构数据库中。有关医疗过程、药物、诊断工具及其辅助治疗的信 息可以从多个系统和数据库中得到。此外,医生为病人开的处方、诊断化验的纪 录以及保险和记账信息,都可以以电子化的方式获取,以便日后使用。要解决的 问题是原有信息的异种数据集成,创建适合所有保健人员使用的各种信息界面。 ( 3 ) 数字出版 将出版社、报社的书籍、文章电子化存储,并通过i n t e r n e t 传送给用户,这 2 第1 章绪论中国科学技术大学硕士学位论文 些信息包括声、像、图、注解等各种形式的信息载体,并需要将这些信息无缝的 集成起来。 ( 4 ) 协同设计【8 现在,诸如飞机等大型工程项目是一批相互独立的公司合作设计建造的,工 程信息的生命周期通常为几十年,这使得有关信息的当前、暂时和历史的配置剧 增。不同的设计方法一般使用不同的设计工具,而且设计工作的持续时间通常比 设计工具的生命周期长。因此,当设计工作结束时,系统可能是由同一工具的不 同版本开发的,为此要解决如下的问题:不同数据源的集成,包括历史遗留的异 构数据源;协同设计要求底层的各种数据库支持数据共享机制和新式的并发控 制;支持各种部件的设计版本,以及多个部件版本组合而成的配置。 1 3 2 课题的来源 研究烟叶的质量在烟草的工业生产中有着重要的意义,烟叶的质量标准是制 造不同等级烟草的重要的配比依据。烟叶质量是一个综合概念,包括外观质量和 内在质量两个方面,不同类型、不同部位的烟叶具有不同的内在和外观的特征。 烟叶质量包括外观质量、化学成分、协调性、物理特性、评吸质量、安全性等。 “科教兴烟”是烟草行业长期坚持的战略,将烟草的各类数据电子化,微机化 对于烟草行业而言有着重要的意义。我们和柳州烟草分公司合作开发的“烤烟质 量评价体系软件”项目是参考国内外有关烤烟质量研究资料,在科学分析及实验 验证基础上,建立烟叶等级( 按国家标准4 2 级) 质量指数;结合烟叶产她生产 水平、所在价区和卷烟厂自身需求,作出某烟区( 基地) 烟叶总体质量评价、重 要等级质量评价和烟厂采购烟叶质量评价。 软件开发的基础首先是要建立烟叶的基本数据库。烟草行业经过几十年的发 展,各个烟草厂商之间大都建立了各自独立的数据库。如柳州烟草分公司下属的 罗城、靖西等烟厂根据本厂的烟叶数据,经过各种测试、鉴定,建立了各自独立 的数据库。由于各类测试费用非常昂贵,有的化学实验甚至要耗资上千万,因此 要对烟草数据做各类分析评估,就必须在原有数据库的基础上进行。而各烟厂的 这些数据存于不同类型的数据库系统中,各自的数据都有着不同的数据模式,要 共享这些数据比较困难。这给我们“烤烟质量评价系统”软件的完成带来了困难。 第1 童绪论 中国科学撞术大学硕士学位论丘 些信息包括声、像、图、注解等各种形式的信息载体,并需要将这些信息无缝的 集成起来。 ( 4 ) 协同设计 现在,诸如飞机等大型工程项目是一批相互独立的公司合作设计建造的,工 程信息的生命周期通常为几十年,这使得有关信息的当前、暂时和历史的配置剧 增。不同的设计方法一般使用不同的设计工具,而且设计工作的持续时间通常比 设计工具的生命周期长。因此,当设计工作结束时,系统可能是由同一工具的不 同版本开发的,为此要解决如下的问题:不同数据源的集成,包括历史遗留的异 构数据源;协同设计要求底层的各种数据库支持数据共享机制和新式的并发控 制;支持各种部件的设计版本,以及多个部件版本组合而成的配置。 1 3 2 课题的来源 研究烟叶的质量在烟草的工业生产中有着重要的意义烟叶的质量标准是制 造不同等级烟草的重要的配比依据。烟叶质量是一个综合概念,包括外观质量和 内在质量两个方面,不同类型、不同部位韵烟叶具有不同的内在和外观的特征。 烟叶质量包括外观质量、化学成分、协调性、物理特性、评吸质量、安全性等。 “科教兴烟”是烟草行业长期坚持的战略,将烟草的各类数据电子化,微机化 对于烟草行业而言有着重要的意义。我们和柳州烟草分公司合作开发的咄 烟质 量评价体系软件”项目是参考国内外有关烤烟质量研究资料,在科学分析及实验 验证基础上,建立烟叶等级( 按国家标准4 2 级) 质量指数:结合烟叶产地生产 水平、所在价区和卷烟厂自身需求,作出某烟区( 基地) 烟叶总体质量评价、重 要等级质量评价和烟厂聚购烟叶质量评价。 软件开发的基础首先是要建立烟叶的基本数据库。烟草行业经过几十年的发 展,各个烟草厂商之间大都建立了各自独立的数据库。如柳州烟草分公司下属的 罗城、靖西等烟厂根据本厂的烟叶数据,经过各种测试、鉴定,建立了各自独立 的数据库。由于各类测试费用非常昂贵,有的化学实验甚至要耗资上千万,因此 要对烟草数据做各类分析评估,就必须在原有数据库的基础上进行。而各烟厂的 这些数据存于不同类型的数据库系统中,各自的数据都有着不同的数据模式,要 共享这些数据比较困难。这给我们“烤烟质量评价系统”软件的完成带来了困难。 共享这些数据比较困难。这给我们“烤烟质量评价系统”软件的完成带来了困难。 第1 章绪论中国科学技术大学硕士学位论文 为此,我们决定使用中间件技术解决异构数据库的数据共享问题,这给系统 带来很多好处。因为中间件不仅能够使得前端用户访问后端的异构数据库实现透 明化,并且保证了访问接口的开放性,可以使系统在以后功能上的扩展更加方便。 通过中间件来访问数据库的另一个好处就是所有的客户端的请求都发送到了中 间件上,减轻了数据库服务器的负担,保证了数据库服务器的性能不会降低。同 时,中间件的采用极大提高了系统的可维护性,在系统内部的某个逻辑发生变化 时,只要改变中间层的相应处理程序,前台用户界面不需要做任何的改动,这样 就大大降低了系统维护的费用。 1 4 中间件技术的现状及其发展 在计算机领域,“中间件”描述一类范围很广的软件产品。它是指位于操作系 统和通过网络交互的分布式应用组件之间特殊的软件层。它隐藏了计算机体系结 构、操作系统、编程语言和网络技术等方面韵异构性,将复杂的协议处理、分割 的内存空间、数据复本、网络故障、并行操作等问题与应用程序隔离开来,为上 层应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应 用软件【9 】【1 0 1 。 从系统层次的角度,可以把当前的中间件软件从下至上依次归纳为四类口l 】: 传统通信中间件、应用服务器、企业应用集成中间件和业务过程管理工具。其中 前两种又合称为基础中间件,因为它们通常支撑单个应用系统或解决单一问题, 与软件平台,如操作系统、数据库管理系统等,结合紧密;后两种属于应用中间 件的范畴,更多用于系统整合,与行业应用系统联系紧密。 传统通信中间件根据它们提供通信的双方又可分为两类:在主动的应用程序 和被动的资源之间提供交互的中间件;为主动的应用程序相互之间提供交互的中 间件。应用到服务器的中间件主要包括数据库中间件和事务处理监控器( t p m ) 。 t p m 又称为交易中间件,也是当前应用最广泛的中间件之一。它能支持数以万 计的客户进程对服务器的并发访问,使系统具有极强的扩展性,因此适用于电信、 金融、证券等拥有大量客户的领域,在对效率、可靠性要求严格的关键任务系统 中具有明显优势。为主动应用模块提供通信的中间件按照其实现机制,主要有三 种:远程过程调用r p c ,对象请求代理o r b 和面向消息的中间件m o m 。三种 第1 章绪论中国科学技术大学硕士学位论文 机制都已成熟,其中o r b 和m o m 仍然具有广泛的用途。 应用服务器是面向i n t e m e t 的w e b 计算环境下出现的新型中间件。应用服务 器除了t p m 的可伸缩、可靠、高效等特性外,应用服务器还具有t p m 没有的执 行和管理应用逻辑、定位和实例化对象以及控制对象生命周期的能力,它侧重有 状态的服务,而且比t p m 支持更标准、更开放的协议和a p i ,支持更大规模的 用户。应用服务器是当前发展最快的中间件类型之一,国内外都有相应产品,而 且形成了相应的标准和规范。最突出的规范是j 2 e e ,它为应用服务器的实现提 供了一个完整的底层框架。 企业应用集成【1 2 】( e a l ) 是利用通用中间件( 如m o m ,o r b ) 融合多种应 用的集成方案,基于中间件的方案可以通过封装应用软件、共享信息、协调工作 流程等降低集成复杂度。应i 峨宁间件可视为一种更高层次的中间件,其为实 现e m 所构筑的企业应用集成平台提供了基本功能组件、服务和开发工具的基 础设施,扩展了中间件,减少了集成工作量。它将许多集成步骤自动化,如数据 路由、映射和转换。企业应用集成中间件很多,突出的如n e o n 的m q i n t e g r a t o r 、 v i t r i a 的b u s i n e s sw a r e 等,在中间件市场上占据着越来越重要的地位,尤其被类 似于银行、电信等拥有众多网点( 子系统) 的单位所需要。 工作流管理中间件是一个人机结合的系统,通过定义、创建工作流,以及协 调、监督、管理工作流的运行( 例如进度检查、工作量平衡等) ,实现了企业业 务处理中各项活动的合作、控制和通信的自动化。工作流管理中间件一般基于客 户服务模式,提供图形化的工作流定义工具,并越来越多地基于w e b 界面操作, 其使用集中在保险、银行、法律等人员密集型的办公环境。 1 5 数据库互连中间件的功能需求 使用中间件技术是解决异构数据库互连问题的一个重要方法。中间件技术的 基本思想是在后段数据源和前端应用程序之间建立一个抽象层。把应用程序与系 统所附软件的较低层次细节和复杂性隔离开来,使应用程序开发者只需处理某个 类型的单个a p i ,而其他细节则可以由中间件处理。这样就使系统对每个不同数 据源的操作变成对单一的中间件的操作,而后再对中间件进行异构处理。 结合“烤烟质量评价系统”中异构数据库的数据共享的研究课题,作者在分 第1 章绪论 中国科学技术大学硕士学位论文 析了目前国内外异构数据库的研究后认为下述功能是数据库中间件所必须的: ( 1 ) 全局数据模式 由于互连的各局部数据库的模式可能互不相同,因此需要建立全局数据模 式,使用户感觉就像使用一个单一的数据库一样,为用户透明地使用一种数据库 打下基础。 ( 2 ) 数据类型转换 由于相同的对象在不同的d b m s 中也许有诸如类型、计量单位等的不同, 因而在纳入局部数据库管理系统时,要识别这些不匹配的数据。 ( 3 ) 全局查询语言口3 1 全局查询语言是相对于全局模式的,全局用户通过该语言访问各局部数据 库,就像访问一个数据库系统一样。 ( 4 ) 查询语言分解 用户发出的全局语言被分解成为面向各局部数据库的语言,再由各局部数据 库管理系统完成相应工作。 ( 5 ) 查询优化 在分解成子查询语句前,可首先对s o l 语句进行优化处理,提高其在局部 的执行效率。 ( 6 ) 查询结果处理 对于来自各局部数据库的局部查询结果要进行汇总才能产生最终结果返回 给全局用户。 ( 7 ) 提供统一接口 统一的接口屏蔽了数据库之间的操作差异,便于应用代码的统一。 ( 8 ) 跨平台支持 中间件可以在不同的开发平台上移植,满足各类应用程序的开发应用。 1 , g 本文的工作 本论文共分为五章: 笫1 章:绪论。先简单介绍了异构数据库系统的背景,接着介绍了异构数据 库互连的需求及研究目标。结合“烤烟质量评价体系”项目的需求,提出用中间 第1 章绪论 中国科学技术大学硕士学位论文 件技术解决异构数据库互连的方案。 第2 章:c o m 组件技术。本章首先研究了c o m 组件技术的产生、结构、特 性,接着重点阐述了基于c o m 的进程内和进程外组件的实现过程。最后研究了 c o m 的包容和聚合特性。 第3 章:异构数据库互连中间件的研究与设计。本章介绍研究了数据库中间 件中所要解决的关键技术和实现策略。 第4 章:基于c o m 的异构数据库中间件的实现。本章给出了基于c o m 组 建标准建立中间件的实现过程。文中详述了接口定义函数中重点函数的实现代 码。 第5 章:数据库中间件的应用烤烟质量评价体系。在数据库中间件的基 础上完成了应用程序的开发。本章介绍了应用程序的功能、对中间件的调用实现 以及分布式系统对组件的调用。 总结语:对全文进行总结。 第2 章c o m 组件技术中国科学技术大学硕士学位论文 2 1c o m 技术概述 第2 章c o m 组件技术 c o m ,即组件对象模型,是由m i c r o s o f t 提出的组件标准,是一种以组件为发 布单元的对象模型,这种模型使各软件组件可以用一种统一的方式进行交互,它 不仅定义了组件程序之间进行交互的标准,也提供了组件程序运行所需的环境 f 1 4 - 1 7 1 。组件对象之间交互的规范不依赖于任何特定的语言,建立在二进制可执 行代码级的基础上,这一特性使用不同编程语言开发的组件对象进行交互成为可 能。 2 1 1 组件的产生 在计算机软件发展的早期,一个应用系统往往是一个独立的应用程序。应用 越复杂,程序就越庞大,系统开发的难度也就越大。对于庞大的程序来讲,更新 版本的周期很长,在两个版本之间,如果由于操作系统发生了变化,或硬件平台 有了变化,则应用系统就很难适应这样的变化。所以这类单体应用程序已不能满 足计算机软硬件的发展需要。 一个显而易见的解决方案就是将单令的应用程序分割成多个独立的部分,每 一个部分保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际 的任务。我们将其称之为组件。 这种做法的好处是可以随着技术的不断发展面用新的组件取代已有的组件。 ( 如图2 - 1 ) 此时的应用程序将不再像以前那样是一个在发行之前就己注定要过 时的静态实体,而是可以随着新组件不断取代旧的组件而趋于完善,并且从已有 的组件可以建立全新的应用。 图2 - 1 组件化应用程序的升级示例 第2 章c o m 组件技术中罾科学技术大学硕士学位论文 2 1 2 面向对象的组件对象模型c o m 组件之间的接口是组件软件的关键,因为接口是双方进行通信的基础,所以, 软件组件应该遵从统一的标准。采用什么样的标准则取决于系统设计者的选择: 如果设计软件时,不考虑与其它软件的通信,则可以使用自定义的接口标准;否 则的话,应该使用一些公用的标准。c o m 就是这样一个为大家一致推崇的组件 标准。 c o m 不仅仅提供了组件之间的接口标准,它还引入了面向对象的思想。在 c o m 标准中,对象是一个非常活跃的元素,我们将其称之为c o m 对象。组件 模块为c o m 对象提供了活动的空间,c o m 对象以接口的方式提供服务,我们 把这种接口成为c o m 接口。 一个c o m 组件或者是一个d l l ( d y n a m i cl i n k i n gl i b r a r y , 动态连接库) 文件, 或者是一个e x e ( 可执行程序) 文件。一个组件程序可以包含多个c o m 对象, 并且每个c o m 对象可以实现多个接口。当另外的组件程序或普通程序调用组件 的功能时,它首先创建一个c o m 对象或者通过其他途径获得c o m 对象,然后 通过该对象所实现的c o m 接口调用它所提供的服务。当所有的服务结束后,如 果客户程序不再需要该c o m 对象,那么它应该释放掉对象所占的资源,包括对 象本身。 2 1 3c o m 的特性 ( 1 ) 面向对象 c o m 是面向对象的软件模型,因而对象是它的基本要素之一。对象是某个 类( c l a s s ) 的一个实例;而类则是一组相关的数据和功能组合在一起的一个定义。 使用对象的应用( 或另一个对象) 称为客户,有时也称为对象的客户。在c o m 模型中,对象本身对于客户来说是不可见的,客户请求服务时,只能通过接口进 行。客户获得接1 3 的指针,再通过接口指针,客户就可以调用其相应的成员函数。 ( 2 ) 客户n 务器模型 对象和客户之间的相互作用是建立在客户服务器模型的基础上的,客户服 务器模型的一个很大的优点是稳定性好。而稳定性好正是c o m 模型的目标,尤 第2 章c o m 组件技术中国科学技术大学硕士学位论文 其对于跨进程的程序通信,稳定性更会带来性能上的高可靠性。这种模型有以下 一些优势: 稳定、可靠性好; 软件的可扩展性好; 提高性能; 在网络上实现时,可以降低网络流量; 用于数据库时,可以实现事务( t r a n s a c t i o n ) 机制,提供数据备份能力 等。 ( 3 ) 语言无关性 c o m 规范的定义不依赖于特定的语言,因此,编写组件对象所使用的语言 与编写客户程序使用的语言可以不同,只要它们都能够产生符合c o m 规范的可 执行代码即可。c o m 标准与面向对象的编程语言不同,它所采用的是一种二进 制代码级的标准,而不是源代码级的标准。差不多每种语言在实现时都提供了对 c o m 的支持,如m i c r o s o f t 公司的v i s u a l c c + + ,v i s u a l b a s i c 、 v i s u a lj + + ,b o r l a n d 公司的d e l p h i 、c + + b u i l d e r 等都支持c o m 组件的开发和使用,而且很多语言还 提供了许多可直接利用的c o m 组件作为产品的可选配件。 ( 4 ) 进程透明性 c o m 所提供的服务组件对象在实现时有两种进程模型:进程内对象和进程 外对象。如果是进程内对象,则它在客户进程空间中运行;如果是进程外对象, 则它运行在同一机器的另一个进程空间或者在远程机器的进程空间中。虽然 c o m 对象有不同的进程模型,但这种区别对于客户程序来说是透明的,因此客 户程序在进行实用组件对象时可以不管这种区别的存在,只要遵照c o m 规范即 可。实现这种进程透明性的关键在于c o m 库,c o m 库负责组件程序的定位, 管理组件对象的创建与客户之间的通信。 ( 5 ) 可重用性 可重用性是任何对象模型的实现目标,由于c o m 标准是建立在二进制代码 级的,因此c o m 对象的可重用健与一般的面向对象语言如c + + 中对象的重用过 程不同。对于c o m 对象的客户程序来说,它只是通过接口使用对象提供的服务, 它并不知道对象内部的实现过程,因此,组件对象的可重用性建立在组件对象的 1 0 第2 章c o m 组件技术 中国科学技术大学硕士学位论文 行为方式上,而不是具体的实现上,这是建立重用的关键。 c o m 用两 哟隳孵现对象的重用,分别称为包容( c o n t a i n m e n t ) 和聚合 ( a g g r e g a t i o n ) 。 2 2c o m 胸结构 2 2 1c o m 对象 c o m 不仅仅提供了组件之间的接口标准,它还引入了面向对象的思想。 c o m 提供的是面向对象的组件模型,c o m 组件提供给客户的是以对象形式封装 的实体。客户程序与c o m 组件程序进行交互的实体是c o m 对象,它并不关心 组件模块的名称和位置,但它必须知道自己在与哪个c o m 对象进行交互。 c o m 对象也包括属性和方法,对象的状态反映了对象的存在,也是区别于 其他对象的要素;而对象所提供的方法就是对象提供给外界的接口,客户必须通 过接口才能获得对象的服务。对于c o m 对象来说,接口是它与外界进行交互的 唯一途径,因此,封装特性是c o m 对象的基本特征。 c o m 规范采用了g u l d ( g l o b a lu n i q u ei d e n t i f e r , 全局唯一标识符) 来标识 每个c o m 对象。1 2 8 位的g u l l ) 是一个随机数,其随机性有两个方面的特性保 证:一方面是空间,对于网络中的计算机,通常使用网络适配器的地址值,没有 网络适配器的机器用其他随机数生成算法产生;另一方面是时间值,同一机器在 不同时候产生的标识符总不相同。所以,我们在实际使用中可以不必担心自己使 用的g u i d 会有冲突的危险。 2 2 2c o m 接口 c o m 对象的客户与对象之间通过接口进行交互。接口是包含了一组函数的 数据结构,通过这组数据结构,客户代码可以调用组件对象的功能。接口具有二 进制特性、接口不变性、继承性和运行过程中的多态性的特点。接口定义了一组 成员函数,这组成员函数是组件对象暴露出来的所有信息,客户程序利用这些函 数获得组件对象的服务。 如图2 2 所示,客户程序用一个指向接口数据结构的指针来调用接口成员函 1 1 第2 章c o m 组件技术中国科学技术大学硕士学位论文 数,接口指针实际上又指向另一个指针,这第二个指针指向一组函数,称为接口 函数表,接口函数表中每一项为4 字节长的函数指针,每个函数指针与对象的具 体实现连接起来。通过这种方式,客户只要获得了接口指针,就可以调用到对象 的实际功能。 p v t a b l e v t a b l e 接口指针卜一指针卜+ 指针函数l 指针函数2 对象实现 指针函数3 2 2 3i u n k n o w n 接口 图2 。2 接口结构 c o m 定义的每个接口都必须从 u n k n o w n 继承过来,因为i u n k n o w n 接口提 供了两个非常重要的特征:生存期控制和接口查询。客户程序只能通过接口与 c o m 对象进行通信,虽然客户程序可以不管对象内部的实现细节,但它要控制 对象的存在与否。如果客户还要继续对对象进行操作,则它必须保证对象能一直 存在于内存中;如果客户对对象的操作已经完成,以后也不要需要该对象了,则 它必须及时地把对象释放掉,以提高资源的利用率。i u n k n o w n 引入了“引用计数” ( r e f e r e n c e c o u n t i n g ) 方法,可以有效的控制对象的生存周期。 另外,如果一个c o m 对象实现了多个接1 3 ,在初始时刻,客户程序不太可 能得到该对象所有的接口指针,它只会拥有一个接口指针。如果客户程序需要其 他的指针,则i u n k n o w n 使用了“接口查询”( q u e r y ! n t e r f a c e ) 的方法来完成接口 之间的跳转。 i u n k n o w n 的i d l 定义如下: i n t e r f a c ei u n k n o w n + h r e s u l tq u e r y i n t e f f a c e ( i n r e f i i di i d , o u t 】v o i d8 + p p v ) ; u l o n g a d d r e f ( v o i d ) ; u l o n g r e l e a s e ( v o i d ) ; 1 2 第2 章c o m 组件技术中国科学技术大学硕士学位论文 i u n k n o w n 包含了三个成员函数:q u e r y i n t e f f a c e ,a d d r e f 和r e l e a s e 。 函数q u e r y h t e f f a c e 用于查询c o m 的其他接口函数。函数的输入参数湖为 接口标示符l i d ,输入参数p p v 为查询得到的结果函数指针,如果对象没有实现 i i d 所标识的接口,则输出参数p p v 指向空( n u l l ) 。当客户创建了c o m 对象 之后,创建函数总会返回一个接口指针。因为所有的接口指针都继承于 i u n k n o w n ,所有的接口都有q u e r y i n t e r f a c e 成员函数,于是,当得到了初始的接 口指针之后,就可以通过它的q u e r y i n t e f f a c e 函数获得该对象所支持的任何接口 指针。 函数a d d r e f 和r e l e a s e 用于对引用计数进行操作。每一个c o m 对象都记录 了一个称为“引用计数”的数值,该数值的含义为有多少个有效指针在引用该 c o m 对象。当客户得到了一个指向该对象的接口指针时,引用计数值增1 i 当 客户用完了该接口指针后,引用计数减1 。当引用计数减到0 时,c o m 对象就 应该把自己从内存中清除掉。i u n k n o w n 的接口成员函数a d d r e f 和r e l e a s e 分别 完成引用计数的增1 和减1 操作。 2 3c o m 的实现 c o m 不仅提供了组件程序和客户程序之间交互的协议细节,也提供了全面 地实现过程。不管是组件程序还是客户程序,在建立交互关系之前以及交互完成 之后,不可避免地要与系统打交道,因此,c o m 作为一套完整的组件模型体系, 也提供了所有的实现细节,用于协调组件程序和客户程序的行为,并尽可能提高 资源利用率。c o m 的实现与操作系统平台密切相关。因为c o m 最初源于 m i c r o s o f tw i n d o w s 平台,所以c o m 实现部分( 即c o m 库) 很多地方直接用到 了w i n d o w s 系统的一些特性,比如系统注册表、动态连接库等等。 2 3 1 通过注册表管理c o m 对象 c o m 规范使用1 2 8 位g u i d 来标识c o m 对象和接口,客户程序通过这些 g u l d 值来创建c o m 对象并于对象进行交互。按照c o m 规范,客户程序通过 c o m 库完成对象的创建工作。c o m 库通过系统注册表( s y s t e mr e g i s t r y ) 所提 第2 章c o m 组件技术 中国科学技术大学硕士学位论文 供的信息进行组件的创建工作。系统注册表是一个全操作系统范围公用的信息仓 库,其中包括了所有的c o m 组件必要的信息以及其他一些信息。 在注册表的h k e y _ c l a s s e sr o o t 键下的c l s i d 子健下,包含了当前机 器下所有组件的信息,如组件程序的全路径文件名、组件程序的版本、o l e 组 件的i n p r o c h a n d l e r 3 2 、组件程序的图标信息、组件程序的类型库等等。 w i n d o w s 系统提供了一个用于注册进程内组件的实用工具r e g s v r 3 2 c x e ,只 要进程内组件提供了相应的入口函数,则r e g s v r 3 2 就可以完成注跚或注销工作。 组件程序的两个用于注册的入口函数为d l l r e g i s t e r s e r v e r 和d l l u n r e g i s t e r s e r v e r , 而r e g s v r 3 2 程序本身并不进行注册工作。当我们用下面的命令行方式运行 r e g s v r 3 2 时, r e g s v r 3 2c f l d i c t c o m p 、j 3 i c t c o m p d l l r e g s v r 3 2 调用程序d i c t c o m p d l l 中的d l l r e g i s t e r s e r v e r 函数完成组件程序的注册 工作;当我们用下面的命令行方式运行r e g s v r 3 2 程序时, r e g s v r 3 2 uc :d i c t c o m p k d i c t c o m p 。d l l r e g s v r 3 2 调用组件程序d i c t c o m p d l l 中的d l i u r e g i s t e r s e r v e r 函数完成组件程序 的注销工作。 2 3 2 类厂 类厂就是c o m 类的工厂,如同c + + 中类的定义,c o m 类可以理解为c o m 对象的基本定义。类厂是c o m 对象的生产基地,c o m 库通过类厂创建c o m 对 象,对应于每一个c o m 类,有一个类厂专门用于该c o m 类的对象创建操作。 类厂本身也是一个c o m 对象,它支持个特殊的接口:i c l a s s f a c t o r y ,其定义 如下: c l a s si c l a s s f a c t o r y :p u b l i ci u n k n o w n v i r t u a l 。h r e s u l t _ s t d c a l l c r e a t e l n s t a n c e ( i u n k n o w n 4 p u n k n o w n o u t e r , c o n s ti i d & i i d ,v o i d + + p p v ) = o ; v i r t u a lh r e s u l t _ s t d c a l ll o c k s e r v e r ( b o o lb l o c k ) = 0 ; ) ; 1 4 第2 章c o m 组件技术中国科学技术大学硕士学位论文 c r e a t e l n s t a n c e 用于创建相应的c o m 对象,并将相应的接口指针传给客户, 因为每个类厂只针对特定的c o m 类对象,所以c r e a t e l n s t a n c e 成员函数知道该 创建什么样的c o m 类对象。成员函数l o c k s e r v e r 用于控制组件的生存期。 每一个c o m 对象类应该有一个相应的类厂对象,如果一个组件程序实现了 多个c o m 对象类,则应有多个类厂对象。类厂本身也是一个对象,由组件程序 实现的d l l g e t c l a s s o b j e c t 引出函数实现。c o m 库在接到对象创建的指针后,调 用进程内组件的d l l g e t c l a s s o b j e c t 函数创建类厂对象,并返回类厂对象的接口指 针,c o m 库或者客户一旦有了类厂的接口指针,就可以通过类厂接口 i c l a s s f a c t o r y 的成员函数c r e a t e l n s t a n e e 创建相应的c o m 对象。具体的c o m 对 象创建过程如图2 3 所示: c o c r e a t e l n s t a n c e 调用c o g e t o b j e c t 函数; c o m 库找到d l l 程序并进入进程; 调用d l l g e t c l a s s o b j e c t 函数; d l l g e t c l a s s o b j e c t 函数创建类厂; d u b e t a a s s o b j e 吐函数把类厂接口指针返回给c o g e t c l a s s o b j e c t 函数 ( ) c o o e t c l a s s o b j e c t 函数把类厂接口指针返回给c o c r e a t e l n s t a n c e 函数; c o c r e a t e l n s t a n e e 函数得到类厂后,调用类厂的对象创建函数; 类厂创建c o m 对象; 类厂把c o m 对象返回给c o c r e a t e l n s t a n c e 函数,c o c r e a t e l n s t a n c e 函数返回 客户直接调用c o m 对象。 第2 章c o m 组件技术 中国科学技术大学硕士学位论文 2 3 3c o m 实现过程 图2 - 3 组件对象创建过程 1 进程内组件与客户的协作过程 因为进程内组件和客户程序运行在同一个进程地址空间中,所以一旦客户程 序与组件程序建立起通信关系之后,客户程序得到的接口指针直接指向组件程序 中接口的v t a b l e ,根据前面的借口模型可以看到,客户程序接口指针所指向的 v t a b l e 包含了所有的借口成员函数的地址,客户代码可以直接调用这些成员函数, 所以效率非常高。并且在编译时还可以进行完整的c + + 参数和返回类型检查。下 面已注册数据库组件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理质量控制方案的制订
- 青岛西海岸新质生产力
- 2025年微生物学实验技巧培训考试答案及解析
- 民族工作相关课件
- 安全检测机构管理规定讲解
- 剪力、弯矩方程与剪力、弯矩图
- 2025年法医学法医病理学案例溯源分析答案及解析
- 民族声乐课件
- 2025年生物信息学基因组数据分析论述题考试答案及解析
- 2025年医学影像技术应用与操作规范答案及解析
- 新版膳食指南2025电子版
- 卒中救治中心建设汇报
- 岳麓区夜市管理办法电话
- 蒙中医药课件
- 2025篮球裁判员培训
- 灯展场所安全管理制度
- 【A市农药包装物回收现状调研分析2100字】
- 功能性益生菌筛选-洞察及研究
- 2025构网型风力发电机组并网性能测试规程
- 物品抵押合同协议书模板
- 风险管理2025年风险管理师考试试题及答案
评论
0/150
提交评论