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 端點
- 啟動基本服務
- 在命名服務上釋出你的服務
- 在命名伺服器上查詢服務
- 一個更有用的客戶端和伺服器示例
- 將你的應用程式連線到核心服務
- 配置你的應用程式以使用實現庫
- 建立一個同時包含客戶端和伺服器的程序
- 建立一個事件供應商
- 建立一個事件消費者
- 建立一個通知供應商
- 建立一個通知消費者
以下部分描述了各種服務、它們的配置以及(如果在上面沒有介紹)應該包含一個示例。