基于ORB分布式数据库访问方法的研究正文v20.docx
- 文档编号:7740283
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:43
- 大小:229.71KB
基于ORB分布式数据库访问方法的研究正文v20.docx
《基于ORB分布式数据库访问方法的研究正文v20.docx》由会员分享,可在线阅读,更多相关《基于ORB分布式数据库访问方法的研究正文v20.docx(43页珍藏版)》请在冰豆网上搜索。
基于ORB分布式数据库访问方法的研究正文v20
密级:
工程硕士专业学位论文(设计)
题目基于ORB分布式数据库访问方法的研究
作者完成日期2008年10月20日
培养单位四川大学
指导教师
指导教师
工程领域软件工程
授予学位日期2008年12月日
基于ORB分布式数据库访问方法的研究
软件工程领域
研究生指导老师
Internet发展,加快了社会信息化的步伐。
各行各业对不同数据进行收集、汇总、处理,并作出长期的保存是相当重要的,网络数据库的访问与处理在数据库技术是相当重要。
同时随着我国高等教育的快速发展,高校普遍存在多校区的实际情况,许多资源也分布在多个校区。
其中图书资源也存在多校区馆藏的情况,而图书又是科研学习的重要资源,因而图书在多校区方便地流通成为图书管理工作的重要任务。
本文介绍了对象管理体系结构、ORB体系结构与使用的主要技术等理论基础。
研究基于VisiBrokerforC++/ORB的数据库访问方法及实现,其中提出了ORB访问数据库模型、底层通信实现、访问数据库途径。
解决了适合多校区网络特征图书流通管理系统IDL接口的定义方法,提出了访问接口模式及影响访问性能的因素,其中IDL设计使用小粒度与迭代器方法提高访问性能。
在基于ORB的访问数据库应用中,数据库表内数据采用与Microsoft兼容的OleVariant类型表示,为了保证ORB的any类型与OleVariant类型之间能够互相转换,实现了ORB表示数据库表内数据的any类型与OleVariant类型的转换,其中类型转换涉及到将variant的VT_ARRAY/VT_UI、VT_VOID与VT_EMPTY类型转换为ORB的tk_sequence/tk_octet、tk_void与tk_null类型。
在图书流通管理系统服务器端程序实现中,采用ORB的纽带机制POATie代理方式编写ORB服务器程序,服务程序进程中使用多个不同名字的POA,不同POA通过名字进行区别,每个ORB在创建时都自动带有一个根POA,根据需要从根POA创建其他子POA,从而使POA的集合呈现一种层次结构,每个POA都有一个父POA,这样POA层次为服务程序中的对象标识提供一个层次化的名字空间。
在激活ORB对象实现后,得到一个数据模块,该数据模块实现ORB接口定义函数的类。
服务器端的实现将表格、SQL查询放在ORB自动生成的数据库处理模块中,它包括2个表对象,分别对应于所定义的数据表,名称也各自匹配。
在数据库处理模块中用一个C++Builder的TDataSource控件用于建立主从关系,同时使用互斥用户的信号量实现服务器同时有多个用户访问。
服务器端还实现ORB与BOA的初始化,通过ORB_init()函数实现ORB初始化,BOA_init()函数实现BOA初始化,初始过程时启动服务器作为后台服务。
在客户端程序实现中,通过使用C++Builder数据库操作控件操作服务端数据,实现从表内容自动随主表当前记录改变而改变,客户端程序向服务器端发出请求后,可以获取当前库记录的相关信息。
关键词:
对象请求代理、C++、IDL、粒度、纽带机制
ResearchofORB-BasedDistributedDatabaseAccessMethod
SoftwareEngineering
GraduateStudent:
Adviser:
Withtherapiddevelopmentoftheourcountryhigheducation,andwidelyexisttheactualcircumstanceofmanyschoolareasinhighschool,thereformanyresourcesesalsodistributeinmanyschoolDistricts,thebookresourcesofthelibraryexistsmanyschooladistinctionthecircumstance,butthebookistheimportantresourcesoftheresearchandstudyagain,thebookcirculatesimportantmissionofbecomethebookmanagementworkexpedientlyatmanyhighschool.Forcarryingoutaschoolmanyschoolareabookresourcesestounifyamanagement,theresourcesshareandprovidingthereaderwiththeconveniencetoborrowtoread,establishmenttheorientationismanyareabooksinschoolcirculatetheinformationmanagementsystem,thereadercanacrosstheschoolareatoborrowtoreadabooktobecomethetopicthatneedssolveurgently.
ThisthesisresearchaccordingtotheVisiBrokerforC++/ORBthedatabaseaccessmethodandrealization.theanswerissuitableformanyareanetworkcharacteristicbooksinschoolstocirculatemanagementthesystemIDLinterfacedefinitionmethod,amongthemtheIDLdesignusagethegranuledegreeandtheIteratormethodvisitfunctionbyexaltation.itdevelopstheconversionORBanytypetoOleVarianttype.
AdoptORBtocarryoutthemechanismPOATieagencymethodtowritetheORBServerprocedureinthebookcirculatethemanagementthesystemservercarrytheprocedurerealization,useseveralPOAsofdifferentnamesintheserviceprocedureprogress,carryouttoputform,theSQLsearchintheORBdatabasetheprocessingmodle.TheClientcarryouttheprocedurerealization,passtheusageC++Builderdatabaseoperationcontrolloranoperationservicetocarryadata,therealizationrecordedthechangebutchangeatpresentwiththemainformfromtheformcontentsauto,thecustomercarriedproceduretowardserverandcannedobtaintherelatedinformationthatthecurrentdatabaserecordaftercarrysendoutaclaim.
Keyword:
ObjectQuestBroker(ORB),C++,IDL,Granularity,Iterator
目录
第1章绪论1
1.1引言1
1.2研究现状1
1.2.1基于中间件LAN数据库技术1
1.2.2面向对象数据库技术2
1.2.3LAN数据库处理存在的不足2
1.3论文的工作3
第2章对象请求代理的理论基础5
2.1引言5
2.2ORB体系结构5
2.2.1ORB内核(ORBcore)6
2.2.2对象接口定义7
2.2.3客户程序发送请求7
2.2.4对象实现接收请求8
2.3ORB的关键技术9
2.3.1面向对象技术9
2.3.2层次化的体系结构10
2.3.3接口技术11
2.3.4可互操作性技术12
2.4本章小结13
第3章基于ORB局域网分布式数据库的访问方法15
3.1引言15
3.2ORB访问数据库模型15
3.3底层通信的实现16
3.4ORB访问数据库途径17
3.5ORB访问数据库实现18
3.5.1服务器端18
3.5.2客户端19
3.6本章小结19
第4章图书分布式数据库系统的实现21
4.1引言21
4.2开发工具的介绍21
4.2.1RationalRose21
4.2.2SQLServer200021
4.2.3VisiBrokerforC++22
4.3编写IDL23
4.4any与OleVariant数据类型间的转换24
4.5数据表的定义28
4.6服务器端对数据库访问的实现30
4.7客户端的实现35
第5章基于ORB局域网数据库访问的性能39
5.1引言39
5.2影响访问性能的因素39
5.2.1对象调用的数量40
5.2.2数据量大小40
5.2.3IDL数据类型对打包的开销42
5.3IDL接口设计的改进44
5.3.1IDL接口粒度的改进44
5.3.2利用迭代器改进IDL接口性能48
5.4本章小结49
结语51
参考文献55
声明57
致谢59
第1章绪论
1.1引言
计算机技术与通信技术的发展,加快了社会信息化的步伐。
各行业对不同数据进行收集、汇总、处理,并作出长期的保存是相当重要的,网络数据库的访问与处理在数据库技术是相当重要。
数据库的计算环境具有下列特征:
1)分布环境的异构性:
①硬件平台的异构;②操作系统的异构;③开发语言的异构;④网络平台的异构等[1]。
2)分布性:
现在实际应用资源分布在不同的部门、地区,分布性已经成为现代数据库技术计算环境的基本特征。
3)可扩展性:
网络数据库计算环境通常是分阶段逐步建设的,是一个不断发展的长期的过程。
4)互操作性:
在一个大型实际应用中存在不同的应用程序,它们能否互相通信决定数据的时效性。
同时一个部门一般来说已经积累了一批极具有价值数据库系统,通常这些系统难以改造和重写,在构造新系统时,客户希望能够利用这些资源。
1.2研究现状
软件工程的核心问题是如何通过先进的技术、管理手段来提高各种类型软件开发的效率与质量。
随着软件开发技术的发展,面向对象设计技术、中间件技术、设计模式等成为解决LAN数据库访问的方法。
1.2.1基于中间件LAN数据库技术
中间件数据库访问技术是一种社会化的软件开发方法,它使得开发者可将由不同语言、不同中间件组合在一起来构造软件。
中间件解决两个方面的问题:
一是复用,即中间件具有通用的特性;二是互操作,不同来源的中间件能相互协调、通信,共同完成更复杂的功能。
面向对象技术能支持软件的复用和集成,面向对象技术作为一种基础,不存在一个标准的框架,不同的软件对象能够在同一地址空间里互相交互合作。
面向对象的软件设计带来的是一个个分离在应用程序的对象体。
从解决实际应用的方案来讲,ORB适合于实际应用的网络数据库访问技术。
1.2.2面向对象数据库技术
对象与软组件技术是近几年迅速发展起来的,数据库计算技术是在网络计算平台上开发、部署、管理和维护以数据库资源共享和协同工作为主要应用目标的网络数据库应用系统。
进入上个世纪90年代以来,在分布式客户/服务器计算机系统的建立及其应用系统的开发过程中,开发人员逐渐体会到分布式系统比想像的更复杂,例如异构环境下的应用互操作问题、系统管理问题、系统安全问题。
传统的面向过程的技术在开发大型软件系统时已经暴露出其局限性,20世纪90年代初,以面向对象技术为主要特征的分布计算技术开始出现,经过10年多的发展,逐渐进入了成熟应用时期。
面向对象分析(OOA)和面向对象设计(OOD)方法直接应用于网络数据库应用系统的分析和设计,传统的面向对象程序设计(OOP)环境(例如,C++、Smalltalk)在直接用于网络数据库应用系统的程序设计时遇到了问题。
传统的对象与访问该对象的程序只能存在于同一进程中,并且只有相关程序设计语言的编译器才能创建这些对象并感知这些对象的存在,外部进程无法了解和访问这些对象。
在常规的分布式客户/服务器应用中,客户进程不可能直接访问远程服务器端进程中的常规对象。
为了解决这个问题,提出了分布式对象的概念。
1.2.3LAN数据库处理存在的不足
现有典型的局域网数据库处理系统和标准有RPC(远程过程调用)和DCE(分布计算环境)等[2]。
它们虽然是按照客户/服务器模式构造的系统,但是客户程序和服务器程序之问的调用关系是静态的,基于它们所构造的系统也是静态的,并且可以使用的编程语言必须于RPC和DCE实现语言一致,从而限制了用户的可选语言范围。
使用与语言无关的IDL接口技术可以解决该问题。
软件复用和软件集成的问题,如若不同的应用软件是用不同语言编写,或运行在不同地址空间,甚至在不同的计算机或操作系统平台时,这个问题就更变得极其复杂。
因此,当今的应用软件普遍需要有良好的平台兼容性(互操作性)、结构开放性、规模可变性(可扩展性)及代码复用能力等。
使用中间件技术可以解决软件复用的问题。
1.3论文的工作
计算机技术与通信技术的发展,加快了社会信息化的步伐。
各行业对不同数据进行收集、汇总、处理,并作出长期的保存是相当重要的,网络数据库的访问与处理在数据库技术是相当重要。
现有典型的局域网数据库处理系统和标准有RPC(远程过程调用)和DCE(分布计算环境)等。
它们虽然是按照客户/服务器模式构造的系统,但是客户程序和服务器程序之问的调用关系是静态的,基于它们所构造的系统也是静态的,并且可以使用的编程语言必须于RPC和DCE实现语言一致,从而限制了用户的可选语言范围。
使用与语言无关的IDL接口技术可以解决该问题。
本文的目标及主要工作:
1ORB的理论基础介绍了ORB使用的对象管理体系结构,ORB体系结构、基本服务、使用的技术、规范,ORB主要使用面向对象技术,多层体系统结构、接口技术与可互操作技术。
2引出基于ORB的数据库访问方法,以一个具体的应用模型为基础提出ORB访问数据库的模型,底层通信的实现,访问数据库的途径。
3基于ORB的数据库访问主要介绍基于C++Builder对局域网数据库访问的实现技术,包括编写IDL、any与OleVariant数据类型间的转换,服务器与客户端通过ORB访问的实现细节。
4分析影响网络数据库访问性能的原因,根据影响因素提出了性能改进策略IDL粒度与迭代器接口的思想。
5结束语中,对本文的研究工作进行总结。
第2章对象请求代理的理论基础
2.1引言
本章介绍对象管理组织OMG及其制订的规范,详细介绍OMG的对象管理体系结构OMA参考模型和对象请求代理ORB的体系结构的指导思想、基本概念、工作原理、特点及主要技术,ORB在网络分布式计算中具有现实技术作用。
2.2ORB体系结构
对象请求代理(ObjectRequestBroker,ORB)体系结构与规范建立在对象管理组织(ObjectManagementGroup,OMG)的对象模型基础之上,它主要由三个关键部分组成:
接口定义语言IDL、对象请求代理ORB和标准通信协议IIOP[7]。
OMG制定了公共对象请求代理结构ORB的技术规范标准,详细定义了ORB应具备的特性和提供的接口。
ORB具有以下几个组成部分:
(1)ORB内核(ORBcore);
(2)OMG接口定义语言IDL(InterfaceDefinitionLanguage);
(3)接口池(InterfaceRepository);
(4)存根进程与框架进程(StubandSkeleton);
(5)动态请求与分发(DynamicInvocationandDispatch);
(6)对象适配器(ObjectAdapter)。
ORB各组成部件间的关系如图2-1所示。
图2-1ORB组成部分间的关系
2.2.1ORB内核(ORBcore)
ORB是对象管理体系结构(ObjecctManagementArchitecture,OMA)的核心基础设施,规定了ORB的标准体系结构[5]。
由ORB提供的通信机制负责完成查找请求的对象实现、让对象实现准备好接收请求、传递构成请求的数据等任务。
客户程序所看到的对象接口完全独立于对象实现所处的位置、编写实现对象的程序设计语言以及在对象接口中未反映的其他特性。
为调用远程对象实现的一个实例,客户程序必须首先获取一个对象引用。
客户程序发出远程调用的方式与本地调用相似,只不过调用的是远程对象实例的对象引用。
对于远程对象引用的调用,ORB负责将参数打包并通过网络传递给远程对象所在的ORB,由这个ORB将参数解包后再将调用请求转发给对象实现的一个实例。
ORB提供的最基本功能是从客户程序向对象实现传递请求,这实际上是一种包含了送出实际参数与送回处理结果的双向通信。
在逻辑上,ORB可理解为一个由ORB接口定义的服务集合,但在物理上ORB通常不必实现为一个单独的组件。
ORB内核(ORBCore)是ORB最关键的部分,是真正负责传输请求的通信设施,每一个ORB产品供应商都有一个自己特有的ORB内核。
2.2.2对象接口定义
客户程序是需要享用对象向外提供的服务的实体,对象实现是提供服务的数据表示与可执行代码。
客户程序与对象实现之间的界面是对象的接口定义,对象接口是服务双方共同订立的合约。
对象接口采用OMG的接口定义语言IDL(InterfaceDefinitionLangauage)[8]描述,IDL根据对象可执行的操作定义对象的类型,并可映射到特定的编程语言或对象系统。
为在运行时充分利用对象接口定义的有关信息,还可将对象接口定义添加到接口池(InterfaceRepository)服务中。
接口池服务将接口定义中的内容表达为不同类型对象的层次结构,为应用程序运行时动态访问对象接口定义提供服务。
IDL定义与接口池表达了相同的信息,只是两者的组织方式不同。
客户程序只能通过对象的接口定义了解对象的逻辑结构,并通过发送请求来影响对象的行为与状态。
客户程序不必了解对象实现的具体数据表示或代码,也不必知道该对象实现采用哪种对象适配器以及需要用哪个ORB访问该对象实现。
CORBA通过对象接口进一步延伸了传统程序设计语言的封装、信息隐藏、接口/实现分离等软件工程思想。
2.2.3客户程序发送请求
客户程序通过发送请求去调用由对象实现提供的服务。
客户程序将请求求发送给ORB内核时,可采用静态调用方式,也可以采用动态调用方式,然后由ORB内核将请求转发给对象实现。
静态调用方式借助于客户程序桩自动完成,动态调用方式则使用动态调用接口DII(DynamicInvocationInterface)[6]手工编码完成。
从发送请求的功能上看,这两种调用方式具有完全相同的能力,对象实现并不知道请求从客户端是如何发出的。
通常ORB产品会提供一个IDL编译器,在编译IDL文件时会创建客户程序桩与对象实现框架。
如果IDL文件进行了修改,则必须重新用IDL编译器创建新的桩与框架。
由于桩与框架在编译时创建并且在运行时不再改变,因而这些接口相对于动态调用接口又称作静态调用接口SII(StaticInvocationInterface)。
IDL桩负责客户程序的实现语言与ORB内核之间的映射,只要ORB支持某种语言的映射,客户程序就可选择该语言作为实现语言。
使用SII的客户程序开发者必须在程序编译之前就知道操作的名字和所有参数与返回值的类型,实际的操作名字、参数值和返回值是编写在应用程序的源代码中。
静态调用接口SII是一种最简单的调用机制,所有使用SII的应用程序也可用DII实现,但使用DII的应用程序则未必可用SII实现。
选择这两种调用方式的基本原则是:
如果应用程序可以用SII实现,那么就应使用SII,这是因为DII需要更多的编码并且通常运行效率更低,并且编译器无法帮助检查类型和优化代码。
动态调用接口DII允许客户程序调用在编译客户程序时尚未确定对象接口的对象实现。
客户程序使用DII时必须生成一个请求,其中包括对象引用、操作以及参数表。
DII的这种动态特性使得DII在某些应用场合更优于SII,例如编写服务的浏览器、应用程序浏览器、转换协议的桥接、访问大量不同接口、应用程序的监控、通用对象测试程序等。
2.2.4对象实现接收请求
客户端的ORB组件与服务端的ORB组件之间通过协作,将客户程序发送的请求转发到对象实现所在的服务端ORB后,服务端ORB将请求分派给对象实现有两种方式:
静态方式通过由IDL生成的框架,动态方式使用动态框架接口。
对象实现与ORB内核之间的通信由对象适配器完成,对象适配器负责远程对象引用的生成与解释、对象方法的调用、对象实现的激活与冻结、将对象引用映射到相应的对象实现实例、对象实现的注册等。
为满足特定系统的需要,供应商可提供不同的专用对象适配器。
对象实现可选择使用哪种对象适配器,这取决于对象实现所需的服务。
ORB屏蔽了客户端发送请求与服务端接收请求的不同方式。
从客户程序的角度看,使用DSI的对象实现与使用IDL框架的对象实现行为相同,客户程序不必提供特别的处理去与使用DSI的对象实现通信。
对象实现框架的存在并不意味着一定要有客户程序桩,客户程序也可通过DII发送请求。
2.3ORB的关键技术
从ORB应用软件开发人员来讲,ORB是一种编程技术,吸收了界面向对象技术、分布式计算技术、多层体系结构技术、接口技术及互操作技术的一种综合性技术。
2.3.1面向对象技术
分布式计算技术的ORB、EJB、COM/DCOM[10]都采用了面向对象技术,而且它们都已经将面向对象的概念上升到比类更加高的一个级别——组件(Component)。
面向对象技术是ORB的存在、实现形式。
类。
类代表一种抽象,是所有有共同行为特征和信息结构的对象集合,一个类也是用于几个对象并描述这些对象内部结构的一个模板。
对象。
对象是类的具体实例,给类中的数据变量赋予确定的取值便得到该类的一个对象。
编写程序时,考虑的是类;运行程序时,处理的是对象。
类定义了对象的操作和信息结构,实例定义了每一个对象的状态。
封装。
也叫信息隐藏,指的是把对象的外部特征与内在实施细节分开。
使得一个对象的外部特征对其它对象来说是可访问的,而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ORB 分布式 数据库 访问 方法 研究 正文 v20
![提示](https://static.bdocx.com/images/bang_tan.gif)