跳转至内容

ACE+TAO 开源编程笔记

50% developed
来自维基教科书,开放的书籍,为开放的世界

本书探讨了与 TAO CORBA 开发和集成相关的议题。

首先,让我们谈谈开源项目的本质。开源项目的最大优势在于,你可以获得一个可用的产品,并享有社区支持。这种支持通常以用户支持和开发者支持的形式出现。理想情况下,这些支持途径还包括文档。如果所讨论的开源项目缺乏上述某些部分,那么其作为开源产品的效用(尤其是在产品变得越来越复杂的情况下)必然会降低。

ACE+TAO 是一款很棒的产品,与其他开源产品(如 Orbit 或 Mico)相比具有优势。它包含了当前标准的大部分内容,并提供了你期望得到的所有服务(以及一些额外的服务)。不幸的是,除了最基本的服务(命名服务)之外,它们的教程中几乎没有提供编程示例文档。虽然示例目录中有一些源文件,但这些文件不幸的是没有编写文档代码(通常甚至没有描述示例用途的标题),当然也没有包含在任何解释其代码或用途的网页中。

Object Computing, Inc. 免费提供了其 入门 章节,该章节来自其 TAO 开发者指南(可以以约 20 美元的价格购买)。本章节包含完整的代码示例,并引导用户完成创建简单 TAO 客户端和服务器所需的步骤。开源 TAO 1.4a 发行版包含 TAO 开发者指南中引用的所有示例,而 FAQ 为初学者和专家提供了许多有用的信息。

Remedy IT 免费提供了 CORBA 程序员指南

此外,comp.soft-sys.acecomp.object.corba 新闻组由能够回答有关 TAO 和 CORBA 的问题的小组和个人监控,而 TAO 邮件列表 可用于提问、讨论和报告与 TAO 相关的错误。

以下部分将扩展 ACE+TAO 附带的单个示例(引号示例),并包含旨在帮助用户使用事件服务、通知服务和其他实时问题的部分。希望为解释 TAO 项目各个部分做出贡献的读者,欢迎为本页面贡献内容。

构建说明

[编辑 | 编辑源代码]

唯一需要注意的是,在 UNIX 环境中,你需要小心使用“传统构建”。它将安装目标目录视为一个它拥有的沙盒,因此,如果你选择了 /usr/local(就像你在典型的 automake 项目中一样),请了解,如果构建过程中出现问题,传统构建环境将执行的最后一件事是删除其沙盒(/usr/local)。

