160 likes | 509 Views
CORBA 第 1 章 导论. 1.CORBA 什么是 ? CORBA 是 Common Object Broker Architecture 简称 , 即公共对象请求代理体系。 2. COBRA 的发展 1991 年 CORBA 的第一个版本问世,可是他只是规范了如何再 C 程序中使用它。 随着 OMG(Object Management Group, 对象管理组 ) 公布 RFP(Request for proposals, 征求提案 ) 作为将 CORBA 映射到 C++ 的标准, 1994 年秋天才完成了标准化。
E N D
CORBA 第1章 导论 • 1.CORBA什么是? • CORBA是Common Object Broker Architecture简称,即公共对象请求代理体系。 • 2. COBRA的发展 • 1991年CORBA的第一个版本问世,可是他只是规范了如何再C程序中使用它。 • 随着OMG(Object Management Group,对象管理组)公布RFP(Request for proposals,征求提案)作为将CORBA映射到C++的标准,1994年秋天才完成了标准化。 • 最初为CORBA2.0。在CORBA2.0种提供了IIOP(Internet Inter-ORB Protocol)。随后的2.1、2.2、2.3作了部分修改 • 3.本书的内容 • 第一部分:CORBA简介。介绍了CORBA的基本体系结构和概念,理解它的对象和请求调度模型,以及建立的基本步骤。
第1章 导论 第二部分:CORBA核心。介绍了:接口语言定义(Interface Definition Language IDL);将IDL映射为C++的规则;如何使用POA以及如何支持对象生命周期操作。 第三部分:CORBA机理。包括CORBA网络协议综述和支撑CORBA对象模型的机理。 第四部分:动态CORBA。介绍了:类型any、类型代码和类型DynAny. 第五部分:CORBA服务。命名服务(Naming)、交易服务(Trading)和事件服务(Event)。 第六部分:功能强大的CORBA。介绍了:开发多线程服务器。
第2章 CORBA概述 • 2.1 简介: 计算机网络是典型的异构(Hytergeneous)体系。 造成异构的原因: 1.网络技术随时间不断地在改进。 2.任何一种计算机、操作系统、网络平台的组合都是为了能在一个网络中使某部分的性能达到最好。 3.网络内的多样化使得它具有更大的回转余地。 解决异构的分布式系统的应用程序的两条原则: 1.寻求独立于平台的模型和抽象 2.在不牺牲太多的性能的情况下,尽可能隐藏底层的复杂细节。
第2章 CORBA概述 • 2.2 对象管理组 对象管理组(Object Management Group,OMG)在1989年组建,它制定了一个最关键的规范。对象管理体系(Object Management Architecture,OMA)和它的核心(也是CORBA的规范)。 OMG是用两个相关的模型来描述如何以与平台无关的方式来指定分布式对象及它们之间的交互。 对象模型(Object Model)用来定义在一个异构环境中,如何描述分布式对象接口。 引用模型(Reference Model)用来说明对象间如何交互。 OMG对象管理体系结构如下: 应用对象 公共设施 ORB 对象服务
第2章 CORBA概述 • 1.公共设施 (1) 横向设施:是指在通用领域内定义的对象 (2) 纵向设施:是指在专用领域内定义的对象 • 2.对象服务 (1) 命名服务 (2) 事件服务 (3) 事件处理服务 (4) 交易服务 (5) 生命周期服务 (6) 安全服务 (7) 通知服务 • 3. 对象请求代理(ORB) 它是CORBA的基础,是在分布式环境下,CORBA应用所使用的基于对象模型的软件总线。
第2章 CORBA概述 • 2.3 概念和术语 CORBA为可移植的、面向对象的分布式计算应用程序提供了不依赖于平台的编程接口和模型。 • CORBA中的重要术语 CORBA对象:它是一个“虚拟”实体,它可以由ORB定位,并且可以被客户程序请求调用。 目标对象:是指这个请求目标的CORBA对象 客户程序:它调用CORBA对象的一个请求 服务器程序:它是一个拥有一个或多个CORBA对象的应用程序 请求:它是一个由客户程序提出的CORBA对象的调用请求 对象引用:它是一个用来标识、定位和赋给一个CORBA对象地址的一个句柄 伺服程序:它是一个编程语言的实体,它用来实现一个或多个CORBA对象
第2章 CORBA概述 • 2.4 CORBA特性 1. 一般的请求流。 (1) 客户机提出请求 (2) 客户机ORB核心通过网络传送给与服务器应用程序相联接的服务器ORB核心 (3) 服务器ORB核心将这些请求分配给对象适配器(POA),由它产生目标对象 (4)POA进一步将请求分配给实现目标对象的伺服程序。 (5)伺服程序执行请求后,返回结果给客户应用程序。 客户机应用程序 服务器应用程序 静态 存根 DII ORB接口 ORB接口 框架 DSI POA 网络 客户机ORB核心 服务器ORB核心
第2章 CORBA概述 • 2.4.1 对象的引用 对象的引用分两种:一种是通过值来传递对象,另一种是通过对象引用来传递对象 第一种方法: (1) 被调用的进程A将对象x本身从这端通过网络以0/1序列码的形式传递到主调进程B中,建立一个对象的x副本。 (2) 对象X的副本执行所调用的操作。 第二种方法: (1) 进程A将对象x的对象引用传给主调进程B。 (2) 进程B根据对象引用来调用对象x中的操作。 (3) 调用的操作由远程对象x来执行。 (4) 执行的结果从远端送回给主调进程B。 通过对象引用 进程B 进程A 进程B 进程A 1 3 2 对象x的副本 对象引用 对象x 对象x 1 2 通过值 4
第2章 CORBA概述 • 2.4.2 OMG接口定义语言 在CORBA中,对象接口是按OMG接口定义语言(IDL)来定义的。IDL唯一的目的是允许对象接口以与任何具体的编程语言无关的形式来定义这些接口。 例子:interface Employee{ long number(); }; 对象引用是通过接口名作为类型来表示的。 interface EmployeeRegistry{ Employee lookup(in long emp_number); }; 在CORBA中接口也可以继承。
第2章 CORBA概述 • 2.4.3 语言映射 语言映射指定如何把IDL翻译成不同的编程语言。它提供CORBA所支持的抽象概念和模型的具体实施。 • 2.4.4 操作调用和调度软件 (1) 静态调用和调度:通过OMG IDL被翻译成的特定语言的存根和框架来完成。 (2) 动态调用和调度:通过DII和DSI来完成。 存根和框架的特点: (1) 存根(框架)是自动生成的。 (2) 存根(框架)是静态的。 (3) 存根(框架)与ORB的具体实现相关。
第2章 CORBA概述 • 静态调用和动态调用的区别: 国王就是客户,哲学家就是存根,国王询问哲学家就是客户调用存根,名片就是对象引用,电话就是ORB核心,哲学界伙伴就是静态框架,先知就是对象实现。 秘书就是DII,名片薄就是接口库。 国王 先知 6 1 3 4 2 哲学家 哲学家伙伴 5
第2章 CORBA概述 • 2.4.5 对象适配器(OA) 在CORBA中,OA可作为伺服程序和ORB之间的纽带,一个OA是一个对象,它将一个对象接口配置给调用程序所需要的不同接口。 • CORBA的OA满足三个基本条件: (1) 它们创建允许客户机对对象寻址的对象引用 (2) 它们确保每个目标对象应由一个伺服程序来具体化 (3) 它们获取由一个服务器端的ORB所调度的请求,并进一步将请求直接传送给已具体化为目标对象的伺服程序。 • OA有以下的作用: (1) 对象引用的生成与解释。(2) 根据对象引用找到它对应的对象实现。(3) 方法调用。(4) 交互的安全性。(5) 对象的实现激活与终止激活。(6) 对象实现的注册。
第2章 CORBA概述 • 2.4.6 ORB间协议 CORBA2.0引入了一个通用的ORB互操作性结构体系GIOP(General Inter-ORB Protocol,通用ORB协议),IIOP(Internet Inter-ORB Protocol,因特网ORB间协议)是GIOP一个特例。它是在TCP/IP上实现的。 ORB互用性还要求标准化的对象应用格式。也称可互操作的对象引用(Interoperable object reference,IOR)。 • 2.5 请求调用 客户机按照对象引用调用一个操作时,ORB完成以下步骤: (1) 定位目标对象。(2) 调用服务器应用程序,(3) 传递调用对象所需的参数。(4)必要时,激活这个对象的伺服程序。(5) 等待请求结束。(6) 如果调用成功,返回out、inout参数和将返回值给客户。 (7) 如果失败,返回一个异常给客户机。
第2章 CORBA概述 • 请求调用有下面特征: (1) 定位透明性。(2) 服务器透明性。(3) 语言独立性。(4) 实现独立性。(5) 结构体系独立性。(6) 协议独立性。(7) 传输独立性。 • 2。5。1 对象引用语义 (1) 每个对象引用必须准确地制定一个对象实例。 (2) 若干个不同的引用可以表示同一个对象。 (3) 引用可以是空的。(4) 引用可以悬挂。(5) 引用是不透明的。 (6) 引用是强类型的。(7) 引用支持后期绑定。(8)引用可以是持久 (9) 引用可以是互操作的。 • 2.5.2 引用的获取: 引用是服务器以某种方式发布的。 (1) 返回一个引用作为一个操作的结果。(2) 以某些已知的服务程序公告一个应用。(3) 通过将对象引用转化成一个字符串和将它写在一个文件上来公布一个对象引用。(4) 通过其他可以外传的方式来传送一个对象引用。
第2章 CORBA概述 • 2.5.3 对象引用的内容: 因为传输和定位的透明性,因此封装在每个IOR中的信息需要有最小量信息。需有三个主要信息: 仓库(Repository)ID值:它是一个字符串。它用来标志创建IOR时,最常见的IOR派生类。 末端信息:该字段包含建立一个与实现这个对象的服务器的物理连接ORB所需的所有信息。 对象密钥:仓库ID值和末端信息已经标准化了,相反,对象密钥包含专有信息。 • 2.5.4 引用和代理: 当客户收到一个引用时,客户机在运行时在客户机的地址空间中说明一个代理对象,它提供给客户机一个目标对象的接口。这个代理代表了客户机所产生的对伺服程序的操作调用。 Repository ID (standardized) Endpoint ID (standardized) Object Key (proprietary)
第2章 CORBA概述 • 2.6 CORB应用程序的一般开发过程 (1) 确定你的应用程序的对象,定义他们在IDL中的接口。 (2) 将你的IDL定义编译成C++的存根和框架。 (3) 声明和实现能具体化你的CORBA对象的C++伺服类。 (4) 编写一个服务器mian程序。 (5) 将所创建的在你的服务器上可执行的存根和框架,编译和连接 成服务器实现文件。 (6) 与生成的存根一起编写、编译和连接你的客户程序代码。