CORBA的基本内容(上)

原创 2002年04月09日 09:40:00

CORBA的基本内容(上)

(本文转载自软件工程专家网www.21cmm.com

苏洋

  回顾上一讲中在介绍CORBA体系结构时,曾强调CORBA在提高组件重用性、增强分布计算功能方面具有的突出特点:
  ● 引入中间件作为事务代理;
  ● 客户程序与服务器程序完全分离;
  ● 与面向对象的建模概念相结合;
  ● 引入接口定义语言描述服务对象功能。

  CORBA规范只是描述了CORBA系统中各个构件的基本情况以及构件在系统中承担的任务,并没有从功能实现的细节上规定必须如何建立一个基于CORBA规范的软件系统产品。这样,对于基于CORBA的软件产品开发而言,程序设计人员可以自由地选择实现方式,但前提是遵循规范中各个构件的实现原则。在本讲和下一讲中,将详细介绍CORBA中各个构件的主要内容。

对象请求代理(ORB)

1. 对象请求代理(ORB,Object Request Broker)的作用

  在传统的基于客户机/服务器模式的应用程序开发过程中,项目开发人员遵循公开的标准或自由设计模块间的协议,这样的协议依赖于网络类型、实现语言、应用方式等。引入ORB后,客户只要遵循服务对象的对外接口标准向服务对象提出业务请求,由ORB在分布式对象间建立客户-服务对象关系。总结起来,ORB的作用包括:
  ● 接受客户发出的服务请求,完成请求在服务对象端的映射;
  ● 自动设定路由寻找服务对象;
  ● 提交客户参数;
  ● 携带服务对象计算结果返回客户端。

corba_11.jpg

图1 客户服务请求示意图

  由图1可以看出,客户(Client)向服务对象的实现(Object Implementation)发出事务请求,其中客户是欲对服务对象发出方法请求的实体,服务对象应包括该方法的数据资源以及实现代码。对象请求代理的作用就在于定位服务对象,接收客户发出的服务请求并将服务对象的执行结果返回给客户。请求发出后,客户对象采用轮询等方式以获取服务对象计算的结果。

2. ORB的结构及类型

  ORB通过一系列接口和接口定义中说明的要实现操作的类型,确定提供的服务和实现客户与服务对象通信的方式。通过IDL接口定义、接口库或适配器(Adapter)的协调,ORB可以向客户机和具备服务功能的对象实现(Object Implementation)提供服务。作为CORBA体系结构的核心,ORB可以实现如下三种类型的接口:
  ● 对于所有的ORB实现具有相同的操作;
  ● 针对特定类型对象的操作;
  ● 与对象实现类型有关的操作。

  基于ORB实现的不同类型接口,一个客户端请求可以同时访问多个由不同ORB实现通信管理的对象引用。在实际应用中,只要遵循公共的ORB体系结构,程序设计可以选择ORB的多种实现方式,其中包括:

  (1)客户和实现驻留(Client-Implementation Resident)ORB:采用驻留在客户和服务对象实现程序的方式实现ORB。在这种实现方式下,客户端可以通过桩(Stub)程序,以位置透明的方式向具体的实现对象提出服务请求,实现客户与服务对象的通信。

  (2)基于服务(Server-based)ORB:客户对象和实现对象均可以与一个或多个服务对象进行通信,服务对象的功能是将请求从客户端发送到对象实现。在这种方式中,ORB的作用是完成客户对象与实现对象的通信,为对象之间的交互提供服务。

  (3)基于系统(System-based)ORB:在这种实现方式中,ORB被操作系统认为是系统所提供的一项基本服务。由于操作系统了解调用方与服务对象的位置,因而可以充分地实现ORB功能的优化。

  (4)基于库(Library-based)ORB:如果认为对象实现可以共享,则可以将实现功能放入实现库(Implementation Repository)中,从而创建基于库的ORB。

3. ORB中的主要方法

  客户端和服务对象端均可以自由选择使用ORB对象中定义的方法来实现操作。下面举例说明ORB对象中的重要方法:
(1)ORB ORB_init(inout arg_list argv,in ORBid orb_identifier)
作用:ORB初始化方法。
(2)String object_to_string(in Object obj)
作用: 将对对象的引用转换成客户可以用字符串方式存储的对象信息。
(3)Object string_to_object(in String str)
作用:上述方法的逆过程。将以字符串方式存储的对象转换成对对象类型的引用。
(4)Object resolve_initial_references(in ObjectID identifier)
作用:获取初始对象引用。
(5)Policy get_policy(in PolicyType policy_type)
作用:返回指定类型的服务策略对象。

  作为公共对象请求代理体系结构中的核心内容,ORB提供了相当丰富的方法。读者可以查阅相关资料详细了解ORB中的方法。

4. 服务请求的实现方式

  关于对象请求的实现方式,CORBA规范中定义客户程序可以用动态调用接口(DII,Dynamic Invocation Interface)方式或通过OMG IDL文件经编译后在客户端生成的桩(Stub)方式提出服务请求。这两种实现方式的区别在于通过OMG IDL桩(Stub)文件方式实现的调用请求中,客户能够访问的服务对象方法取决于服务对象所支持的接口;而动态调用接口调用方式则与服务对象的接口无关。尽管实现调用请求的方式有所区别,但客户发出的请求服务调用的语义是相同的,服务对象不去分析服务请求提出的方式。

  ORB通过IDL客户桩(Stub)方式或动态调用接口(DII)方式定位服务对象的实现代码、传递服务对象应用参数以及完成对请求传送方式的控制。服务对象的实现(Object Implementation)通过对象适配器(Object Adapter)提供对客户请求的服务。客户对服务器端方法的调用方式见图2。

corba_12.jpg

图2 客户调用服务请求的实现方式

  从以上对服务请求调用方式的分析可以看出: 服务对象接口的定义在整个CORBA系统服务功能的实现中起着相当重要的作用。那么如何实现服务对象的功能接口呢?CORBA规范中定义了两种接口实现方式:第一种形式是利用OMG IDL接口定义语言对接口进行描述。IDL语言有详细的语法规则(讲座将在第五讲对该语言的语法规则进行详细讲解)。这样,经过对所实现功能的系统分析,利用IDL,依据服务对象可能实现的服务以及服务中需要的参数,对接口进行定义。另外一种方式是将接口放入接口仓库(Interface Repository)中,在运行期间对接口库中的接口进行访问。

CORBA的基本内容(下)

CORBA的基本内容(下)(本文转载自软件工程专家网www.21cmm.com)苏洋接口仓库  CORBA引入接口仓库(Interface Repository)的目的在于使服务对象能够提供持久的对象...
  • gigix
  • gigix
  • 2002年04月09日 09:39
  • 1445

CORBA的基本内容

回顾上一讲中在介绍CORBA体系结构时,曾强调CORBA在提高组件重用性、增强分布计算功能方面具有的突出特点:   ● 引入中间件作为事务代理;   ● 客户程序与服务器程序完全分离;   ● ...
  • u012719556
  • u012719556
  • 2013年11月20日 09:25
  • 902

CORBA技术及实例

CORBA是一种规范,它定义了分布式对象如何实现互操作。在WorldWideWeb盛行之前,特别是Java编程语言风靡之前,C++开发者基本将CORBA作为其高端分布式对象的解决方案。 实际的CORB...
  • johnny_83
  • johnny_83
  • 2007年07月25日 06:07
  • 1260

Corba互操作的命名服务

(来源:http://www.ccw.com.cn) Corba的对象命名服务就是给对象实例提供一个名称,以便用户通过这些名称来获取对象的实例。对象命名服务是ORB上的对象找到其它...
  • happyqwz
  • happyqwz
  • 2012年12月11日 16:04
  • 1205

分布式技术比较(RPC,CORBA,WebService)

1、RPC(Remote Procedure Call Protocol) RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型。面向过程 2、CORBA(Co...
  • after_
  • after_
  • 2014年01月07日 21:30
  • 1671

RMI, RPC, CORBA区别

RMI 和 RPC均可以均提供远程方法访问的基础通信和参数引用要求的串行化机制,RPC和RMI之间的一个重要差别是RPC用快速而不够可靠的UDP协议,RMI用低速而可靠的TCP/IP协议。另外 RMI...
  • AbnerChai
  • AbnerChai
  • 2012年06月14日 11:02
  • 2105

Java corba 实例

.NET 和 Java 在技术布局上非常类似,.NET 的远程调用经历了DCOM,.NET Remoting,最后是几乎成了.NET 平台SOA代名词的WCF.WCF的目标在于通过一种通用简单的协议来...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月23日 12:03
  • 1948

CORBA、 EJB(JavaEE规范)、WebService比较

CORBA和EJB 1.工业标准: 都是。很多厂商共同遵守。 2.提供的基本支撑: (1)构件化: CORBA提供半自动的构件运行环境,开发人员除了开发构件还要开发POA(相当于Skel...
  • u010924834
  • u010924834
  • 2016年07月15日 11:06
  • 473

CORBA——名字命名服务

命名服务的本质是:将名字与corba对象引用绑定,即:名字与corba对象引用之间的一个映射关系。一个名字对应一个对象引用,一个对象引用可以对应多个名字。(关系为一对多)        功能:实现给...
  • Nancy_m
  • Nancy_m
  • 2012年06月17日 20:33
  • 2931

波特“钻石”模型理论的基本内容

波特“钻石”模型理论的基本内容早在20世纪90年代初,著名产业竞争力研究专家、美国哈佛大学工商管理学院迈克尔·波特(Michael. E. Porter)教授经过对许多国家的产业的国际竞争力研究后,以...
  • CheyneQin
  • CheyneQin
  • 2006年01月31日 21:49
  • 6575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CORBA的基本内容(上)
举报原因:
原因补充:

(最多只允许输入30个字)