探索 CORBA 技术的应用领域

原创 2001年08月24日 09:02:00
探索 CORBA 技术的应用领域
8/20/2001 9:15:2· ·Dave Bartlett ··转自IBM DeveloperWorks 中国网站

1 2  下一页


  6 月份,我们谈过您为什么要使用 CORBA 和 Java 技术。本月,我要通过一个可用的简单示例,让您开始探索 CORBA 技术的许多领域。不过,别忘了我们的目标是,创建这样一种分布式应用程序:使驻留在一台计算机上的客户机能向运行于另一台计算机上的服务发出请求。我们不想为诸如硬件或操作系统软件等细节问题操心,而只是想让这种服务能响应客户机的请求。

  IDL 接口

  全部 CORBA 结构是从一个接口开始的,理解接口的最佳方法就是想像我的汽车,对,我的汽车。虽然您不熟悉它,但如果我对您说:“开上我的车,带些三明治回来当午餐”,恐怕您就不会怀疑自己能不能驾驶我的汽车。您可能想知道它停在哪里,以及开它是否安全,但是您会确信开我的车与开您的车差别不大。这是因为,在各种汽车当中,人与汽车之间的接口已高度标准化了。我的轿车和您的跑车之间可能会有一些差异,但汽车的油门踏板、刹车和方向盘的安装都是标准的,您一定能轻松快速上路。

  因为 CORBA 与语言无关,所以它依靠一种接口定义语言 (IDL),来表达客户机如何向实现接口的服务发出请求。我们的接口就是一个方法:add()。这个方法将取两个数(两个 IDL 的 long 型数)并返回这两个数之和。下面是我们的接口计算程序:

清单 1. calcsimpl.idl
module corbasem {
 module gen {
  module calcsimpl {
    interface calculator {
     long add(in long x, in long y);
    };
  };
 };
};

  这个接口中的 IDL 关键字有:module、interface、long 和 in。IDL 使用关键字 module 来创建名称空间,并且此关键字准确地映射为 Java 关键字 package。运行 IDL-to-Java 编译器时,生成的 Java 文件将会存到名为 calcsimpl 的子目录中。IDL 关键字 interface 完美地映射为 Java 接口,并代表一种抽象类型,因为两者都只定义您与对象通讯的方式,而不涉及对象的实现。IDL 关键字 long 是一种基本的整数类型,它至少映射为一个 4 字节的类型,这种类型在 Java 代码中就是 int。

  想一想执行远程方法调用的机制,您就会发现定义参数传递的方向(客户机到服务器、服务器到客户机或者双向传递)是多么的有意义。在 IDL 操作中,这些方向用 in、out 和 inout 关键字来声明,每个参数都必须声明方向,以便使对象请求代理程序 (ORB) 知道该参数的去向。这会影响到为发送而进行的参数打包、参数解包以及内存管理。ORB 对参数了解得越多,它的效率就越高。关键字 in 表明 long x 和 long y 是从客户机传递到服务器。

图 1. 参与 CORBA 请求的各个部分
jt-2001-8-20-simpex-1.gif


  IDL 编译器 需要 IDL 编译器吗

  您可能已经有了 ORB 供应商和 IDL-to-Java 编译器。但如果还没有,您从哪里获取呢?这里有好多,而且有些还可以免费下载。我推荐 Object Oriented Concepts, Inc. 的 Orbacus ORB。如果不将其用于商业目的,它还可以免费下载,而且完全符合 CORBA 2.3 规范。另外一个可试用 60 天的编译器是 Inprise 的 Visibroker,也完全符合 CORBA 2.3 规范并且可下载。如想获得这两种产品,请参阅参考资料。

  接口定义以后,必须在 ORB 供应商提供的 IDL-to-Java 编译器上运行。IDL 编译器是一种精巧的实用程序,它生成 IDL 的 stub 和 skeleton 以及其它支持文件。生成的这些源文件,大部分将增强 CORBA 标准中定义的特定 IDL 类型的打包功能。编译器将生成大部分网络探测 (plumbing),这在分布式系统中非常重要。在最基本的级别中,IDL-to-Java 编译器只是一个按 CORBA 2.3 规范的定义来实现从 IDL 到 Java 语言映射的程序。手动生成这些代码既枯燥又费时,还容易出错;IDL-to-Java 编译器会处理这一切,所以您就不用操心啦;同时,它会用一定的规则约束您,并强制您执行封装。IDL-to-Java 编译器将把 CORBA-land 规则强加给您的系统。

  输入下面的命令,从 Orbacus 执行 IDL-to-Java 编译器,把所有生成的文件都放在 CLASSPATH 的输出目录下。

