1.CORBA:Common Object Request Broker Architecture,通用对象请求代理体系。是由对象管理组(Object Management Group, OMG)制定的一种标准的面向对象分布式应用程序体系规范,旨在为异构分布式环境中,硬件和软件系统的互联而提出的一种解决方案。
2.解决异构分布式系统两条主要原则:
(1).寻求独立于平台的模型和抽象,这样有助于解决大部分问题。
(2).在不牺牲太多性能的前提下,尽可能隐藏底层的复杂细节。
3.对象管理组(OMG)定义的两类与平台无关的分布式对象模型:
(1).对象模型(Object Model):用来定义在一个异构环境中,如何描述分布式对象接口。对象模型将对象定义为永恒不变、始终唯一的,对象模型封装实体,这些实体只能被严格定义的接口访问,客户机通过向对象发请求,才能使用对象提供的服务,对象的实现细节和它的位置对于客户机上隐藏的。
(2).引用模型(Reference Model):用来说明对象之间如何交互。引用模型提供的接口种类,通常是按对象接口编组,所有接口种类有一个对象请求代理(Object Request Broker,ORB)按概念链接在一起。通常,一个ORB可以在客户机和对象之间进行通信,当请求发送给对象时,透明地激活那些没有运行的对象。
4.对象管理组(OMG)的接口种类:
(1).对象服务接口:Object Services,OS.是与领域无关(水平定向)的接口,对象管理组定义的命名服务(Naming Service)和交易服务(Trading Service)都是对象服务。对象服务通常被认为是分布式计算架构的核心部分。
(2).领域接口:Domain Interface,DI.其作用与对象服务接口类似,但是领域接口针对领域而已,它与特定领域相关(垂直定向)。
(3).应用程序接口:Application Interface,AI.是专门为特定应用程序而开发的,并不是对象管理组所制定的标准。但是如果某些应用程序的接口出现在许多不同的应用程序中,那么这些应用程序接口应作为其他接口种类中的一类成为接口标准化的备选项。
5.CORBA常用术语:
(1).ORB:Object Request Broker,对象请求代理,在一个面向对象的分布式环境中,ORB可以为应用程序、服务器、网络设施之间分发消息提供关键通信设施。可以将ORB想象成一组软件总线,它提供了一个公用消息传递接口,通过这个接口,不同类型的对象可以以对等层策略进行通信。ORB是CORBA的核心组件,提供了识别和定位对象、处理连接管理、传送数据和请求通信的框架结构。
(2).CORBA对象:CORBA Object,是一个“虚拟”的实体,可以有对象请求代理(ORB)定位,并且可以被客户程序请求调用。
(3).目标对象:Target Object,在一个CORBA请求调用的上下文中,目标对象是指这个请求目标的CORBA对象。CORBA对象模型是一个单调度模型(single-dispatching model),即一个请求的目标对象只能由这个请求的对象引用来确定。
(4).客户程序:Client,是一个实体,由它来向CORBA对象发出调用请求。
(5).服务程序:Server,是一个拥有一个或多个CORBA对象的应用程序,用于处理客户程序请求。
(6).请求:Request,是一个由客户程序所提出的CORBA对象的调用操作。请求从一个客户机传给服务器中的目标对象,如果这个请求要求一个CORBA对象作为响应,目标对象负责返回结果。
(7).伺服程序:Servant,是一个编程语言实体,用来实现一个或多个CORBA对象。伺服程序也称为具体化的CORBA对象,伺服程序存在于服务器应用程序上下文中,是一个特定类的对象实例。CORBA只是一个规范,CORBA使用对象定义语言(Interface Definition Language,IDL)定义分布式程序的对象,以及对象之间的交互操作,具体的实现由不同的编程语言如C++或Java来提供,伺服程序就是这些具体编程语言中的程序对象。
(8).可互操作的对象引用:Interoperable Object Reference,IOR.存储几乎所有ORB间协议信息,用于建立客户机和目标对象之间的通信,为ORB的互操作提供标准化的对象引用格式。每个IOR指定一个或多个所支持的协议,对于每个协议,IOR包括那个协议所专有的信息。对于IIOP,每个IOR包括一个主机名,TCP/IP端口号和一个对象密钥,密钥根据所给出的主机名和端口组合来识别目标对象。
一个IOR主要有三个部分组成:仓库ID,终点信息和对象密钥。
个人理解IOR类似于数据库连接信息或者JNDI连接信息对象等,用于传输对象之间的操作信息。
6.CORBA体系:
(1).客户端调用静态存根(static stubs)向服务器发出请求,存根(stubs)是代理对象支持的客户端程序。
(2).服务器端调用静态框架(static skeleton)处理客户端请求,框架(skeleton)是服务器端程序。
7.CORBA的接口定义语言:
Interface Definition Lanuage,IDL.IDL是CORBA的基本抽象,它从实现中分离出对象接口,用于描述客户机和服务器程序之间交互操作用到的数据类型和对象接口。因为IDL只描述接口,不描述实现,它是一个纯说明性语言,因此IDL无法编写可执行的语句,也无法解说对象的状态,IDL定义把焦点集中在对象接口、其他接口所支持的操作和操作时可能引发的异常上。IDL与编程语言无关,这是CORBA支持异构系统和独立开发应用程序集成的关键。
IDL定义由一个IDL编译器编译成一个具体的实现语言如C++等,IDL编译器将IDL中这些与编程语言无关的对象和接口定义翻译成特定编程语言的类型定义和API,开发者使用这些编译处理的类型和API来提供应用程序功能和与ORB交互。
IDL编译成特定编程语言的转换算法由CORBA来确定,并成为语言映射(Language Mapping)。
8.对象管理组的生命周期服务(Life Cycle Service):包括对象的创建、拷贝、移动和撤销,以及使用回收(Evictor)模式实现对大对象内存消耗限制和无用存储单元回收策略。
对象管理器的生命周期服务类似于EJB中EJB对象的创建、钝化、激活以及被Java虚拟机垃圾回收等。
9.CORBA对象请求代理(ORB)间协议:
(1).GIOP:General Inter ORB Protocol,通用ORB间协议,是一类抽象的协议,指定了转换语法和消息格式的标准集,运行独立开发的ORB可以在任何一个面向连接的传递中进行通信。
(2).IIOP:Internet Inter-ORB Protocol,因特网ORB间协议,指定GIOP如何在TCP/IP上实现。
10.GIOP消息格式:
(1).Request:
从客户机发送到服务器,请求调用服务器一个操作或读写一个属性。
(2).Reply:
从服务器发送到客户机,只是为了响应客户机的请求,包含一个操作调用的结果。
(3).CancelRequest;
客户机通知服务器它已对一个操作的结果失去了兴趣。
注意:当操作执行时,一个CancelRequest将不会中止一个操作,相反,它只是通知服务器当操作完成时,不再需要向客户机传递应答。
(4).LocateRequest:
客户机使用该请求从一个对象中获得当前的地址信息。
(5).LocateReply:
服务器使用该响应消息对客户机的LocateRequest进行应答,LocateRequest和LocateReply可以降低定位对象的开销。
(6).CloseConnection:
服务器使用该消息通知客户机该服务器程序准备关闭连接。
(7).MessageError:
客户机/服务器都可以发送该消息,用于响应任何错误的GIOP消息。
(8).Fragment:
客户机/服务器都可以发送的消息,用于决定是否已存储片方式发送消息。
11.IOR结构:
CORBA使用可互用的对象引用(IOR)作为识别一个对象的通用手段,IOR包含一个对象的接口类型和一个/多个的协议配置文件。每个配置文件包含客户机使用一个特定协议发送一个请求所需的信息。单个IOR可能同时包含几个协议的寻址信息,使得单个CORBA对象可以通过不同的传输进行访问。
12.CORBA请求调用步骤:
客户机通过发送消息来调用CORBA操作,当客户机调用CORBA操作时,ORB完成以下操作流程:
(1).定位目标对象。
(2).调用服务器应用程序。
(3).传递调用所需的参数。
(4).必要时,激活调用目标对象的伺服程序。
(5).等待请求结束。
(6).如果调用成功,返回out/inout参数和将返回值传给客户机。
(7).如果调用失败,返回一个异常给客户机。
最新评论