WEB开发网
开发学院WEB开发Jsp 亲身体验CORBA: 使用java和C++混合编程 阅读

亲身体验CORBA: 使用java和C++混合编程

 2008-01-05 08:21:27 来源:WEB开发网   
核心提示:1. 前言 现在很多人在对CORBA进行学习,大家都已经了解到CORBA是一个完全中间性的语言,亲身体验CORBA: 使用java和C++混合编程,可以使用接口定义语言(IDL)定义开发时使用接口的 Client 和实现接口的 Server 所需要的信息,
1. 前言

现在很多人在对CORBA进行学习,大家都已经了解到CORBA是一个完全中间性的语言,可以使用接口定义语言(IDL)定义开发时使用接口的 Client 和实现接口的 Server 所需要的信息。 Client 和 Server 的具体实现代码并不在IDL定义中编写,而是使用某种目标语言的IDL 编译器生成所需的代码存根及helper类,Client 和 Server再使用真正的编程语言来进行具体实现。

为了保证在不同的 CORBA 产品基础之上构建的分布式对象可以相互通信,Client和Server通过ORB(对象请求代理)进行通信。一般的运行流程是Client把请求发送给ORB,ORB再把请求发送给Server,Server把返回结果发送ORB,ORB再把返回结果发送给Client。ORB可以说Client和Server之间的翻译者。即使Client和Server使用不同的编程语言编写,只要是符合相同的IDL定义,ORB也可以完成相互的通信。

所有的文档在强调服务器及客户机可以是java也可以是C++或其他语言(如:Delphi)进行编写,但在网站或书本是没有具体说如何应对多语言客户机的例子。《JAVA2核心技术》上面有些说明,但也只是介绍性的文章,故自己下载了omniORB304,进行了一次使用SUN的 tnameserv命名服务程序,服务器用JAVA编写,客户机分别用JAVA和C++(VC6+omniORB)编写的试验,希望通过一次编程的具体操作实例来体验或明了CORBA思想。

总体的编写过程如下:

用IDL定义一个接口文件,描绘要实现的功能,也可以说是定义一个要实现功能的一个模版(SysPRop.idl)

  使用"IDL to Java"编译器(这里是IDLJ)将IDL文件转化为Java编程语言中编写的接口定义,生成所需的代码存根及helper类

  使用Java语言编写客户机和服务器的实现程序。

  使用"IDL to C++"编译器(这里是omniidl)将IDL文件转化为C++编程语言中编写的接口定义,生成所需的代码存根及helper类

  使用C++语言编写客户机实现程序(当然也可编写服务器程序,但本次试验没有进行)

  起动命名服务tnameserv

  起动Java编写的服务程序

  用Java和C++编写的客户机分别调用相应的服务

2. 运行环境的设定:

总体环境由jdk1.3+omniORB3.0(www.uk.research.att.com\omniORB\doc\3.0) +vc6 组成,下面说明具体的安装。

2.1. 安装JDK1.3

从SUN公司DOWN JDK1.3或者通过其他方式得到jdk1.3进行安装,再设定相应的环境变量,在本文测试用的电脑上是如下所示:

CLASSPATH=.;
  JAVA_HOME=D:\jdk130

修改原来的PATH变量,添加"%JAVA_HOME%\bin;",如下

PTAH=%JAVA_HOME%\bin;原变量

注重:我在第一次使用jbuilder的jdk1.3时,服务器不能正常工作,我只是发觉这么一回事,具体原因与本文无关而没有进行了解,请谅。

2.2. 安装VC6
  VC6按常规方式安装,注重的是:在本文测试用的电脑上安装在如下位置

C:\Program Files\Microsoft Visual Studio

2.3.安装omniORB

从 www.uk.research.att.com\omniORB\doc\3.0 下载omniORB3.0 ( 本文测试所下载的文件是omniORB_304_x86_win32.zip )。

用WinZip进行解压omniORB_304_x86_win32.zip到omniORB_304_x86_win32目录,目录内存在omni目录,复制omni目录内的文件到你把想存放的位置。

测试电脑安装在C:\omni

根据C:\omni\README.win32 文档进行设定,由于运行程序及命令行在控制台进行,所以本次测试并不根据文档要求去设定环境变量,而是编写了一个omni.bat,在使用控制台时,首先运行。


Tags:亲身 体验 CORBA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接