TAO 使用指南


<script type="text/javascript">function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
标 题: TAO使用指南
发信站: BBS 水木清华站 (Thu May 8 18:35:49 2003), 站内

最近正在将一个工程由Orbix2000向TAO移植. 将一些心得和经验奉上, 算是给DOC版做点贡献... 说的不对, 请大家指正. 同时您有什么心得也不仿写出来嘛 :)

1. 什么是TAO?
TAO是美国华盛顿大学的CORBA界大牛Douglas C. Schmidt博士领导开发的一个实时CORBA平台. 它是一个开放源码项目, 所以是完全免费的. 用C++语言开发. 符合CORBA2.6版本.
支持语言: C++
支持平台: Win32, 常见的各种Unix, Linux, 实时操作系统如VxWorks等等. 在所有的CORBA平台中, TAO支持的平台应该是最多的.
支持的服务: Naming, Event, Notification, Security, Time, Scheduling, Logging, Lifecycle, Trading, Concurrency, Lifecycle, A/V Streaming, Load balancing等.

2. 网上的TAO资源
TAO主页: http://www.cs.wustl.edu/~schmidt/TAO.html
OCI公司宣布对TAO进行技术支持: http://www.ociweb.com
它出了一本书叫: TAO Developer's Guide, 上下两卷, 1000页左右, 要250美刀. 吐血买了一本...
此外, OCI有自己的TAO发布版本, 最新版本号为1.2a. Win32版本 开价50美刀.
OCI有一个TAO的FAQ, 很不错, 地址:
http://www.ociweb.com/faq/index.html
TAO的Mailing List: tao-users@cs.wustl.edu
Mailing List Archive: http://groups.yahoo.com/group/tao-users

3. 下载TAO
地址: http://deuce.doc.wustl.edu/Download.html
目前最新的Release版本是1.3

发信人: Mentoya (钻研Orbix2000中...), 信区: DOC
标 题: TAO使用指南 -- 编译ACE和TAO
发信站: BBS 水木清华站 (Thu May 8 19:11:37 2003), 转信

