




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 页共27页CORBA规范综述张亚红宋凯华东计算技术研究所二000年三月目录TOC o 1-5 h z HYPERLINK l bookmark4 引言3第一章CORBA体系结构3第1.01节CORBA规范概述3 HYPERLINK l bookmark6 第1.02节对象管理架构(OMA)4 HYPERLINK l bookmark8 第1.03节CORBA详细结构图5第二章对象服务(CORBAServices)的具体内容7 HYPERLINK l bookmark20 第2.01节名字服务7 HYPERLINK l bookmark22 第2.02节生存周期服务8 HYPERLINK l
2、 bookmark26 第2.03节事件服务10 HYPERLINK l bookmark32 第2.04节交易黄页服务12 HYPERLINK l bookmark34 第2.05节事务服务13 HYPERLINK l bookmark36 第2.06节并发控制服务15 HYPERLINK l bookmark38 第2.07节安全服务15 HYPERLINK l bookmark40 第2.08节持久性服务16 HYPERLINK l bookmark46 第2.09节流转换服务18 HYPERLINK l bookmark48 第2.10节查询服务19 HYPERLINK l bookm
3、ark50 第2.11节组服务19 HYPERLINK l bookmark52 第2.12节对象关系服务19 HYPERLINK l bookmark56 第2.13节时间服务20 HYPERLINK l bookmark58 第2.14节准许服务21 HYPERLINK l bookmark62 第2.15节属性服务21第三章CORBA相关产品及CORBA的未来22 HYPERLINK l bookmark66 第3.01节CORBA相关产品22StarBus的ORB核心机制原理23 HYPERLINK l bookmark68 第3.02节CORBA的未来24 HYPERLINK l b
4、ookmark70 第四章程序开发一般过程25 HYPERLINK l bookmark72 第4.01节程序开发一般过程25 HYPERLINK l bookmark74 第4.02节用Starbus开发分布应用步骤27 HYPERLINK l bookmark76 参考文献27引言对象管理组织(OMG)提出的CORBA规范为实现分布式环境下的软件重用、移植和互操作提供了一套前景光明的规范,并为开放式系统的研究提供了一个很好的系统实现框架。介绍CORBA的文章已有很多,本文试图能够从结构上简而全的对它进行综述,并简单介绍了相关产品和CORBA环境下的程序开发过程。第一章CORBA体系结构第1
5、.01节CORBA规范概述CORBA(CommonObjectRequestBrokerArchitecture)公共对象请求代理架构,是国际对象管理组织(ObjectManagementGroupOMG)制定的分布对象计算规范,目前最新版本为3.0(于1999年11月发布),目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性,实现多厂商网络环境中应用的互操作;OMG组织是一个超过750名成员的国际组织,它包括信息系统厂商,软件开发者和用户。自1989成立以来,OMG组织一直在促进软件开发中的面向对象技术的理论与实践,该组织的合同包括建立业界的指导方针与对象管理规格说明,
6、以提供应用开发的公共框架。主要目的是促进在分布、异构环境中基于对象的软件的可重用性、可移植性与互操作性。遵循这些规格说明有可能开发出一种跨越所有主要硬件舞台和操作系统的异构应用环境。OMG组织的目的是通过建立对象管理体系结构来发展对象技术并引导其发展方向。CORBA是一个关于分布对象平台架构的标准化规格说明,目的是实现多厂商网络环境中应用的互操作。CORBA实现允许应用软件之间的彼此通信,而不必顾及这些应用软件的位臵是谁设计的,及它们是用什么语言实现的等问题。CORBA标准第一版,CORBA1.1是于己于1991年推出的。它定义了CORBA接口定义语言(IDL)及应用编程接口,允许客户在COR
7、BA通信设施的顶部与服务器对象进行交互。这些通信设施具体包含在所谓对象请求代理(ORB)IDL提供了说明构件接口的统一的方法,它独立于符合接口要求的实现构件的编程语言。1994年下半年发布了CORBA2.0版。它的主要增强点:给出了关于不同厂商ORB之间的互操作协议的规格说明。1997年8月,OMG组织又发布了CORBA2.1版。它包括以下方面的规格说明:互操作性修订,IDL类型扩充,CORBA映射,Ada映射,及CORERTF的某些变动。CORBA标准还处于发展中,OMG组织即将发布CORBA3.0版。CORBA3.0版包括:可重用对象的构件,模块脚本语言规范,支持object-by-val
8、ue,多个接口,对Java接口的定义语言映射,通过防火墙标准化InternetInter-ORB协议,及集成分布计算环境的路径映射等。OMG首先发布了OMA(对象管理体系结构),提出了构件互操作的软总线ORB(ObjectRequestBroker),并将构件分为三类:公共对象服务(COS)、面向领域的公共设施(CF)和完成具体任务的应用构件。在其后发布的CORBA1.0和2.0版中OMG对对象模型以及ORB的功能进行了规定。CORBA规范内容很多,其中与构件实现规范相关的主要内容包括IDL、IR和ComponentModel。IDLIDL(InterfaceDefinitionLanguag
9、e)是CORBA用来定义对象接口的语言,是客户与服务器之间的一种契约。通过这个契约,ORB有效地分离了功能的实现方与使用方,使双方可以用不同的语言实现,可以运行在不同的操作系统上,并且可以运行在不同的结点上。IDL本身不是一种编程语言,它独立于任何一种具体的语言之上,但它采用了C+的词法,并尽量与C+的语法兼容,因此易于被编程人员所掌握。IRIR(InterfaceRepository)是ORB的构成部分之一,它提供一致的接口定义存储,管理并提供对OMGIDL所指定对象定义集合的访问。IR可以完成提供请求签名的类型检查(请求是否通过DII或stub发出)、帮助检查接口继承图的正确性、帮助提供不
10、同ORB实现之间的互操作性等工作。ComponentModelCORBAComponentModemCORBA3.0的核心内容之一,该模型的提出是为了使更多的编程人员方便地进行基于CORBA的软件开发。CORBA构件模型主要在构件的事件、属性、定制、组装、包(Packaging)以及构件池(ComponentRepository)等方面作出规定。第1.02节对象管理架构(OMA)其中,CORBA对象请求代理ObjectRequestBroker(ORB)称为ORB总线,通过ApplicationInterface、DomainInterfaces、CommonFacilities、Object
11、Services四类接口(服务)来完成客户与CORBA对象之间的通信,ORB内核完成对象的创建、实现、定位以及通信机制等;ObjectServices是指对总线进行扩展的系统级别服务,共十五种(见第二部分);CommonFacilities是指应用对象直接使用的服务框架;ApplicationInterfaces是指用户最终使用的商用对象及应用;DomainInterfaces则面向专用领域。图1.1、1.2、1.3描述了它们之间的关系。对象管理架构(OMA)为OMG组织将不同标准大规模集成起来的框架OMA带有对象模型(objectmodel)与称之为参数模型(referencemodel)的
12、概念性架构。OMA中定义了CORBA四个主要部分:ORB(ObjectRequestBroker)、对象服务(Objectservice)、公共设施和应用对象。对象模型把计算实体看作为可标识的对象。对象通过提供使用环境的服务,封装了状态与行为。环境由向对象发出请求的客户(client)组成;对象由对象引用(objectreference)来标识。在与对象模型相联系的类型层次结构中,把对象引用作为特殊的类型处理。除了对象引用外,对象模型也提供了若干种简单类型与类型构造符,包括序列(sequemce),结构(structure),联合(union),及枚举(enumeration)等,后者可用来构
13、造用户定义的结构类型。OMA把对象接口与它的实现明确地区分开来。接口通过操作的集合定义了关于客户的合同,满足此接口的所有实现将为客户提供合适的行为。对象模型支持这种抽象,它既允许设计者提出公用功能,如公用结构与公用行为,又能通过接口继承性(interfaceinheritance)增量地加入新的功能。通过继承把接口中使用的服务与类型传递给后代接口,对象接口可用不同编程语言来实现。满足特定接口的对象实现可以彼此透明地替换,只要接口保持不变,客户察觉不到实现的变动,也不必为利用替换对象的能力而重编译。这些特性便于系统逐步适应技术的变动,质量提高或性能要求。图1.2中参考模型包括概念性架构和一组可重
14、用的功能接口,或一组特定应用的对象实现。参考模型的主体为对象请求代理(ORB)。它提供了对象可以透明地彼此交互的标准机制。这里,客户和服务器对象是本地的还是分布的都是一样的。而且屏蔽了服务请求格式与内部数据表示的多样性。参考模型支持4类接口,公共设施,领域接口及对象服务:应用接口是现有应用的接口。它们的定义不是CORBA标准的一部分。本标准仅仅规定了接口定义必须遵循的格式及能使用对象与ORB交互的机制。第1.03节CORBA详细结构图izontal)应用对象领域接口对象请求代理ORB持久性服务命名服丫:持分布式信息系统任务文档管理管理管理OO9J公共设施CommonFacility垂直公共设施
15、(Vertical)q丿水平公共设施(安全服务并发控制服务)交易服务生存期服务-流转换艮务准许服务事件服务事务服务关系服务时间服务对象服务(CORBA服务)图1.2CORBA详细结构图DistributedApplicationsVerticalCORBAFacilities匚1OE謔o2=!社叟9凸inri_rrTBUi_nSufHirll11173HorizontalCORBAFacilitiesUserInterfaceInformationMgmtSystemManagementTaskMgmt|GtirTpoLndPreBentstion|OsktopMsnsgernent|Rend
16、eringMsnsgement|ScriptingUserSi_pport|GtirTpoLndhterthange|EfatsBlooding/Reprementation|EbtsIntencliangeInfcrmsiionEMchangeInformationModelingInformationStorage/Retrieval|TimeCeraiiong|GblleciionManagementJ|jatorrization|EfatsCdlectionEventManagementInstanceManagementInsirumentation|PolicyManagement
17、ProceoaLaunch|jslityofServiceMgmt|SchecLIingManagementSecurity甲J0孕:1IQU1RjleManagementCORBAServicesObjectRequestBroker(ORB)OperatingSystemandNetworkServices图1.3CORBA详细结构图2第二章对象服务(CORBAServices)的具体内容第2.01节名字服务名字服务是ORB中的对象定位其它对象的主要方法。所谓名字就是对象的标识,一个对象与一个名字的联系被称作为一个名字绑定。一个命名上下文是指一个包含若干名字绑定的名字空间,在其中每个对象名
18、是唯一的。一个名字绑定总是存在于一个命名上下文中。一个上下文(context)同样是一个对象,它也可以在一个命名上下文中绑定一个名字。一个上下文绑定和一个名字绑定的关系如同一个目录和一个文件的关系。由于上下文绑定的存在可以通过一个序列名来指定一个对象,这一序列名(也可称为复合名)定义了一个对象绑定在一个名字空间的路径。图2-1-1表示了一个名字空间的例子。在图2-1-1中由三个上下文绑定(Theworldcity,Asia,R.P.C)和一个名字绑定(Shanghai)组成了一个复合名。解析名字(resolveaname)是指在一个给定的命名上下文中找到和一个名字相联系的对象;绑定名字(bin
19、daname)是指在一个给定的命名上下文中建立一个名字绑定。命名服务是由NamingContext和Bindingiterator两个接口实现的,见下图。图2-2-2接口NamingContext和BindingIterator及其中的方法NamingContext对象包含有若干名字绑定。通过调用接口NamingContext中bind方法可以把一个对象和一个名字联系起来。Rebind方法和bind方法类似,只是当一个名字已经和一个对象绑定,它重新以一个新名字和该对象进行绑定。通过调用unbind方法可以去除绑定。通过调用Resolve方法可以在一个给定的上下文中找到任何已命名的对象。方法li
20、st返回一个Bindingiterator对象,通过Bindingiterator对象中的方法Next_one和Next_n可以返回NamingContext对象所包含的名字绑定。总之,命名服务定义了接口,通过这些接口提供的方法可以管理命名空间中的对象。第2.02节生存周期服务因为基于C0RBA的环境支持分布式对象,生存周期服务定义了服务和方法,使能够对在不同范围的对象进行创建,拷贝,移动和删除操作。生存周期服务目前已被扩展,使得所有操作能够处理相关对象组之间的联系(如包含关系和引用关系)。在图2-2-1中显示了一个文档对象,包含了若干页对象(类似页对象中包含了若干文本对象和多媒体对象),该文
21、档对象包含在一个文件夹对象中,同时被收录在一个目录对象中作为一个引用。生存周期服务保持了其中的所有联系。图2-2-1当一个移动导致文档对象及其所包含的对象从一个文件夹对象移至另外一个文件夹对象中,目录对象中的引用必须被更新(见图2-2-2)。同样当该文档对象被删除时,它所包含的对象也需要被删除,对它的引用也要从文件夹对象和目录对象中删除。这些都可以通过生存周期服务进行维护。生存周期服务对于调用的客户端来看是十分简单,在图2-2-2的例子中客户端只须调用方法move和copy,其他连接的对象操作对于客户端而言都是透明的。当在不同的范围内创建一个新对象时,客户端必须找到该范围的一个工厂对象,通过它
22、调用一个create请求,返回得到一个新对象的引用。例如当一个对象在不同的机器间拷贝时,目标机所在的工厂对象用来分配资源,获得对象引用,在对象适配器(ObjectAdapter)和实现池(ImplementationRepository)对新对象进行注册。基本的生存周期服务是由LifeCycleObject,FactoryFinder和GenericFactory三个接口组成,见图2-2-3。OFindfactorisOCreate_objectFactoryFinderGenericFactoryOCopyLifeCycleObjectOMoveORemoveLifecycleservice
23、图2-2-4接口LifeCycleObject,FactoryFinder和GenericFactory及其中的方法LifeCycleObject接口定义了Copy,Move,Remove操作。它是和客户端进行交互的主要接口。Copy操作对目标对象进行拷贝并返回对象引用;Move操作允许对象被迁移到FactoryFinder所能找到的范围中任何位臵;Remove操作用来删除目标对象。FactoryFinder接口用来寻找工厂对象。GenericFactory接口定义了一个通用的Create_object操作。第2.03节事件服务事件(event)是指一个特定对象所产生的一个操作;通知(noti
24、fication)是指一个对象所发的一个消息,通知其他对该对象感兴趣的对象一个特定的事件已经发生。事件服务允许对象动态地获取它们所感兴趣的其他对象所产生的事件。产生事件的对象并不需要知道是谁对它的事件感兴趣,这都由事件服务进行操作。事件服务简化了对象之间的通讯,它把对象定义为两种角色:提供者和消费者。提供者产生事件,消费者通过事件句柄处理事件。提供者和消费者之间使用标准的CORBA请求。在提供者和消费者之间的交互中存在两种模式:推模式和拉模式。在推模式中事件提供者首先启动,把事件数据传向消费者;在拉模式中正好相反。提供者和消费者之间是通过EVENTCHANNEL对象进行交互的,EVENTCHA
25、NNEL对象是驻存在ORB的标准的C0RBA对象,它简化了提供者和消费者之间的通讯,允许异步情况下和提供者和消费者之间互不知道的情况下,多个提供者和多个消费者之间进行通讯。一个EVENTCHANNEL对象通过使用代理对象简化了提供者和消费者之间通讯,提供者和消费者通过EVENTCHANNEL对象获得代表对方的代理对象:一个提供者获得一个消费者代理;一个消费者获得一个提供者代理。EVENTCHANNEL对象通过这些代理对象来实现事件的交互。图2-3-1描述了一个推模式下的过程。第 页共27页图2-3-1一个推模式推模式相对拉模式更为常用,大多数产品中都优先实现了推模式。图2-3-2中描述了COR
26、BAPushDisconnectpush_consumerPushConsumerDisconnect_push_supplierPushSupplierConnect_push_supplierProxyPushConsumerConnect_pushconsumerObtain_push_supplierObtain_pull_supplierConsumerAdminProxyPushSupplierObtain_push_consumerObtain_pull_consumerFor_consumerFor_supplierDestroyEventChannelSupplierAdmi
27、n图2_3-2件服务中的推模EventService标准在推模式下定义的七个接口。PushConsumer接口定义了Push方法和Disconnect_push_consumer方法:Push方法接收一个事件;Disconnect_push_consumer方法告诉消费者不再接收任何事件;PushSupplier接口定义了Disconnect_push_supplier方法:它告诉提供者停止发送事件;ProxyPushConsumer接口定义了Connect_push_supplier方法:提供者调用该方法连接在EventChannel中的代理消费对象,该调用在EventChannel中注册提
28、供者的对象引用;ProxyPushSupplier接口定义了Connect_push_consumer方法:消费者调用该方法连接在EventChannel中的代理提供者对象,该调用在EventChannel中注册消费者的对象引用;ConsumerAdmin接口是提供者代理对象的管理者:一个消费者要连接到EventChannel必须要首先调用Obtain_push_supplier或者obtain_pull_supplier以获得一个提供者代理对象;SupplierAdmin接口是消费者代理对象的管理者:一个提供者要连接到EventChannel必须要首先调用Obtain_push_consum
29、er或者obtain_pull_consummer以获得一个消费者代理对象;EventChannel接口定义了对EventChannel的三个管理方法:For_consumer返回一个ConsumerAdmin对象,For_supplier返回一个SupplierAdmin对象,Destroy解析EventChannel并释放它所拥有的资源。第2.04节交易黄页服务交易黄页服务如其名是对象的黄页服务:它使得客户端能够基于对象所提供的服务来寻找合适的对象。以此相反,命名服务如同对象的白页服务:它使得客户端能够基于对象名来寻找合适的对象。交易黄页服务就是为其他对象提供匹配服务。输出者(服务提供者)
30、通过交易黄页服务来“广告”其服务;输入者(服务消费者)通过交易黄页服务来发现符合其需要的对象服务。交易黄页服务能够使得客户端动态的发现服务并且简化对这些服务的绑定。一个新的服务提供者要在交易黄页服务中注册它的服务,必须提供它的所有相关信息,包括:对象引用,服务类型名,服务的属性。不同的域中的交易黄页服务能够建立相互的连接来扩展它所提供的服务,这如同一个电子集市。当一个交易黄页服务连接到另一个交易黄页服务,它能够使得自己的客户端也可以访问到另一个交易黄页服务中所提供的服务。互相连接的交易黄页服务使得其提供的服务十分庞大,交易黄页服务提供了快速搜索方法:可以通过制定政策来限制搜索范围;可以定义搜索
31、标准;可以定义搜索属性。图2-4-1描述了交OQueryLookupOExport_proxyOWithdraw_proxyODescrible_proxProxy三OMax_leftONext_nODestroyOfferiteratorTraderServiceOExportODescribleOWithdraw_usingconstrainRegistertOWithdrawOResolveOModifyOAdd_linkOModify_linkODescrible_li:Link3ORemove_linkOList_linkOEvaIDPDynamicPropEval图2-4-2交易黄
32、页服务的接口图2-4-2描述了交易黄页服务的核心接口。Lookup接口定义了Query方法:客户端和交易黄页服务通过该方法来寻找和输入服务;Offeriterator接口用来遍历调用Lookup接口所返回的服务集合:Next_n方法返回该集合中第n个服务,Max_left方法返回尚未访问到的服务数目;Register接口使得服务提供者能够把它们的服务注册到交易黄页服务中:服务提供者调用Export方法注册其服务,服务提供者必须提供对象引用,服务类型名,服务的属性,交易黄页服务则返回一个唯一的OfferId来标示提供的服务;Link接口使得一个交易黄页服务能够和另外的交易黄页服务进行连接;Pro
33、xy接口用来决定服务匹配。第2.05节事务服务事务服务支持事务的概念。一个事务是指具备如下特征的工作单元:原子不可分性,一致性,孤立性,事务效果持久性。一个事务只在两种情况下才会结束:该事务或者完成或者失败。当一个事务完成时,所有产生的相关联的变化将会确定;当一个事务失败时,所有产生的相关联的变化将会无效。参与事务服务的对象可分为三种角色:事务客户端,事务服务端,可恢复服务端。事务客户端启动一个事务,ORB把该请求转给事务服务,事务服务登录和该事务客户端联结的事务上下文,然后事务客户端对服务端进行调用。事务服务端是指受事务影响而且其拥有的状态和资源是不可逆的对象。当这些对象调用一个可恢复资源时
34、ORB会将其记录在事务上下文中。一个事务服务端并不参与一个事务服务的完成,但它可以使得该次服务失败返回。一个可恢复服务端是指受事务影响而且其拥有的状态和资源是受保护的对象,可恢复服务端通过调用Register_resource()方法告诉事务服一个可恢复的资源加入了该次事务,相应的加入到事务上下文中。事务服务无缝地合成到ORB中,它依靠ORB来自动地改变事务上下文。一个事务上下文定义了一个事务的参与范围。事务服务在ORB的帮助下管理事务上下文。图2-5-1描述了事务服务过程。图2-5-1一个事务服务过程事务服务主要由图2-5-2中所示的四个关键接口组成。OBeginOCommitOResume
35、ORollbackOSuspendCuurent(0OGet_statusOGet_transcation_nameOGet_controlOGettimeoutOPrepareOCommit_one_phaseOCommitORollbackOForgetResourceORegister_resourceOGet_transaction_nameORegister_subtran_awareOGet_statusOCreate_subtransactionCoordinatorOGet_parent_statusORoll_back_onlyOGet_top_level_statusOHa
36、sh_transaction/73OIs_same_transactionOHash_top_level_transactionOIs_related_transactionOIs_ancestor_transactionOIs_descendant_transactionOIstopleveltransactionOCommit_subtransactionORollback_subtransactionSubtransactionAwareResourceTransactionservice图2-5-2事务服务的接口Current接口使得客户端能方便地使用事务服务:客户端通过调用Begin
37、和Commit方法来启动和正常终止一个事务服务,调用Rollback非正常终止一个事务服务;Coordinator接口协调可恢复服务端和其它在一个事务中的参与者:一个服务调用Register_resource或Register_subtran_aware来参与一个事务服务,调用Create_subtransaction建立当前事务的子事务,调用Hash-方法获得当前事务的句柄,调用rollback_only终止整个事务;Resource接口帮助一个可恢复服务对象参与一个两阶段完成协议:在第一阶段中事务服务对所有参与的资源对象调用Prepare,每个对象返回一个参数或表示同意完成或表示同意失败返
38、回,在此基础上第二阶段事务服务或执行完成或执行失败返回;SubtransactionAwareResource接口处理带有子事务的事务,它是由Resource接口派生而来,增加了两个对子事务的控制方法。第2.06节并发控制服务当多个客户端访问共享资源时,并发控制服务提供接口来获得或释放资源锁。并发控制服务主要是用来和事务服务一起协调多个并发事务的活动,但它也支持非事务模式的操作。锁是允许一个客户访问一个特定资源的标记。并发控制服务是防止多个客户同时对一个资源都拥有锁,这样会造成访问冲突。并发控制服务对不同的访问定义了不同的锁模式:包括读,写,企图读,企图写和更新。并发控制服务对一个资源定义一个
39、锁集合,所有的锁都ODrop_locksLockCoordinator0-0Service从锁集合中获得。图261描述了并发.OCreateOCreate_related控制服务的四个接口。LocksetFactoryOCreate_transactionalOCreate_transactional_relatedOLockOUnlockOGetcoordinatorLocksetOTry_lockOChange_modeOLockOUnlockOGet_coordinatorTransactionalLocksetOTry_lockOChange_modeConcurrencyContro
40、l图2-6-1LocksetFactory接口用来建立锁集合;Lockset用来获得或释放锁:Lock用来获得一个锁并堵塞等待,如果不想堵塞等待,则调用Try_lock,当不能获得锁时,会马上返回控制权;TransactionalLockset接口与Lockset功能相同,区别是它是面向事务的,它的参数必须含有一个事务标识;LockCoordinator接口定义了Drop_locks:当一个事务完成或失败返回时,事务服务调用该方法释放该事务所持有的所有的锁。第2.07节安全服务分布式对象面临着传统的C/S系统所面临的更多的安全问题,这些问题大多数都可以通过在ORB中实现安全功能而解决。图2-7
41、-1描述了一个安全的CORBAORB图2-7-1一个安全的扩展ORB在图2-7-1中,所有的功能调用都有相应的安全功能来保证例如访问控制等安全策略。这些安全功能都建立于ORB中。CORBA安全服务允许一个安全ORB最高能提供分布式对象的B2级安全(B2级安全在美国政府所制定的安全策略橙皮书中接近最高级)。要在网络中符合这些严格的安全要求,则所有的客户端必须提供一个使用者鉴别ID,所有的资源必须由一个访问控制表来保护,必须提供使用日志,在重用一个对象时访问权限不能互相传递。安全服务提供了重要的安全方法,包括:客户鉴别(判断客户端是否是真正的有访问权力的客户端),权限鉴别(判断客户端是否能使用该资
42、源),使用日志(系统管理员监控ORB事件),见证证明(能够提供一个动作确实发生的证据),加解密,建立安全域等。图2-7-2描述了对核心CORBA对象进行安全扩展的主要接口。OGet_service_informationOGet_currentCORBA:ORBOCreateCORBA:BOAooOGet_attributesOSet_credentialsOGet_creduntialsOGetpolicyCORBA:CurrentOGet_domain_policyCORBA:DomainManagerOOverride_default_credentialsOOverride_defau
43、lt_QOPOOverride_default_mechanismsCORBA:ObjectOGet_active_credentialsOGet_security_featuresOGet_security_mechanismsOGetsecuritynames图2-7-2CORBA对象的安全扩展接口第2.08节持久性服务不同于程序语言中所建立的对象生命期较短,分布式对象大多是持久的。持久性对象服务允许对象在应用期外保持持久性,它能使一个对象的状态保存在文件系统,关系数据库或面向对象数据库,能使一个对象的状态从文件系统或数据库中恢复到内存中。图2-8-1持久性对象服务的组成部分持久性服务主要
44、有四个组成部分。图2-8-1描述了持久性对象服务的四个组成部分。持久性对象(POs)是指状态被持久性保持的对象,每个持久性对象都有一个持久性标记(PID)来描述其在数据存储中的位置;持久性对象管理(POM)隔离持久性对象和持久性数据服务,屏蔽二者之间的不同存储协议,根据PID的信息把持久性对象的调用传递给相应的持久性数据服务;持久性数据服务(PDSs)用来在对象和数据存储之间传递数据;数据存储是指包含对象状态数据的独立的地址空间,例如文件系统或数据库。四个部分中与客户端交互的只有PO,其它的对于客户端而言都是透明的。OConnectOStoreODeletePOODisconnectORest
45、oreOConnectOStoreODeletePDSODisconnectORestoreOConnectOStoreODeletePOMODisconnectORestoreOCreate_PID_from_keyPIDFactoryOCreate_PID_from_stringOCreate_PID_from_string_andkeyAPersistenceService图2-8-2持久性对象服务的接口图2-8-2描述了持久性对象服务的六个接口。客户端只是和factory,PO,PID接口进行交互,注意到PO,POM和PDS提供了相同的方法,这是在不同层次上的抽象。接口PIDFacto
46、ry提供了三种方法建立PID;POFactory接口提供了建立一个持久性对象实例的方法;PID接口提供了返回一个PID字符串的方法;PO接口为客户端提供了五种方法,使其能够控制持久性对象和存贮状态数据的关系;POM提供了五种方法使持久性对象和其数据存贮进行交互;PDS提供了五种方法使POM能够和其数据存贮进行交互。第2.09节流转换服务流转换服务可以把一个对象转换为一个流以及相应的逆操作。流是指一个带有可前后移动指针的数据区,这个数据区可以是存在于内存,文件或一个网络中。把一个对象转换为一个流是指通过流的形式把一个对象传送到另一个进程,计算机或ORB中;把一个流转换为一个对象是指在一个新的目的
47、地中把相应的流转换为一个对象。通过流可以把一个对象输出到一个ORB环境之外的地方,再把该对象从流转换到对象而不用再创建一个新的对象。流实际上是一个对象输出/输入工具,通过它可以拷贝和移动一个对象。OWrite_graphOWrite_objectOWrite_stringOWrite_charOWrite_octetOWrite_unsigned_longOWrite_unsigned_shortOWrite_longOWrite_shortOWritefloatOWritedoubletreamIOORead_graphORead_objectORead_stringORead_charOR
48、ead_octetORead_unsigned_longORead_unsigned_shortORead_longORead_shortORead_floatORead_doubleOReadbooleanOExternalizeOInternalizeOBegin_contexOEnd_contextOFlushStreamOExternalize_to_streamOInternalize_from_streamStreamableOCreate_uninitializedStreamableFactoryOCreateStreamFactoryOCreat)FilestreamFact
49、oryExternalizationService图2-9-1流转换服务的基本接口图2-9-1描述了流转换服务的基本接口。从客户端一方来看,流转换服务十分简便。通过StreamFactory或FileStreamFactory创建一个Steam(后者建立的是基于文件的Stream),然后客户端通过Steam和SteamIO可以把对象和流之间进行转换。第2.10节查询服务查询服务可以通过使用查询来寻找属性符合查询标准的对象。这种查询并不违背对象封装,它无权访问一个对象的内部属性数据而只是访问对象的公共属性。查询服务可以通过ODMG-93sObjectQueryLanguage,SQL或者二者的子
50、集。CORBA的查询服务并不仅仅是一个对象查找,当执行一个查询,查询服务返回满足查询标准的一个对象集,查询服务把这个对象集作为一个对象,可以对它进行操纵和遍历,对其中的成员进行增加和删除。图2-10-1查询服务的查询接口查询服务的查询接口如图2-10-1所示。QueryEvaluator接口定义Evaluate方法对查询进行评估;QueryManager接口聚承于QueryEvaluator接口,增加了Create方法,用来建立Query对象;Query接口用来执行查询;Collection接口定义了对查询结果集进行增,删,替换等操作;QueryableCollection接口聚承于Colle
51、ction接口和QueryEvaluator接口。第2.11节组服务组服务用来操纵一组对象。这里的组是指队列,栈,数组,列表,树,集合和包。通常一个组所有的成员都是同一类型的,所有的组都派生于Collection接口,该接口定义了对组成员进行增,删,替换和获取等操作。所有的组都必须提供一个iterators指针,通过iterators指针对组成员进行遍历和增删操作。第2.12节对象关系服务对象关系服务用来在对象之间建立各种关系,并保持对关系的管理,而有联系的对象本身并不用了解这些关系。对象并不是孤立的,互相之间存在着各种关系,例如包含关系,引用关系,从属关系等等。对于各种对象而言,维持各种静态
52、或动态的关系是一个复杂而开销大的事情。关系的产生来源于角色。比如在一个雇佣关系中,公司是处于雇主角色,而一个人是处于雇员角色。一个对象可以同时处于多种角色。在一个关系中所需要的角色数目称为度。显然一个关系至少需要两个度。图2-12-1描述了关系服务中的基本接口。RelationshipFactory接口定义Create方法用来建立一个关系实例;RoleFactory接口定义Create_role方法用来建立一个关系实例;Relationship接口定义了Destroy方法用来消除一个关系;Role接口定义方法用来管理一个角色所有的关系;RelationshipIterator接口用来遍历一个角
53、色的所有关系;IdentificationObject角色定义Is_identical方法用来判断两个对象是否相同。ONext_oneONext_nODestroyRelationshipiteratorOCreateRelationshipsFactoryRelationshipService图2-12-1关系服务中的基本接口第2.13节时间服务在分布式系统中保持一个统一的时间概念对于事件序列而言是十分重要的。可想而知,在一个军事指挥实时系统中,时间不同步会造成十分严重的后果。时间服务可以在允许的误差下获得当前时间,可以得到事件发生的事件顺序,可以生成和时间有关的事件(例如定时器产生的事件)
54、,可以计算事件之间的时间间隔。OAbsolute_timeOCompare_timeOTime_to_intervaOIntervalUTOOTime_setOSet_timerOCancel_timerOSetDataTimeEventHandlerOUniversal_timeONew_Universal_timeOSecure_Universal_timeOUto_from_utcONewintervalTimeServiceOSpansTIOOOverlapsOTimeTimeServiceORegisterTimeEventSbrvOUnregister图2-13-1时间服务的接口图
55、2-13-1描述了时间服务的接口。UTO,TIO和TimeEventHandler接口描述了基本时间服务的实例,Timeservice和TimeEventService接口定义了方法可以用来建立和管理基本时间服务对象。UTO(UniversalTimeObject)接口定义了对UTC(UniversalTimeCoordinated)标准时间值和时间误差值的操作;TIO(TimeIntervalObject)接口定义了和时间间隔相关的操作;TimeService接口定义了建立UTO和ITO对象的方法;TimerEventHandler接口描述了一个包含和时间相关的事件信息的对象;TimeEve
56、ntService接口定义了方法用来建立TimerEventHandler对象并对其进行注册。第2.14节准许服务对于控件软件生产商而言,控件市场正在进入一个可管理的轨道,控件将会在准许管理器中自动进行注册。准许服务提供大量认证选项来满足商业需求,例如它可以提供一个有限期让潜在的用户来试用;对高级别的用户总是可以优先得到准许;允许多个控件使用一个准许。所有的准许都有有效期。准许服务保证当一个被准许的控件在使用时,准许服务和该控件都能了解到对方的存在。准许服务同时还是一个受保护的服务资源。OObtain_producer_specific_license_service_LipenseServi
57、ceManagerOStart_useProduce_SpecificLicenseServiceOEnd_useOCheck_useLicenseService图2-14-1准许服务的接口图2-14-1描述了准许服务的两个接口。LicenseServiceManager接口用来定位合适的准许服务;ProducerSpecificLicenseService接口提供三种方法用来启动,停止和检查服务状态。第2.15节属性服务属性服务允许对一个已封装的对象控件不通过使用IDL语言来动态地增加,修改和删除其属性。例如在运行时刻,可以给一个已存在的文档对象增加一个访问权限属性并设臵属性值,该属性值信息
58、虽然和该文档联系,但并不属于该文档对象。与此相反的是,通过IDL语言只能读取和设臵属性值。一个属性包括一个名字,属性值和模式。ODefine_propertyODelete_propertyODefine_propertiesPropertySetODelete_propertiesOGet_all_property_nameODelete_all_propertiesOGet_property_valueOIs_property_definedOGet_propertiesOGet_all_propertiesOGet_allowed_property_typeOGet_allowed_pr
59、opertiesOGet_property_modeOGetpropertymodessPropertySetDefODefine_property_with_modeODefine_properties_with_modesOSet_property_modeOSetpropertymodesPropertyService图2-15-1属性服务的主要接口图2-15-1描述了属性服务的两个主要接口PropertySet和PropertySetDef。PropertySetDef接口派生于PropertySet接口,它增加了对属性模式进行操纵和控制的方法。属性服务定义了四种不同的属性模式:nor
60、mal模式对属性操作没有限制;read-only模式允许客户端对属性进行读和删,但不能修改;fixed-normal模式允许属性被修改但不能删;fixed-readonly模式允许读。PropertySet接口定义方法用来定义,删除,枚举和检查已存在的属性。PropertySetDef接口定义方法用来控制和修改属性模式。第三章CORBA相关产品及CORBA的未来第3.01节CORBA相关产品经过CORBA标准的发展,基于CORBA标准的产品已有很多,如:Digital的ObjectBroker,Visigenic的VisiBroker,IBM的SOM,HP的OrbPlus,IONA的Orbix
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急资源调查报告3全
- 2025年实木柜门项目可行性研究报告
- 2025年互感器剪切铁芯行业深度研究分析报告
- 氨纶花边项目可行性研究报告
- 格式订单合同范本
- 炊具项目可行性研究报告
- 中国通信设备制造市场运行态势及行业发展前景预测报告
- 2025年中国桑辛素市场竞争策略及行业投资潜力预测报告
- 2025年中国环境监测用χγ吸收剂量率仪行业市场前瞻与投资战略规划分析报告
- 中国蚕养殖行业发展监测及投资战略规划研究报告
- 2024年公安机关理论考试题库500道【综合卷】
- (高清版)TDT 1048-2016 耕作层土壤剥离利用技术规范
- 市场调研与咨询行业的市场调研方法创新培训
- 2024年人工智能助力社会治理现代化
- 29.4常见肿瘤标志物讲解
- 华为企业大学培训体系
- 2024年四川成都市公共交通集团有限公司招聘笔试参考题库含答案解析
- 学生奖励兑换券模板
- 铸牢中华民族共同体意识主题班会教案
- 成品仓主管述职报告
- 血液透析诱导期健康宣教
评论
0/150
提交评论