ACE+TAO 开源编程笔记
一位维基教科书用户认为此页面应该被分割成更小的页面,并拥有更窄的主题。 你可以通过将这个大页面分割成更小的页面来帮助我们。请确保遵循 命名规范。将书籍分成更小的部分可以提供更多焦点,并允许每个部分都做好一件事,这将使每个人受益。 |
本书探讨了与 TAO CORBA 开发和集成相关的议题。
首先,让我们谈谈开源项目的本质。开源项目的最大优势在于,你可以获得一个可用的产品,并享有社区支持。这种支持通常以用户支持和开发者支持的形式出现。理想情况下,这些支持途径还包括文档。如果所讨论的开源项目缺乏上述某些部分,那么其作为开源产品的效用(尤其是在产品变得越来越复杂的情况下)必然会降低。
ACE+TAO 是一款很棒的产品,与其他开源产品(如 Orbit 或 Mico)相比具有优势。它包含了当前标准的大部分内容,并提供了你期望得到的所有服务(以及一些额外的服务)。不幸的是,除了最基本的服务(命名服务)之外,它们的教程中几乎没有提供编程示例文档。虽然示例目录中有一些源文件,但这些文件不幸的是没有编写文档代码(通常甚至没有描述示例用途的标题),当然也没有包含在任何解释其代码或用途的网页中。
Object Computing, Inc. 免费提供了其 入门 章节,该章节来自其 TAO 开发者指南(可以以约 20 美元的价格购买)。本章节包含完整的代码示例,并引导用户完成创建简单 TAO 客户端和服务器所需的步骤。开源 TAO 1.4a 发行版包含 TAO 开发者指南中引用的所有示例,而 FAQ 为初学者和专家提供了许多有用的信息。
Remedy IT 免费提供了 CORBA 程序员指南。
此外,comp.soft-sys.ace 和 comp.object.corba 新闻组由能够回答有关 TAO 和 CORBA 的问题的小组和个人监控,而 TAO 邮件列表 可用于提问、讨论和报告与 TAO 相关的错误。
以下部分将扩展 ACE+TAO 附带的单个示例(引号示例),并包含旨在帮助用户使用事件服务、通知服务和其他实时问题的部分。希望为解释 TAO 项目各个部分做出贡献的读者,欢迎为本页面贡献内容。
- http://htmlpreview.github.io/?https://github.com/DOCGroup/ATCD/blob/master/TAO/TAO-INSTALL.html
- http://www.theaceorb.com/faq/index.html#HowToBuildACEandTAOonWindows
唯一需要注意的是,在 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% 的应用程序需求。
为了更轻松地安装所有 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
步骤
- 运行测试(ACE_wrappers/tests 和 ACE_wrappers/TAO/tests)
- 检查所有二进制文件的链接(tao_idl、tao_cosnaming 等)
- 从示例开始
- 在两个位置演示运行示例,并尝试操作,这是一个很好的开始。
- ACE_wrappers/TAO/DevGuideExamples/ 和
- ACE_wrappers/TAO/Examples/
在本节中,将描述基本任务,这些任务使你能够创建大多数启用 CORBA 的应用程序。
- 开始之前
- 创建服务器
- 创建客户端
- 处理 IIOP 端点
- 启动基本服务
- 在命名服务上发布你的服务
- 在命名服务器上查找服务
- 一个更有用的客户端和服务器示例
- 将你的应用程序连接到核心服务
- 配置你的应用程序以使用实现库
- 创建一个同时包含客户端和服务器的进程
- 创建一个事件供应商
- 创建一个事件消费者
- 创建一个通知供应商
- 创建一个通知消费者
以下部分描述了各种服务、它们的配置以及(如果在上面没有介绍)应该包含一个示例。