我只用到Win32平台. 现在使用的环境是: WinXP Professional + MSVC SP5.
在Win32平台下, 还可以使用C++ Builder来编译和开发TAO. 我没有用过.:-(
参见: http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/TAO-INSTALL.html
------------------------------------------------------------------------
TAO完全支持Win32API,(包括Windows NT, Windows 2000, Windows 95/98/ME)
VC5.0和VC6.0均可编译。如果要在Borland C++ Builder中编译,请参见有关文档.
TAO可以被编译成两种版本:DLL版(动态链接)和LIB版(静态链接)

一. Win32+VC6.0下编译和安装ACE和TAO
将网上下载的TAO软件包解压缩到某个目录,在该目录下会有ACE_wrappers目录。
请按照以下步骤来执行:
1. 新建两个环境变量:
ACE_ROOT=ACE_wrappers所在目录;
TAO_ROOT=ACE_wrappers/tao
2. 在ACE_ROOT/ace目录下建立一个空文件config.h,里面包含一句:
#include "ace/config-win32.h"
以说明是要在win32平台下进行编译。
注:
(1) #include "config-win32.h"亦可
(2) 最好在#include之前加上
#define ACE_HAS_STANDARD_CPP_LIBRARY 1 以使用MSVC的STL库.
3. 如果是98/ME,则在ACE_ROOT/ace/config.h的最前面加上
#define ACE_HAS_WINNT4 0
来关掉一些NT/2000中特有的代码。
4. 如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件
中的#include语句前添加下面的行:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的STL
库时会有一些小麻烦.
5. 如果在ACE中要使用MFC的库,则需要在config.h中添加:
#define ACE_HAS_MFC 1

在默认情况下,所有的ACE工程使用的是MSVC的DLL文件作为运行时库。
你可以选择使用ACE的静态库文件(LIB)而不需考虑这些运行时库。
选择动态链接的原因是所有的NT都会包含这些dll文件(节省空间).
如果你想使用MFC的静态库版本,则需要在config.h中加入以下的宏定义:
#define ACE_USES_STATIC_MFC 1
你也可以全部使用静态库,这需要你在ACE的工程文件中自己设置。

6. 如果定义了ACE_AS_STATIC_LIBS 宏,则ACE 库将被编译成为静态库。
如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:
ACE_AS_STATIC_LIBS.

作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在
ACE_ROOT/ace/config.h文件的#include语句前添加如下的宏定义
#define ACE_NO_INLINE
来禁止内联函数。

7. 用VC打开TAO和ACE的工程文件:ACE_ROOT/tao/taoace.dsw,开始编译ACE和TAO. 注意ACE和TAO有Debug和Release两个版本. 你在开发自己的程序时, 如果是Debug版的程序, 必须链接Debug版的TAO库, 如果是Release版的程序, 必须链接Release版的TAO库.(这不废话! 不过你一定会回来和我一起唱这个当当当的)

taoace.dsw中包含了许多工程, 工程之间是有依赖关系的. 所以这个工程
编译的顺序比较重要. 关于编译的顺序, 下文叙述.

每个工程都包含有一些不同的配置:Debug/Release、MFC/Non-MFC、
Static/Dynamic等版本。你必须确定你所需要的版本。如,要生成你程序的
debug版,则需要debug版的ACE。

注意:如果你用动态(DLL)版本的TAO,在开发程序时,需要将ACE_ROOT/bin
目录添加到你的程序的PATH环境变量中,否则程序会报告找不到动态链接库.

8. 编译顺序.
TAO中有好多服务可能是你用不到的. 所以编译时没有必要将所有的程序全部编译一遍. 要知道编译TAO还是个艰巨的任务咧.
我目前只用到了Naming和Event服务, 并且没有用它的实时CORBA功能. 所以我的编译顺序是:

说明 需要编译的工程
---------------------------------------
核心库 ACE DLL Files
TAO DLL Files
IDL编译器 gperf Files
TAO_IDL_FE_DLL Files
TAO_IDL_BE_DLL Files
TAO_IDL Compiler Files
POA PortableServer Files
名字和事件服务 IORTable Files
Svc Utils Files
CosNaming Files
Naming_Service Files
Messaging Files
CosEvent Files
CosEvent_Service Files
NT_Naming_Service Files
----------------------------------------
TAO的主页上有一个可以自动编译所有TAO工程的脚本, 记不得在那里了.

9. 编译后得到的文件分散于各目录中:

可执行程序和动态链接库文件: $ACE_ROOT/bin

lib文件: $(ACE_ROOT)/ace,
$(TAO_ROOT)/tao,
$(TAO_ROOT)/orbsvcs/orbsvcs

头文件: $(ACE_ROOT),
$(TAO_ROOT),
$(TAO_ROOT)/orbsvcs
10. ACE的DLL和LIB的命名规则:
当使用MSVC编译时的命名规则如下:

"静态库/DLL文件名" + (是静态库吗? "s" : "") +
(是Debug模式的库吗? "d" : "") + (.dll/.lib)
11. 测试TAO
TAO的测试代码位于TAO_ROOT/tests目录下。有一个vc的工程文件:
TAO_tests.dsw来编译所有的测试代码。

发信人: Mentoya (钻研Orbix2000中...), 信区: DOC
标 题: TAO使用指南 -- 用VC++开发TAO程序
发信站: BBS 水木清华站 (Thu May 8 19:34:42 2003), 转信

在Microsoft Visual C++中开发TAO程序时的设置:

一. 路径设置
1. 首先确认环境变量ACE_ROOT和TAO_ROOT已被正确设置.

2. 将(ACE_ROOT/bin)添加到PATH环境变量中. 否则会找不到DLL.

3. 在Tools->Options->Directories中, 分别添加如下目录:
Include files:
$(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)/orbsvcs
Library files:
$(ACE_ROOT)/ace,$(TAO_ROOT)/tao,$(TAO_ROOT)/orbsvcs/orbsvcs
4. 也可以在
Project->Settings->C/C++->Preprocessor->Additional include directories
中添加头文件的路径.

Project->Settings->Link->Input->Additional library directories
中添加静态库文件路径.

二. 工程设置
1. Project->Settings->C/C++->Code generation:
如果工程是Debug版, 选择Debug Multithreaded DLL
如果工程是Release版, 选择Multithreaded DLL
2. Project->Settings->Link->Input->Object/library modules:
需要添加TAO的静态链接库文件:

说明 Debug版 Release版
---------------------------------------------
普通客户端: Debug版: ACEd.lib
Release版: ACE.lib
普通服务器: 在ACE.lib/ACEd.lib的基础上, 还需要添加:
Debug版: PortableServerd.lib
Release版: PortableServer.lib
如果使用了名字服务, 则需要添加 TAO_CosNaming.lib 或
TAO_CosNamingd.lib
如果使用了事件服务, 则需要添加 TAO_CosEvent.lib 或
TAO_CosEventd.lib

注意: TAO分Debug和Release版, 所以在开发时, Debug和Release版的设置要严格区分. 即使是MS自己的库也是这样. 如对于Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib. 我就是因为这个原因而使程序出现异常, 导致差点放弃了TAO :-(

发信人: Mentoya (钻研Orbix2000中...), 信区: DOC
标 题: TAO使用指南 -- 做一个TAO的SDK
发信站: BBS 水木清华站 (Thu May 8 19:56:03 2003), 站内

TAO的文件众多, 目录结构复杂, 所以生成一个所谓的TAO SDK来方便开发.
这个TAO SDK的目录结构如下:

TAOSDK_ROOT
|
|-- bin (所有的可执行文件和动态链接库)
|-- idl (ORB的IDL文件)
|-- include (所有的头文件)
| |-- ace
| | |-- ***
| | |-- ***
| |
| |-- orbsvcs
| | |-- CosEvent
| | |-- Naming
| | |-- ***
| | |-- ***
| |
| |-- tao
| | |-- IORTable
| | |-- PortableServer
| | |-- ***
|-- lib (所有的静态库文件)


使用时, 首先创建环境变量 TAOSDK_ROOT 为TAO SDK的根目录, 然后在VC的工程中如下设置:
添加头文件的include路径:
$(TAOSDK_ROOT)/include,$(TAOSDK_ROOT)/include/orbsvcs,$(TAOSDK_ROOT)/tao
添加静态库文件路径:
$(TAOSDK_ROOT)/lib

下面提供了一个自动生成TAO SDK的批处理文件, 将该文件置于ACE_ROOT目录下, 然后执行之...
注: 本程序来源于TAO的邮件列表.

File name: TAOSDK.bat
-------------------------------------------------------------------------
@echo off
@echo Createing directories…

mkdir ../tao/bin
mkdir ../tao/include
mkdir ../tao/include/ace
mkdir ../tao/include/ace/classix
mkdir ../tao/include/ace/qos
mkdir ../tao/include/ace/rmcast
mkdir ../tao/include/ace/ssl
mkdir ../tao/include/tao
mkdir ../tao/include/tao/BiDir_GIOP
mkdir ../tao/include/tao/Domain
mkdir ../tao/include/tao/DynamicAny
mkdir ../tao/include/tao/DynamicInterface
mkdir ../tao/include/tao/IFR_Client
mkdir ../tao/include/tao/IORManipulation
mkdir ../tao/include/tao/IORTable
mkdir ../tao/include/tao/PortableServer
mkdir ../tao/include/tao/RTCORBA
mkdir ../tao/include/tao/RTPortableServer
mkdir ../tao/include/tao/SmartProxies
mkdir ../tao/include/tao/Strategies
mkdir ../tao/include/tao/TypeCodeFactory
mkdir ../tao/include/orbsvcs
mkdir ../tao/include/orbsvcs/AV
mkdir ../tao/include/orbsvcs/Concurrency
mkdir ../tao/include/orbsvcs/CosEvent
mkdir ../tao/include/orbsvcs/ESF
mkdir ../tao/include/orbsvcs/ETCL
mkdir ../tao/include/orbsvcs/Event
mkdir ../tao/include/orbsvcs/FaultTolerance
mkdir ../tao/include/orbsvcs/LifeCycle
mkdir ../tao/include/orbsvcs/LoadBalancing
mkdir ../tao/include/orbsvcs/Log
mkdir ../tao/include/orbsvcs/Naming
mkdir ../tao/include/orbsvcs/Notify
mkdir ../tao/include/orbsvcs/Property
mkdir ../tao/include/orbsvcs/Sched
mkdir ../tao/include/orbsvcs/Security
mkdir ../tao/include/orbsvcs/SSLIOP
mkdir ../tao/include/orbsvcs/Time
mkdir ../tao/include/orbsvcs/Trader
mkdir ../tao/lib

@echo copying header files...
copy ace/*.i ../tao/include/ace
copy ace/*.inl ../tao/include/ace
copy ace/*.h ../tao/include/ace

copy ace/*.cpp ../tao/include/ace
copy ace/classix/*.i ../tao/include/ace/classix
copy ace/classix/*.h ../tao/include/ace/classix
copy ace/classix/*.cpp ../tao/include/ace/classix
copy ace/qos/*.i ../tao/include/ace/qos
copy ace/qos/*.h ../tao/include/ace/qos
copy ace/qos/*.cpp ../tao/include/ace/qos
copy ace/rmcast/*.i ../tao/include/ace/rmcast
copy ace/rmcast/*.h ../tao/include/ace/rmcast
copy ace/rmcast/*.cpp ../tao/include/ace/rmcast
copy ace/ssl/*.i ../tao/include/ace/ssl
copy ace/ssl/*.h ../tao/include/ace/ssl
copy ace/ssl/*.cpp ../tao/include/ace/ssl

copy tao/tao/*.i ../tao/include/tao
copy tao/tao/*.inl ../tao/include/tao
copy tao/tao/*.h ../tao/include/tao
copy tao/tao/*.idl ../tao/include/tao
copy tao/tao/*.cpp ../tao/include/tao
copy tao/orbsvcs/Naming_Service/*.h ../tao/include/tao
copy tao/orbsvcs/LoadBalancer/*.h ../tao/include/tao
copy tao/orbsvcs/Logging_Service/*.h ../tao/include/tao
copy tao/orbsvcs/TAO_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Time_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Naming_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Trading_Service/*.h ../tao/include/tao
copy tao/orbsvcs/ImplRepo_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Concurrency_Service/*.h ../tao/include/tao
copy tao/orbsvcs/CosEvent_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Dump_Schedule/*.h ../tao/include/tao
copy tao/orbsvcs/Event_Service/*.h ../tao/include/tao
copy tao/orbsvcs/IFR_Service/*.h ../tao/include/tao
copy tao/orbsvcs/LifeCycle_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Notify_Service/*.h ../tao/include/tao
copy tao/orbsvcs/Scheduling_Service/*.h ../tao/include/tao

copy tao/orbsvcs/orbsvcs/*.h ../tao/include/orbsvcs
copy tao/orbsvcs/orbsvcs/*.i ../tao/include/orbsvcs
copy tao/orbsvcs/orbsvcs/*.cpp ../tao/include/orbsvcs
copy tao/orbsvcs/orbsvcs/AV/*.h ../tao/include/orbsvcs/AV
copy tao/orbsvcs/orbsvcs/AV/*.i ../tao/include/orbsvcs/AV
copy tao/orbsvcs/orbsvcs/AV/*.cpp ../tao/include/orbsvcs/AV
copy tao/orbsvcs/orbsvcs/Concurrency/*.h ../tao/include/orbsvcs/Concurrency
copy tao/orbsvcs/orbsvcs/Concurrency/*.i ../tao/include/orbsvcs/Concurrency
copy tao/orbsvcs/orbsvcs/Concurrency/*.cpp ../tao/include/orbsvcs/Concurrency
copy tao/orbsvcs/orbsvcs/CosEvent/*.h ../tao/include/orbsvcs/CosEvent
copy tao/orbsvcs/orbsvcs/CosEvent/*.i ../tao/include/orbsvcs/CosEvent
copy tao/orbsvcs/orbsvcs/CosEvent/*.cpp ../tao/include/orbsvcs/CosEvent
copy tao/orbsvcs/orbsvcs/ESF/*.h ../tao/include/orbsvcs/ESF
copy tao/orbsvcs/orbsvcs/ESF/*.i ../tao/include/orbsvcs/ESF
copy tao/orbsvcs/orbsvcs/ESF/*.cpp ../tao/include/orbsvcs/ESF
copy tao/orbsvcs/orbsvcs/ETCL/*.h ../tao/include/orbsvcs/ETCL
copy tao/orbsvcs/orbsvcs/ETCL/*.i ../tao/include/orbsvcs/ETCL
copy tao/orbsvcs/orbsvcs/ETCL/*.cpp ../tao/include/orbsvcs/ETCL
copy tao/orbsvcs/orbsvcs/Event/*.h ../tao/include/orbsvcs/Event
copy tao/orbsvcs/orbsvcs/Event/*.i ../tao/include/orbsvcs/Event
copy tao/orbsvcs/orbsvcs/Event/*.cpp ../tao/include/orbsvcs/Event
copy tao/orbsvcs/orbsvcs/FaultTolerance/*.h ../tao/include/orbsvcs/FaultTolerance
copy tao/orbsvcs/orbsvcs/FaultTolerance/*.i ../tao/include/orbsvcs/FaultTolerance
copy tao/orbsvcs/orbsvcs/FaultTolerance/*.cpp ../tao/include/orbsvcs/FaultTolerance
copy tao/orbsvcs/orbsvcs/LifeCycle/*.h ../tao/include/orbsvcs/LifeCycle
copy tao/orbsvcs/orbsvcs/LifeCycle/*.i ../tao/include/orbsvcs/LifeCycle
copy tao/orbsvcs/orbsvcs/LifeCycle/*.cpp ../tao/include/orbsvcs/LifeCycle
copy tao/orbsvcs/orbsvcs/LoadBalancing/*.h ../tao/include/orbsvcs/LoadBalancing
copy tao/orbsvcs/orbsvcs/LoadBalancing/*.i ../tao/include/orbsvcs/LoadBalancing
copy tao/orbsvcs/orbsvcs/LoadBalancing/*.cpp ../tao/include/orbsvcs/LoadBalancing
copy tao/orbsvcs/orbsvcs/Log/*.h ../tao/include/orbsvcs/Log
copy tao/orbsvcs/orbsvcs/Log/*.i ../tao/include/orbsvcs/Log
copy tao/orbsvcs/orbsvcs/Log/*.cpp ../tao/include/orbsvcs/Log
copy tao/orbsvcs/orbsvcs/Naming/*.h ../tao/include/orbsvcs/Naming
copy tao/orbsvcs/orbsvcs/Naming/*.i ../tao/include/orbsvcs/Naming
copy tao/orbsvcs/orbsvcs/Naming/*.cpp ../tao/include/orbsvcs/Naming
copy tao/orbsvcs/orbsvcs/Notify/*.h ../tao/include/orbsvcs/Notify
copy tao/orbsvcs/orbsvcs/Notify/*.i ../tao/include/orbsvcs/Notify
copy tao/orbsvcs/orbsvcs/Notify/*.cpp ../tao/include/orbsvcs/Notify
copy tao/orbsvcs/orbsvcs/Property/*.h ../tao/include/orbsvcs/Property
copy tao/orbsvcs/orbsvcs/Property/*.i ../tao/include/orbsvcs/Property
copy tao/orbsvcs/orbsvcs/Property/*.cpp ../tao/include/orbsvcs/Property
copy tao/orbsvcs/orbsvcs/Sched/*.h ../tao/include/orbsvcs/Sched
copy tao/orbsvcs/orbsvcs/Sched/*.i ../tao/include/orbsvcs/Sched
copy tao/orbsvcs/orbsvcs/Sched/*.cpp ../tao/include/orbsvcs/Sched
copy tao/orbsvcs/orbsvcs/Security/*.h ../tao/include/orbsvcs/Security
copy tao/orbsvcs/orbsvcs/Security/*.i ../tao/include/orbsvcs/Security
copy tao/orbsvcs/orbsvcs/Security/*.cpp ../tao/include/orbsvcs/Security
copy tao/orbsvcs/orbsvcs/SSLIOP/*.h ../tao/include/orbsvcs/SSLIOP
copy tao/orbsvcs/orbsvcs/SSLIOP/*.i ../tao/include/orbsvcs/SSLIOP
copy tao/orbsvcs/orbsvcs/SSLIOP/*.cpp ../tao/include/orbsvcs/SSLIOP
copy tao/orbsvcs/orbsvcs/Time/*.h ../tao/include/orbsvcs/Time
copy tao/orbsvcs/orbsvcs/Time/*.i ../tao/include/orbsvcs/Time
copy tao/orbsvcs/orbsvcs/Time/*.cpp ../tao/include/orbsvcs/Time
copy tao/orbsvcs/orbsvcs/Trader/*.h ../tao/include/orbsvcs/Trader
copy tao/orbsvcs/orbsvcs/Trader/*.i ../tao/include/orbsvcs/Trader
copy tao/orbsvcs/orbsvcs/Trader/*.cpp ../tao/include/orbsvcs/Trader

copy tao/tao/BiDir_GIOP/*.h ../tao/include/tao/BiDir_GIOP
copy tao/tao/BiDir_GIOP/*.inl ../tao/include/tao/BiDir_GIOP
copy tao/tao/BiDir_GIOP/*.i ../tao/include/tao/BiDir_GIOP
copy tao/tao/Domain/*.h ../tao/include/tao/Domain
copy tao/tao/Domain/*.inl ../tao/include/tao/Domain
copy tao/tao/Domain/*.i ../tao/include/tao/Domain
copy tao/tao/DynamicAny/*.h ../tao/include/tao/DynamicAny
copy tao/tao/DynamicAny/*.inl ../tao/include/tao/DynamicAny
copy tao/tao/DynamicAny/*.i ../tao/include/tao/DynamicAny
copy tao/tao/DynamicInterface/*.h ../tao/include/tao/DynamicInterface
copy tao/tao/DynamicInterface/*.inl ../tao/include/tao/DynamicInterface
copy tao/tao/DynamicInterface/*.i ../tao/include/tao/DynamicInterface
copy tao/tao/IFR_Client/*.h ../tao/include/tao/IFR_Client
copy tao/tao/IFR_Client/*.inl ../tao/include/tao/IFR_Client
copy tao/tao/IFR_Client/*.i ../tao/include/tao/IFR_Client
copy tao/tao/IORManipulation/*.h ../tao/include/tao/IORManipulation
copy tao/tao/IORManipulation/*.inl ../tao/include/tao/IORManipulation
copy tao/tao/IORManipulation/*.i ../tao/include/tao/IORManipulation
copy tao/tao/IORTable/*.h ../tao/include/tao/IORTable
copy tao/tao/IORTable/*.inl ../tao/include/tao/IORTable
copy tao/tao/IORTable/*.i ../tao/include/tao/IORTable
copy tao/tao/PortableServer/*.h ../tao/include/tao/PortableServer
copy tao/tao/PortableServer/*.inl ../tao/include/tao/PortableServer
copy tao/tao/PortableServer/*.i ../tao/include/tao/PortableServer
copy tao/tao/RTCORBA/*.h ../tao/include/tao/RTCorba
copy tao/tao/RTCORBA/*.inl ../tao/include/tao/RTCorba
copy tao/tao/RTCORBA/*.i ../tao/include/tao/RTCorba
copy tao/tao/RTPortableServer/*.h ../tao/include/tao/RTPortableServer
copy tao/tao/RTPortableServer/*.inl ../tao/include/tao/RTPortableServer
copy tao/tao/RTPortableServer/*.i ../tao/include/tao/RTPortableServer
copy tao/tao/SmartProxies/*.h ../tao/include/tao/SmartProxies
copy tao/tao/SmartProxies/*.inl ../tao/include/tao/SmartProxies
copy tao/tao/SmartProxies/*.i ../tao/include/tao/SmartProxies
copy tao/tao/Strategies/*.h ../tao/include/tao/Strategies
copy tao/tao/Strategies/*.inl ../tao/include/tao/Strategies
copy tao/tao/Strategies/*.i ../tao/include/tao/Strategies
copy tao/tao/TypeCodeFactory/*.h ../tao/include/tao/TypeCodeFactory
copy tao/tao/TypeCodeFactory/*.inl ../tao/include/tao/TypeCodeFactory
copy tao/tao/TypeCodeFactory/*.i ../tao/include/tao/TypeCodeFactory

@echo copying libraries...
copy ace/*.lib ../tao/lib
copy ace/SSL/*.lib ../tao/lib
copy tao/tao/*.lib ../tao/lib
copy tao/tao/BiDir_GIOP/*.lib ../tao/lib
copy tao/tao/Domain/*.lib ../tao/lib
copy tao/tao/DynamicAny/*.lib ../tao/lib
copy tao/tao/DynamicInterface/*.lib ../tao/lib
copy tao/tao/IFR_Client/*.lib ../tao/lib
copy tao/tao/IORManipulation/*.lib ../tao/lib
copy tao/tao/IORTable/*.lib ../tao/lib
copy tao/tao/PortableServer/*.lib ../tao/lib
copy tao/tao/RTCORBA/*.lib ../tao/lib
copy tao/tao/RTPortableServer/*.lib ../tao/lib
copy tao/tao/SmartProxies/*.lib ../tao/lib
copy tao/tao/Strategies/*.lib ../tao/lib
copy tao/tao/TypeCodeFactory/*.lib ../tao/lib
copy tao/TAO_IDL/*.lib ../tao/lib
copy tao/orbsvcs/IFR_Service/*.lib ../tao/lib
copy tao/orbsvcs/orbsvcs/*.lib ../tao/lib

@echo copying binary files...
copy bin/*.dll ../tao/bin
copy bin/*.exe ../tao/bin
copy tao/orbsvcs/Concurrency_Service/Concurrency_Service.exe ../tao/bin/Concurrency_Serviced.exe
copy tao/orbsvcs/Concurrency_Service/Release/Concurrency_Service.exe ../tao/bin
copy tao/orbsvcs/CosEvent_Service/CosEvent_Service.exe ../tao/bin/CosEvent_Serviced.exe
copy tao/orbsvcs/CosEvent_Service/Release/CosEvent_Service.exe ../tao/bin
copy tao/orbsvcs/Dump_Schedule/Dump_Schedule.exe ../tao/bin/Dump_Scheduled.exe
copy tao/orbsvcs/Dump_Schedule/Release/Dump_Schedule.exe ../tao/bin
copy tao/orbsvcs/Event_Service/Event_Service.exe ../tao/bin/Event_Serviced.exe
copy tao/orbsvcs/Event_Service/Release/Event_Service.exe ../tao/bin
copy tao/orbsvcs/IFR_Service/IFR_Service.exe ../tao/bin/IFR_Serviced.exe
copy tao/orbsvcs/IFR_Service/Release/IFR_Service.exe ../tao/bin
copy tao/orbsvcs/ImplRepo_Service/ImplRepo_Service.exe ../tao/bin/ImplRepo_Serviced.exe
copy tao/orbsvcs/ImplRepo_Service/Release/ImplRepo_Service.exe ../tao/bin
copy tao/orbsvcs/LifeCycle_Service/LifeCycle_Service.exe ../tao/bin/LifeCycle_Serviced.exe
copy tao/orbsvcs/LifeCycle_Service/Release/LifeCycle_Service.exe ../tao/bin
copy tao/orbsvcs/Naming_Service/Naming_Service.exe ../tao/bin/Naming_Serviced.exe
copy tao/orbsvcs/Naming_Service/NT_Naming_Service.exe ../tao/bin/NT_Naming_Serviced.exe
copy tao/orbsvcs/Naming_Service/Release/Naming_Service.exe ../tao/bin
copy tao/orbsvcs/Naming_Service/Release/NT_Naming_Service.exe ../tao/bin

copy tao/orbsvcs/Notify_Service/Notify_Service.exe ../tao/bin
copy tao/orbsvcs/Scheduling_Service/Scheduling_Service.exe ../tao/bin/Scheduling_Serviced.exe
copy tao/orbsvcs/Scheduling_Service/Release/Scheduling_Service.exe ../tao/bin
copy tao/orbsvcs/Trading_Service/Trading_Service.exe ../tao/bin/Trading_Serviced.exe
copy tao/orbsvcs/Trading_Service/Release/Trading_Service.exe ../tao/bin

@Create TAO SDK Finished!
-------------------------------------------------------------------------
发信人: Mentoya (钻研Orbix2000中...), 信区: DOC
标 题: TAO使用指南 -- IDL编译器
发信站: BBS 水木清华站 (Thu May 8 20:56:43 2003), 站内

TAO的IDL编译器名字是: tao_idl.exe. Debug版位于Ace_Wrappers/bin目录下, Release版位于Ace_Wrappers/bin/release目录下,文件名仍为tao_idl.exe。

1. 产生的文件:
*.idl文件被编译后产生的文件由文件名和后缀组成. 类型有:

说明 产生的文件格式(默认) 备注
---------------------------------------------------------------
客户stubs *C.h、*C.cpp、*C.i
服务器 skeletons *S.h、*S.cpp、*S.i
服务器 skeleton (tie) *S_T.h、*S_T.cpp、*S_T.i 可以用-Sc开关来去掉这些文件
实现类文件 *I.h、*I.cpp 默认不生成这些文件,需要用
-GI开关
---------------------------------------------------------------
注: 产生的文件格式(后缀、扩展名等)可以由命令行开关来控制。

2. TAO_IDL的编译选项:
输入命令
tao_idl -u
就会出现对idl的编译选项的详细说明.

TAO IDL编译器的编译选项虽然很多, 但是常用的就那么几个.

-Sc: 不生成tie类的实现
-Wb,pch_include=stdafx.h 生成的每个cpp文件都会包含#include "stdafx.h"
-GI: 生成空的Implementation类.
-Idir: 指定idl编译器的搜索路径

这里要注意, 编译选项是大小写敏感的.

注:
发现在编译idl文件时, IDL文件中的#define, #ifdef, #endif等行必须从
第一列开始, 否则编译器会报错.


发信人: Mentoya (学习TAO中~), 信区: DOC
标 题: TAO使用指南 -- 名字服务
发信站: BBS 水木清华站 (Sat May 10 22:11:17 2003), 转信

名字服务(Naming Service,不过大家叫的更多的是命名服务)是CORBA的
最基本的服务之一。名字服务很简单,没有什么可说的。不过TAO对标准的名字服务做了一个有趣的扩展,即可以利用multicast来得到名字服务。不过个人认为除了方便了那么一点点之外,用处不大。而如果当局域网内有多个主机同时运行名字服务时,会造成混乱。
此外,TAO还提供了NT_Naming_Service,可以将名字服务注册为NT的服务。

一. 启动名字服务
名字服务的文件名为:Naming_Service.exe,它的启动参数有:
% Naming_Service [-ORBNameServicePort nsport]
[-o ior_output_file]
[-p pid_file_name]
[-s context_size]
[-t time]
[-f persitence_file_name]
[-b base_address]
[-m (1=enable multicast responses,0=disable(default)]

-ORBNameServicePort nsport:指定名字服务监听multicast包的端口号。
只有在使用了'-m 1'时才有效.
-o ior_output_file: 指定文件名, 用来保存名字服务的根上下文的IOR.
-p pid_file_name: 指定文件名,用来保存名字服务程序的进程id
-s context_size: 当创建上下文时, 指定新上下文使用的哈希表的大小, 默认1024
-t time: 名字服务监听的时间, 单位:秒. 默认: 无限
-f persistence_file_name: 指定文件名, 用来存放名字服务中被绑定的对象引用.
-m (1=enable multicast responses,0=disable(default): 是否使用多播功能.

运行名字服务时, 可以使用-ORBEndpoint参数来指定其运行的端点(有关
-ORBEndpoint的详细内容参见文档: $TAO_ROOT/docs/ORBEndpoint.html):

Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0
(名字服务在本机的2809端口监听请求, 不使用多播方式)

二. 访问名字访问
这里均假定使用Naming_Service -ORBEndpoint iiop://localhost:2809 -m 0
来启动名字访问. 客户端有多种方法来访问名字服务:
第一种方法:
启动客户程序时用corbaloc指定初始引用:
MessengerServer -ORBInitRef NameService=corbaloc::localhost:2809/NameService
在MessengerServer源程序中, 直接使用:
orb->resolve_initial_references("NameService");
来得到名字服务.

第二种方法:
客户程序启动时不带参数:
MessengerServer
而在MessengerServer源程序中, 使用:
orb->string_to_object("corbaloc::localhost:2809/NameService");
来得到名字服务.

三. TAO_Naming_Client和TAO_Naming_Server类:
1. TAO_Naming_Client类: 将访问名字服务部分的代码进行了封装. 使用方法:
//---------------------------------------------
#include <Naming/Naming_Utils.h>

TAO_Naming_Client naming_client;
if (naming_client.init(orb.in()) != 0)
{
cerr << "Could not initialize naming client." << endl;
return 1;
}
// 解析
CORBA::Object_var obj = naming_client->resolve(name);
// 绑定
naming_client->rebind(name, obj_ref.in());

2. TAO_Naming_Server类: 使用该类, 可以将名字服务功能集成到自己的应用程序中.
有关TAO_Naming_Server类的使用方法, 见: 咦, 这个例程不在TAO的标准包中, 是OCI公司的examples. 我硬盘上的这个忘了是从那里下载的了, 如果有人需要的话给我写信好了.

四. 名字服务工具
在$TAO_ROOT/utils目录下, 有NamingViewer和nslist两个名字服务的工具.
有兴趣的话编译出来玩玩.:-)
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值