清单 2. 调用 IDL-to-Java 编译器
jidl --output-dir c:/_work/corbasem calculator.idl

  生成了什么呢?这个命令生成了构建实现所需要的全部 Java 源文件。IDL-to-Java 编译器可确保所定义的接口遵守 CORBA 规范的规则。

图 2. IDL-to-Java 编译器文件生成
jt-2001-8-20-simpex-2.gif

  下面是这些文件:

   calculator.java - 这个文件叫标记接口文件。CORBA 规范指出这个文件必须扩展 IDLEntity,并且与 IDL 接口同名。这个文件提供类型标记,从而使这个接口能用于其它接口的方法声明。

   calculatorOperations.java - 这个文件内含 Java 公共接口 -- calculatorOperations。规范指出,这个文件应该与具有 Operations 后缀的 IDL 接口同名,并且这个文件内含此接口映射的操作标记。上面定义的标记接口 (calculator.java) 可扩展这个接口。

   calculatorHelper.java - 设计 helper 类的目的是,让所需要的许多内务处理功能脱离我们的接口,但又随时可用到实现过程中。帮助程序文件含有重要的静态 narrow 方法,这种方法使 org.omg.CORBA.Object 收缩为一种更具体的类型的对象引用;在这种情况下,将是一个计算程序类型。

   calculatorHolder.java - holder 类是一个专门化类,是为了需要通过引用来传递参数的任意数据类型而生成的。这个示例中将不使用 holder 类,但我们将会在以后的栏目中经常见到它。

   calculatorPOA.java - skeleton 类为 CORBA 功能提供了请求-响应探测的一大部分。生成 calculatorPOA.java,是因为缺省方式下的实现是基于继承的,如果我们选择基于委托的实现方式,输出就会不一样。这些主题将在以后的栏目中详细介绍。

   _calculatorStub.java - 顾名思义,这是一个 stub 类。您的客户机将需要这个类来进行工作。

1 2  下一页

CORBA技术及实例

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

正确使用CORBA,ICE等分布式技术的一种思路

1.1       前言目前分布式应用软件越来越多,但在如何平衡分布式应用和单机应用的处理性能有一些麻烦。另外就是从一种分布式技术迁移到另一种分布式技术也很困难。一个原因就是我们的上层应用代码和底层的...
  • h8135
  • h8135
  • 2005年03月02日 08:49
  • 5966

CORBA技术探索起步

         一、概述CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Manag...
  • hejishan
  • hejishan
  • 2007年12月18日 02:59
  • 222

CORBA技术探索起步

         一、概述CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Manag...
  • JDMBA
  • JDMBA
  • 2006年12月26日 17:23
  • 7566

java实现CORBA

1.      利用CORBA实现数据的访问,也就是通过客户端的代码,访问服务器端的代码。首先是定义一个idl文件,里面的主要类型就是定义一个接口,类容如下: 2.      然后利用i...
  • wx_962464
  • wx_962464
  • 2012年05月10日 10:19
  • 5861

Corba 学习笔记 (一)

背景:项目上使用到了CORBA这个古老的东东,所以需要学习一下。 CORBA的一些资料,童鞋们可以自己看,我就不贴在这里了 > http://baike.baidu.com/view/153815.h...
  • wssiqi
  • wssiqi
  • 2015年11月10日 21:52
  • 5048

CORBA协议相关的概念

CORBA 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Manage...
  • wodeyuer125
  • wodeyuer125
  • 2015年04月26日 14:37
  • 723

嵌入式系统的应用领域

嵌入式系统是数字化产品的核心,制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等均是嵌入式计算机的应用领域。 1.消费类电子产品       消费类电子产...
  • moqingxinai2008
  • moqingxinai2008
  • 2016年11月27日 14:54
  • 575

c++技术研究

1、基于tablet PC手写识别开发,新增简单拼音输入法功能。 2、USB摄像头拍照、摄像(技术点:拍证件、纸质文件时可自动裁切,拍摄人像或活动物体时可实现自动定位和识别)。 3、PDF 文件结...
  • GUMU12345
  • GUMU12345
  • 2018年01月11日 09:48
  • 31

《深入探索Android热修复技术原理》安卓热修复原理宝典出炉,阿里技术大牛联袂推荐

继《阿里巴巴Java开发手册》后,阿里为开发者带来了第二份重磅大礼:业界首部安卓热修复原理书籍——《深入探索Android热修复技术原理》,该书为阿里巴巴手淘技术团队撰写,现已免费开放下载。 ...
  • Jason_996
  • Jason_996
  • 2017年07月03日 12:41
  • 632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:探索 CORBA 技术的应用领域
举报原因:
原因补充:

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