跳轉至內容

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 的應用程式。

以下部分描述了各種服務、它們的配置以及(如果在上面沒有介紹)應該包含一個示例。

參考資料

[編輯 | 編輯原始碼]
華夏公益教科書