另一方面,如果你喜欢省事,bonsai.com 上的 Ken Sedgwick 提供了预编译的 RPM 包,或者使用 OpenSuSE Build Service 上提供的 Remedy IT 的 RPM 包(参见 http://download.opensuse.org/repositories/devel:/libraries:/ACE:/micro)。提供的二进制文件不是调试版本,因此它们不会占用使用 -g 构建的 ACE+TAO 安装所占用的大量空间。似乎有点可惜的是,编译的特性数量似乎有点少。话虽如此,这无疑是一个良好的入门方式,并且可以满足 90% 的应用程序需求。

在 Linux 上的构建说明

[编辑 | 编辑源代码]

为了更轻松地安装所有 TAO,请使用以下脚本。构建过程将花费大量时间,因此使用脚本是一个不错的选择。脚本也可以修改,只编译必要的 TAO 特性。

#!/bin/bash 
echo "Usage: sudo ./INSTALL-ACE+TAO-6.1.2.sh [INSTALL-DIR]"; 
echo "best to put it in /opt" 
ACETAO=ACE+TAO-6.1.2 
# To change to the latest available install change the ACETAO
# Tested and works with UBUNTU 10.04 and 12.04
if [ $# -eq 1 ]; then 
	INSTALL_DIR=$1; 
	else 
	INSTALL_DIR=~/; 
fi 
# check if script is run as root! 
echo "default run sudo ./INSTALL-ACE+TAO-6.1.2.sh ~/"; 
echo "Tested with Ubuntu-but in theory work on all linux! NJOY !";

# go to $INSTALL_DIR to install ACE+TAO into 
cd $INSTALL_DIR;

# download ACE+TAO to current directory 
echo "Download: wget http://download.dre.vanderbilt.edu/previous_versions/$ACETAO.tar.gz"; 
wget http://download.dre.vanderbilt.edu/previous_versions/$ACETAO.tar.gz 
if [ "$?" -ne 0 ]; then echo "ERROR: download failed!"; exit 1; fi

# rm possible former installation 
rm -rf ACE_wrappers; 
rm -rf $ACETAO;

# extract archive 
echo "UNTAR: tar -xzf $ACETAO.tar.gz"; 
tar -xzf $ACETAO.tar.gz 
if [ "$?" -ne 0 ]; then echo "ERROR: extraction failed!"; exit 1; fi

# set environment variables 
cd ACE_wrappers; 
echo "export ACE_ROOT=$PWD" >> ~/.bashrc 
source ~/.bashrc 
echo 'export TAO_ROOT=$ACE_ROOT/TAO' >> ~/.bashrc 
echo 'export LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH' >> ~/.bashrc 
source ~/.bashrc 
cd $ACE_ROOT; 
# create config.h file 
echo "Config.h create--- $ACE_ROOT/ace/config.h" 
echo "#include <ace/config-linux.h>" > $ACE_ROOT/ace/config.h 
echo "" >> $ACE_ROOT/ace/config.h

# create platform_macros.GNU file 
echo "create platform_macros.GNU for linux--$ACE_ROOT/include/makeinclude/platform_macros.GNU"; 
echo "INSTALL_PREFIX = /usr/local" > $ACE_ROOT/include/makeinclude/platform_macros.GNU 
echo "include \$(ACE_ROOT)/include/makeinclude/platform_linux.GNU" >> $ACE_ROOT/include/makeinclude/platform_macros.GNU 
echo "" >> $ACE_ROOT/include/makeinclude/platform_macros.GNU

# compile ace kernel 
cd $ACE_ROOT/ace; 
make; 
if [ "$?" -ne 0 ]; then echo "FAILED to compile $ACE_ROOT/ace!"; exit 1; fi

# compile gperf 
cd $ACE_ROOT/apps/gperf; 
make; 
if [ "$?" -ne 0 ]; then echo "FAILED to compile $ACE_ROOT/apps/gperf!"; exit 1; fi 
 
cd $ACE_ROOT/ace; 
make install; 
if [ "$?" -ne 0 ]; then echo "FAILED to install $ACE_ROOT/ace!"; exit 1; fi

# compile TAO 
cd $TAO_ROOT; 
make; 
if [ "$?" -ne 0 ]; then echo "FAILED to compile $TAO_ROOT/TAO!"; exit 1; fi

echo ""; 
echo "ACE+TAO successfully installed!!!";

安装后要检查的事项

[编辑 | 编辑源代码]

完成 TAO 构建后,务必检查是否一切正确完成。因此,运行 ACE 和 TAO 中可用的“测试”进行检查。如果系统在 Linux 上构建,则默认情况下命名服务不可用,但该功能由 tao-cosnaming 提供,就像 IDL 构建由 tao-idl 提供一样。你可以使用以下方法为 NamingService 创建一个指向 tao_cosnaming 的软链接。

ln -s tao_cosnaming Naming_Service

步骤

  1. 运行测试(ACE_wrappers/tests 和 ACE_wrappers/TAO/tests)
  2. 检查所有二进制文件的链接(tao_idl、tao_cosnaming 等)
  3. 从示例开始
在两个位置演示运行示例,并尝试操作,这是一个很好的开始。
  1. ACE_wrappers/TAO/DevGuideExamples/ 和
  2. ACE_wrappers/TAO/Examples/

核心开发操作

[编辑 | 编辑源代码]

在本节中,将描述基本任务,这些任务使你能够创建大多数启用 CORBA 的应用程序。

以下部分描述了各种服务、它们的配置以及(如果在上面没有介绍)应该包含一个示例。

参考资料

[编辑 | 编辑源代码]
华夏公益教科书