中间件_7.ppt
《中间件_7.ppt》由会员分享,可在线阅读,更多相关《中间件_7.ppt(123页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CORBA1 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范。其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用。2内容对象管理体系结构(OMA)CORBA组成结构IDL语法开发实例3对象管理小组对象管理组(ObjectManagementGroup,OMG)是一个非赢利性的协会组织,组建于1989年,由一些的计算机公司发起,目前成员已超过800个,遍及计算机
2、制造商、软件公司、通信公司和最终用户。4对象管理小组为使该组织所采纳的技术具有开放性,OMG所采用的方法是,针对某一领域发出RFP(RequestForProposal),然后以各方提交的建议为基础,经过一系列的讨论和协商,产生最终的规范。CORBA规范主要基于以下几个公司所提交的建议:DEC、HyperDesk、HP、SunSoft、NCR和ObjectDesign。5对象管理小组OMG的宗旨是,推动对象技术(OT)的理论和实践在软件行业中的使用,特别是在开发分布式计算机系统方面。其目的是,为面向对象的应用提供一个公共框架,如果符合这一框架,就可以在多种硬件平台和操作系统上建立一个异质的分布
3、式应用环境。6对象管理小组由OMG制定的最关键的规范对象管理结构(ObjectManagementArchitecture,OMA)和它的核心(也就是CORBA规范),提供了一个完整的体系结构。这个结构以足够的灵活性、丰富的形式适用了各类分布式系统。7对象管理体系结构OMA描述了面向对象技术在分布式处理中的运用。它包括两部分:对象模型(ObjectModel)和参考模型(ReferenceModel)。对象模型定义如何描述分布式异质环境中的对象;参考模型描述对象之间的交互。8OMA对象模型在OMA对象模型中,对象是一个被封装的实体,它具有一个不可改变的标识,并能给客户用户提供一个或多个服务。i
4、nterfaceprinterattributemodel;voidprint(instringbuffer);9OMA对象模型对象的访问方式是通过向对象发出请求来完成的。请求信息包括目标对象、所请求的操作、0个或多个实际参数和可选的请求上下文(描述环境信息)。每个对象的实现和位置,对客户都是透明的。10OMA参考模型在OMA参考模型中,OMG定义了一条为对象所公用的通信总线,即ORB(ObjectRequestBroker)。同时,OMG又定义了对象进出这一总线的界面。这包括:对象服务(ObjectServices)、公共设施(commonfacilities)、应用界面(Applicati
5、onInterface)和域界面(DomainInterface)。11OMA参考模型对象请求代理(ORB)应用界面域界面公共设施对象服务12ORBORB(ObjectRequestBroker)是对象总线。通过ORB,一个client可以透明的调用同一台机器上或网络上的一个server对象的方法。ORB解释该调用并负责查找一个实现该请求的对象,找到后,把参数传给该对象,调用它的方法,最后返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制。13对象服务对象服务提供基本服务,与具体的应用领域无关的界面。目前,CORBA支持的这类服务有:名字服务、持久性服务、生命周期服务、事
6、务处理服务、对象事件服务和安全服务等。命名服务(Naming Service):允许通过名字查找对象。持久性服务(Persistence Service):提供在各种存储服务器(包括对象数据库、关系数据库和简单文件)上永久性存储对象的统一界面。14对象服务生存周期服务(Life Cycle Service):定义了在对象总线上创建、拷贝、移动和删除对象的操作。事务处理服务(Transaction Service):提供两阶段提交协议,用于确保ORB上的一些分布式对象协同地完成事务处理。事件服务(Event Service):允许对象动态注册或撤消指定的事件。安全服务(Security Serv
7、ice):提供一个分布式对象安全的完整框架。15公共设施与对象服务不同的是,公共设施面向最终用户的应用,它是各种应用可以共享的一系列服务集合。复合文档的管理工具,数据库存取工具、文件打印工具、电子邮件服务都等属于公共设施。(横向)16域界面针对着某一特殊的应用领域。例如,PDME(工厂数据管理环境)是OMG发出的最早的这类RFP之一,它是为解决制造领域中的问题而发出的。另外,OMG也已经发出了通信、医药和财务等领域中的这类RFP。(纵向)17应用界面应用界面针对某一具体应用而产生。18公共对象请求代理体系结构(CORBA)CORBA规范详细说明了OMA中ORB组件的特性和界面。最新的CORBA
8、规范主要包含以下内容:ORB核心(ORBCORE)OMG界面定义语言界面仓库和实现仓库语言映射存根和框架动态调用对象适配器(ObjectAdapter)ORB之间的互操作19CORBA20ORB核心功能:把客户发出的请求传递给目标对象,并把目标对象的执行结果返回给发出请求的客户。其重要特征是:提供了客户和目标对象之间的交互透明性。这主要包括:21ORB核心对象位置:客户不必知道目标对象的物理位置。它可能与客户一起驻留在同一个进程中或同一机器的不同进程中,也有可能驻留在网络上的远程机器中。22ORB核心对象实现:客户不必知道有关对象实现的具体细节。例如,设计对象所用的编程语言、对象所在节点的操作
9、系统和硬件平台等。23ORB核心对象的执行状态:当客户向目标对象发送请求时,它不必知道当时目标对象是否处于活动状态(即是否处于正在运行的进程中)。此时,如果目标对象不是活动的,在把请求传给它之际,ORB会透明地将它激活。24ORB核心对象通信机制:客户不必知道ORB所用的下层通信机制,如,TCP/IP、管道、共享内存、本地方法调用等。数据表示:客户不必知道本地主机和远程主机对数据表示方式,如高位字节在前还是在后等,是否有所不同。25IDL语言和语言映射在客户向目标对象发送请求之前,它必须知道目标对象所能支持的服务。对象是通过界面定义来说明它所能提供的服务。CORBA对象的界面是利用OMGIDL
10、来定义。26IDL语言和语言映射OMGIDL的语法与C+类似(包括C+的预处理语句),它另外增加了一些支持分布式处理的关键字(in、out和inout等)。OMGIDL不是编程语言,而是一个纯说明性语言,并且与具体的宿主语言(主机上的编程语言)无关。这就很自然地将界面与对象实现分离,使得可以用不同的语言来实现对象,而它们之间却又可以进行互操作。27IDL语言和语言映射一个界面说明包含两部分:界面头和界面体。界面头由界面名和一组可选的继承界面组成。界面体由常量、变量、操作和异常声明组成。操作由操作名、参数和异常来定义。28IDL语言和语言映射moduleCCStypedefshortTempTy
11、pe;interfaceThermometerreadonlyattributeTempTypetemperature;interfaceThermostat:Thermometervoidset_temp(inTempTypet);29IDL语言和语言映射不能用OMGIDL直接去实现分布式应用,需要把IDL的特性映射为具体语言的实现,这就是语言映射的任务。到目前为止,OMG已为C、C+、SmallTalk、Ada95、Cobol和Java制定了语言映射标准。30存根(stub)和框架(skeleton)除了把IDL的特性映射为具体语言外,OMGIDL编译器还根据界面定义来产生客户方的存根和服
12、务方的框架。存根的作用是代表客户创建并发出请求;框架的作用则是把请求交给CORBA对象实现。31存根(stub)和框架(skeleton)具体地说,存根使得客户能够不关心ORB的存在,而只要把请求交给存根,存根则负责对请求参数进行封装和发送,以及对返回结果进行接收和解封装。框架在请求的接收端提供与存根类似的服务,它将请求参数解封装,识别客户所请求的服务,调用对象实现,并把执行结果封装,然后返回给客户方。32存根和框架由于存根和框架都是从用户的界面定义编译而来,所以它们都与具体的界面有关,并且,在请求真实发生之前,存根和框架早以分别被直接连接到客户程序和对象实现中去。为此,通过存根和框架的调用被
13、通称为静态调用。33动态调用CORBA还支持两种用于动态调用的界面:动态调用界面(DII)支持客户方的动态请求调用。动态框架界面(DSI)支持服务方的动态对象调用。34动态调用利用DII,客户方应用可以在运行时动态地向任何对象发出请求,而不象静态调用那样,必须在编译时就知道特定的目标对象的界面信息。使用DII时,用户必须手工构造请求信息,包括相应的操作及有关参数等。类似地,DSI允许用户在没有静态框架信息的条件下来获得对象实现。35接口仓库和实现仓库ORB提供了两个用于存储有关对象信息的服务:界面仓库和实现仓库。36接口仓库界面仓库存储各个界面信息的模块,如用IDL编写的界面定义、常量、类型等
14、。它本身作为一个对象而存在。应用程序可以象调用其它CORBA对象所提供的操作一样,来调用界面仓库的操作。界面仓库允许应用程序在运行时访问OMGIDL类型系统。例如,当应用程序在运行时遇到一个不知道其类型的对象时,可以通过界面仓库的操作来遍历系统中的所有界面信息。由此可见,界面仓库的引入很好地支持了CORBA的动态调用。37接口仓库IDL:CCS:1.0IDL:CCS/Temptype:1.0IDL:CCS/Thermometer:1.0IDL:CCS/Thermometer/temperature:1.0IDL:CCS/Thermostat:1.0IDL:CCS/Thermostat/set_
15、temp:1.038实现仓库实现仓库所完成的功能与界面仓库类似,只不过它存储的是对象实现的信息。当需要激活某一对象类型的实例时,ORB需要访问这些信息。39对象适配器对象适配器是联系对象实现与ORB本身的纽带。另外,它的引入还大大减轻了ORB的任务,从而简化了ORB的设计。具体地说,对象适配器主要完成以下工作:对象登记利用对象适配器所提供的操作,可以将CORBA的实现仓库中具有编程语言形式的实体(servant,伺服器)登记为CORBA的对象实现。40对象适配器对象引用(OR,ObjectReference)的产生对象适配器为CORBA对象生成对象引用。客户应用程序通过对象引用来访问对象实例。
16、服务器进程的激活如果客户发出请求时,目标对象所在的服务器还未运行,则对象适配器自动激活该服务器。41对象适配器对象的激活。对象的撤消在预先规定的时间片内,如果一直没有发向某个目标对象的请求,则对象适配器撤消这一对象,以节省系统资源。对象向上调用对象适配器把请求分配给已登记了的对象。42对象适配器Root POAPOA1POA2servantservantservantPOA3servant43对象适配器缺省伺服器ObjectIdServantActiveObjectMap44对象适配器对象引用ObjectIdServant45对象引用格式RepositoryIDhost:portObjectK
17、eyIDL:CCS/Thermostat:1.0bobo:1799POA路径:ObjectId46对象引用到伺服器对象所在的服务器对象实现所处的POA相应的伺服器host:portPOA路径ObjectId47对象引用的获取对象引用是客户机获取目标对象唯一途径。客户机获取引用的方式:通过调用公共操作list_initial_services、resolve_initial_services来获取标准服务应用,如“RootPOA”、“NameService”、“TradingService”等。以某些已知的服务程序公告一个引用,如名字服务。通过将对象引用转换成一个字符串和将它写入一个文件,来公布
18、一个对象引用。返回一个引用作为一个操作的结果(就像返回一个值,或返回一个inout或out参数)。通过其他可以外传的方式来传送一个对象引用,比如,用电子邮件发送或者在Web网页上公布。48对象适配器之请求处理流程ORB coreRoot POAPOA1POA2servant1框架框架操作操作1操作操作n49ORB之间的互操作在发布CORBA2.0之前,ORB产品的最大缺点是:不同厂商所提供的ORB产品之间并不能互操作。为了达到异构ORB系统之间互操作的目的,CORBA2.0规范中定义了标准通信协议GIOP(Generalinter-ORBProtocol)。50ORB之间的互操作GIOP协议由
19、3个部分组成:公共数据表示(CommonDataRepresentation,简称CDR);GIOP消息格式,它定义了用于ORB间对象请求、对象定位和信道管理的7种消息的格式和语义。51ORB之间的互操作传输层假设,GIOP协议可运行于多种传输层协议之上,只要传输层协议是面向连接的、可靠的,所传递的数据可以为任意长度的字节流,提供错序通知功能,连接的发起方式可以映射到TCP/IP这样的一般连接模型。52ORB之间的互操作GIOP协议只是一种抽象协议,独立于任何特定的网络协议,在实现时必须映射到具体的传输层协议或者特定的传输机制之上。GIOP协议到TCP/IP协议的映射又称为IIOP(Inter
20、netInter-ORBProtocol)协议。53CORBA的发展CORBA1.0CORBA对象模型、IDL、用于动态请求管理和动态调用的API集合和界面仓库。CORBA1.1 引入对象适配器概念,并提供了BOA。CORBA2.0增加了跨平台ORB的互操作规范。54CORBA的发展CORBA2.2引入POA,解决了不同CORBA平台上应用的可移植性。(多POA,多策略:如持久对象、对象透明激活、单伺服多OID等)CORBA2.3增加了用于嵌入式设备的miniCORBA规范。CORBA2.4增加了服务于实时应用的rtCORBA规范。55CORBA产品比较著名的有IONA的Orbix、Exper
21、tSoft的PowerCORBA以及Inprise的Visibroker。同时,还有一些优秀的成果可供研究,如Mico,Orbacus,TAO等。56IDL语法types(类型),constans(常量)和interfaces(界面)1、基本类型long,unsignedlong,short,char,boolean,string,.2、数组(Arrays)typedeflongCellValues1020;3、sequence(序列,模板)typedefsequenceUpToTenStrSeq;typedefsequenceStrSeq;57IDL语法4、结构类型结构类型structStr
22、uctNamecharcharMember;unsignedshortAnotherMember;enumColorred,green,blue;unionUswitch(char)caseL:longlong_mem;casec:caseC:charchar_mem;default:stringstring_mem;58IDL语法5、常量常量 constunsignedlongLengthOfNameString=15;6、界面界面(interface)interfaceExample1readonlyattributestringName;attributelongValue;longAd
23、dToValue(inlongSummand,outlongResult);7、模块、模块(Modules)59IDL语法moduleCORBAtypedeflongLong;interfaceObject.;interfaceORB:Object.;8、继承60IDL的C+映射IDL类型与C+类型的对应关系IDL类型C+类型封装C+类型stringanyinterfacefoostructfoounionfootypedefsequencefoochar*CORBA:Anyclassfoo,foo_ptrstructfoo,foo_ptrclassfoo,foo_ptrclassfoo,fo
24、o_ptrCORBA:String_varCORBA:Any_varclassfoo_varclassfoo_varclassfoo_varclassfoo_var61IDL的C+映射classUpublic:CORBA:Char_d()const;void_d(CORBA:Char);CORBA:Longlong_mem()const;voidlong_mem(CORBA:Long);CORBA:Charchar_mem()const;voidchar_mem(CORBA:Char);constchar*string_mem()const;voidstring_mem(char*);62ID
25、L的C+映射Umy_u;my_u.long_mem(99);assert(my_u._d()=L);assert(my_u.long_mem=99);my_u.char_mem(X);my_u._d(C);63IDL的C+映射classStrSeqpublic:StrSeq();StrSeq(CORBA:ULongmax);StrSeq(CORBA:ULongmax,CORBA:ULonglen,char*data,CORBA:Booleanrelease=0);StrSeq();StrSeq(constStrSeq&);StrSeq&operator=(constStrSeq&);64IDL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中间件 _7
限制150内