写在前面
本文转自 Corba概念(GIOP、IIOP、IOR、ORB、IDL).
防止哪天找不到了,所以自己做了个备份。
CORBA
公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。简而言之,CORBA 允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。
CORBA曾经是分布式计算的主流技术,在电信等领域使用广泛。开发和部署成本较高,目前属于已经基本被遗弃的技术,被轻量级的Web服务、RESTful服务等代替了。
IOR
可互操作对象引用。
ORB(Object Request Broker)
对象请求代理。ORB 是一个中间件,他在对象间建立客户-服务器的关系。通过 ORB,一个客户可以很简单地使用服务器对象的方法而不论服务器是在同一机器上还是通过一个网络访问。ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果。客户不用知道对象在哪里,是什么语言实现的,他的操作系统以及其他和对象接口无关的东西。
ORB 守护程序
负责查找 IOR 指定的对象实现,以及建立客户机和服务器之间的连接。一旦建立了连接,GIOP 将定义一组由客户机用于请求或服务器用于响应的消息。
GIOP(General Inter-ORB Protocol)
GIOP(通用对象请求代理间通信协议)元件提供了一个标准传输语法(低层数据表示方法)和ORB之间通信的信息格式集。GIOP只能用在ORB与ORB之间,而且,只能在符合理想条件的面向连接传输协议中使用。它不需要使用更高一层的RPC机制。这个协议是简单的(尽可能简单,但不是简单化),可升级的,使用方便。它被设计为可移动的、高效能的表现、较少依靠其它的低层传输协议。当然,由于不同传输使用不同版本的GIOP,它们可能不能直接协作工作,但它能很容易的连接网络域。
IIOP (Internet Inter-ORB Protocol)
IIOP(Internet对象代理间通信协议) 元件指出如何通过TCP/IP连接交换GIOP信息。IIOP为Internet提供了一个标准的协作工作协议,它使兼容的ORB能基于现在流行的协议和产品进行“out of the box”方式的协作工作。它也能被用于两个半桥(half-bridges )之间的协议。该协议能用于任何ORB与IP(Internet Protocol)域之间的协作工作,除非ORB选择了特殊的协议。这时,它是TCP/IP环境下基本的inter-ORB 协议,最普遍的传输层。
GIOP 不基于任何特别的网络协议,OMG 在最广泛使用的通信传输平台 – TCP/IP 上标准化 GIOP,GIOP 加 TCP/IP 等于 IIOP
IDL
IDL全称接口定义语言,是用来描述软件组件接口的一种规范语言。用户可以定义模块、接口、属性、方法、输入输出参数,甚至异常等等。IDL在不同的语言下都有相应的实现,可以把IDL描述的接口编译为目标语言,包括客户端代理和服务器端框架,以及相应的帮助类等等。比如Java中提供过了idlj命令用来编译。
CORBA与ORB的关系
CORBA的分布式对象调用能力依赖于ORB,而ORB之间进行通信是通过GIOP协议完成的。GIOP定义了ORB之间互操作的传输语法和标准消息格式,比如请求头、请求体所包含的字段和长度。
IIOP与GIOP的关系
IIOP与GIOP的关系就象特特殊语言与OMG IDL之间的关系;GIOP能被映射到不同层,它能指定协议。就象IDL不能见招完整的程序一样,GIOP 本身也不能提供完整的协作工作。IIOP和不同传输层上的其它相似映射,实现抽象的GIOP定义。
GIOP是一个抽象的协议,而IIOP是其一个具体的实现,定义了,如何通过TCP/IP协议交换GIOP消息。 所以通常我们说CORBA是基于IIOP协议的。