TAO是一种C++ ORB,它兼容大部分CORBA 2.6标准,包括实时CORBA部分。你可以从Internet下载到它并且免费和没有限制的使用它。
TAO可以在很多平台上面使用,包括: Win32 (i.e., WinNT 3.5.x, 4.x, 2000, Embedded NT, XP, Win95/98, and WinCE using MSVC++, Borland's C++ Builder, and IBM's VisualAge on Intel and Alpha platforms), UNIX (e.g., Solaris 1.x and 2.x on SPARC and Intel, SGI IRIX 6.x, HP-UX 10.x and 11.x, Tru64UNIX 4.x, AIX 4.x and 5.x, SCO, 免费UNIX: Debian Linux 2.x, RedHat Linux 5.2, 6.x, and 7.x, FreeBSD, and NetBSD), 实时操作系统 (e.g., LynxOS, VxWorks, QnX Neutrino, OS9, and ChorusOS), OpenVMS, and MVS OpenEdition。我们计划要把TAO移植到所有ACE支持的平台上。另外,TAO可以与其它ORB很好的互操作(比如Orbix,JacORB,ORB Express,VisiBroker等)。通过这些,我们对IIOP的健壮性以及互操作性有充分的信心。 TAO在商业化项目中亦有广泛的应用,通过这里可以看到:TAO Press Release and TAO Success Stories 。
TAO包括如下组件:
Figure 1. The TAO ORB Endsystem Architecture |
每个部分描述如下:
IDL Compiler -- TAO的IDL Compiler是建立在SunSoft IDL Compiler的增强版本上。实现了最新的CORBA2.X IDL-to-C++映射,包括POA。该IDL Compiler同时还支持Object-by-Value以及CORBA Messaging标准。另外,TAO IDL Compiler还可以生成实现异步方法调用的client和server需要的代码。
TAO IDL Compiler产生的compiled stubs/skeleletons具有非常高的效率。TAO IDL compiler可以生成支持本地C++ exceptions或者更具移植性的CORBA::Environment的stubs/skeletons. TAO IDL compiler还可以生成用于smart proxies的代码,它可以允许第三方的应用程序把一些特性"plug "进client 以及可移植拦截器(portable interceptors)用来实现Interceptor模式(Interceptor pattern)。
内部ORB协议引擎(Inter-ORB Protocal Engine) -- TAO包含一个高度优化的通讯协议引擎,它实现了CORBA 2.X的GIOP/IIOP 1.0,1.1和1.2。因此,TAO可以无障碍的同其它支持IIOP的ORB互操作。TAO的协议引擎支持静态和动态的CORBA编程,比如可以分别支持SII/SSI和DII/DSI。TAO还支持Dynamic Anys.
另外,TAO支持插件化的协议框架(pluggable protocols framework),这样GIOP消息亦可以在其它非TCP协议上面传输,包括共享内存,UDP单点传输和广播传输,UNIX-domain sockets,SSL(Secure Sockets)以及VME backplanes等多种方式。这个功能通常在一些DRE应用中要求比较高。
ORB核心 -- TAO核心为高性能和实时应用提供高效的、可扩展以及predictable的单向,双向以及可靠的单向同步或异步传输架构。它提供下面的同步模型:(1)reactive,(2)线程每连接(thread-per-connection),(3)线程池(thread pool)以及 (4)reactor-per-thread-priority(该模型是为实时系统专门优化设计的)。在以上所有的同步模型中,TAO ORB核心支持嵌套的向上调用。
TAO ORB核心是建立在ACE的模式以及框架(frameworks)的基础上。在TAO中应用的设计模式以及ACE框架包括:Acceptor and Connector,Reactor,Active Object,Half-Sync/Half-Async以及Service Configurator。(建议读者阅读ACE的设计及其相关著述)
可移植适配器(POA,Portable Object Adapter) -- TAO的POA设计采用了高优化的请求分发策略(request demultiplexing strategies),比如优秀的hashing and active demultiplexing ,用来区分持久或暂态对象(for object identified with either persistent or transient object references)。These strategies allow TAO'S POA to provide constant-time lookup of servants based on object keys and operation names contained in CORBA requests。
实现库(Implementation Repository),用它可以实现自动定位客户端请求的目的服务器。
接口库(Interface Repository), 提供IDL接口的运行时信息。
TAO提供一些标准的CORBA服务,包括:
音频/视频流服务(Audio/Video Streaming Service) -- TAO的A/V流服务实现了标准的 Control and Management of Audio/Video Streams Specification.该服务曾与QuO framework集成和测试。
并发服务(Concurrency Service) -- TAO的并发服务用在分布式系统中,使客户端可以获取和释放不同类型的锁。注意它现在只支持CORBA同步服务的一个子集,即非事务部分。
事件服务(Event Service) -- TAO的事件服务采用标准的GIOP/IIOP协议实现在多个事件提供者和消费者之间的解藕通讯。
生命周期服务(Lifecycle Service) -- TAO的生命周期服务提供一个标准的方法用于定位,移动,复制和删除对象。
日志服务(Logging Service) -- TAO的日志服务实现了OMG 的Telecom Log Service标准,通过它,应用程序可以将日志记录发送到日志服务器上。
名字服务(Naming Service) -- TAO 的名字服务同时支持对象引用与串行化字符的持久和非持久映射。同时,TAO还支持可互操作的名字服务(Interoperable Naming Service).
通告服务(Notification Service) -- TAO的通告服务是对事件服务的增强,它增加了对事件的过滤以及QoS的功能。
持久状态服务(PSS,Persistent State Service) -- TAO的持久状态服务可以使服务持久化。
属性服务(Property Service) -- TAO的属性服务可以实现动态的将对象和其属性关联起来的功能。通常属性服务用在TAO的A/V流服务中传输QoS信息。
安全服务(Secutity Service) -- TAO提供了CORBA安全服务的部分实现。
时间服务(Time Service)-- TAO的时间服务用于多客户端的时间同步。
交易服务(Trading Service) -- TAO的交易服务实现了对象属性与对象引用的映射关系,根据对象属性,可以通过交易服务查找到对象引用。
另外,TAO还提供如下服务,这些服务在DRE应用系统中经常可以遇到:
负载均衡服务(Load Balancing Service) -- TAO的负载均衡服务采用轮转(round robin)以及minimum dispersion的算法实现在多台主机间的负载分配。
实时的事件服务(Real-time Event Service) -- TAO的实时事件服务是在标准CORBA事件服务基础上加上了对事件源以及消息类型的过滤,事件相关性,实时分发以及UDP/IP广播的功能。
计划服务(Scheduling Service)-- TAO's real-time Scheduling Service supports static rate monotonic scheduling and dynamic maximum urgency first scheduling to assign priorities and validate schedulability. It is currently integrated with TAO's Real-time Event Service, though we're ultimately planning to integrate this with the ORB. In addition, we are enhancing our Scheduling Service to conform to the Scheduling Service defined in the new Real-time CORBA specification, as well as the forthcoming dynamic scheduling specification.
最后,在TAO的发布版中中包括了一些测试和例子程序,读者可以根据它们学习如何编写实时和非实时CORBA应用程序。
我们对TAO的目标是完全全兼容OMG的CORBA规范,我们实现了一大部分,但还是有些工作需要继续做:
完整的CORBA消息规范中要求提供异步消息调用(AMI,asynchronous method invocation)和一套用于配置QoS参数的标准API。我们已经修改了TAO的IDL compiler以及运行时系统(run-time system)以支持标准的AMI回调模型。不久将会看到AMI拉(polling)的模型实现。
一个开源的CORBA对象事务服务(OTS,Object Transaction Service)的实现。
一个增强的实现库(Implementation Repository),用来支持CORBA标准中已定义的所有服务器激活模式。
新的更加优化的TAO的IIOP协议引擎、ORB核心以及对象适配器设计,实现在高性能、实时系统中达到更高性能,更小的内存开销。
增强的TAO 插件化协议框架,使得可以适应更多的ORB消息传输协议
支持最小化CORBA(Minimum CORBA)
增加CORBA安全服务
增加对CORBA 组件模型(CCM,CORBA Component Model)的支持。
集成DOORS开源CORBA容灾规范,使得客户端应用程序与服务端的灾难恢复,冗余复制无关.
关于TAO的最新特性以及进展情况,请你保持关注TAO的发布说明(release notes).
资金支持
TAO还有许多的工作需要做,它的的发展需要不断的资金支持。我们正在寻找资金以完成下面的这些工作:
进一步的ORB并发模型,即,使用Proactor,thread-per-request和thread-per-object的同步线程池。
CORBA/DCOM集成。
TAO 插件化协议框架中对不同的协议的支持,包括UNIX domain sockets,TP4,SS7,ATM,GSMP,shared memory以及Fibrechannel。
CORBA无线接入以及控制规范,用于给个人及终端移动用户
参与TAO
大家都来感受TAO,改进TAO吧。我们接受您的bug报告并且以以最快速度改进它。关于这个问题,你可以从online bug reporting and fixing process得到更详细的信息。
Back to the TAO page.
Last modified 15:54:33 CDT 18 August 2002