Current Status of TAO
TAO is a C++ ORB that is compliant with most of the
features and services defined in the CORBA 3.x
specification, which includes the Real-time
CORBA specification. TAO can be downloaded from the Internet and freely used
and redistributed without developer or run-time licensing costs.
Commercial support, documentation, training, and consulting for TAO
are available from multiple
vendors. Many other third-party
tools and services have also been integrated with TAO. An
open-source implementation of the CORBA
Component Model (CCM) called CIAO is also
available atop of TAO.
TAO has been ported
to OS platforms including Windows (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), many
versions of UNIX (e.g., Solaris 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, and freely available UNIX
implementations, such as Debian
Linux 2.x, RedHat Linux 5.2,
6.x, 7.x, 8.x, and 9.x, as well as the various Enterprise editions, SUSE Linux 8.1
and 9.2, Timesys Linux, FreeBSD, and NetBSD), real-time operating systems
(e.g., LynxOS, VxWorks, QnX Neutrino, OS9,
and ChorusOS), OpenVMS, and MVS
OpenEdition. Ultimately, we plan to port TAO to all OS platforms
we've gotten TAO to interwork with many other ORBs (e.g., Orbix,
JacORB, ORB Express, VisiBroker, etc.), so we're confident that its
IIOP implementation is robust and interoperable. See the TAO Press Release and TAO Success Stories pages for information on
TAO's use in commercial projects.
TAO contains the components shown in Figure 1.
Figure 1. The TAO ORB Endsystem Architecture
Each of these TAO components is outlined below:
TAO also provides many of the standard CORBA
services, including the following:
- IDL Compiler --
compiler is based on the enhanced
version of the
freely available SunSoft IDL compiler. The latest
CORBA 3.x IDL-to-C++ mapping has been implemented, including the
POA features. The IDL compiler also supports the Object-by-Value
specification and the CORBA Messaging
specification. Moreover, TAO's IDL compiler can generate code for
server asynchronous invocations.
TAO's IDL compiler generates compiled stubs/skeletons which are
quite efficient. In addition, TAO's IDL compiler can generate
stubs/skeletons that can support either native C++ exceptions or the
CORBA::Environment approach. TAO's IDL
compiler also generates code for
smart proxies that allow 3rd party applications to ``plug''
features into clients and
portable interceptors that implement the Interceptor pattern.
- Inter-ORB Protocol Engine -- TAO contains a highly optimized
protocol engine that implements the CORBA 3.x General/Internet
Inter-ORB Protocol (GIOP/IIOP), version 1.0, 1.1, and 1.2. TAO can
therefore interoperate seamlessly with other ORBs that use the
standard IIOP protocol. TAO's protocol engine supports both the
static and dynamic CORBA programming models, i.e., SII/SSI and
DII/DSI, respectively. TAO also supports Dynamic Anys, which facilitate
In addition, TAO supports a
pluggable protocols framework that enables GIOP messages to be
exchanged over non-TCP transports, including shared memory, UDP
unicast, UDP multicast, UNIX-domain sockets, Secure Sockets (SSL), and
VME backplanes. TAO's pluggable protocols framework is important for
DRE applications that require more stringent QoS protocol properties
than TCP/IP provides.
- ORB Core --
TAO's ORB Core provides an efficient,
scalable, and predictable two-way, one-way, and reliable
one-way synchronous and
asynchronous communication infrastructure for high-performance
and real-time applications. It provides the following
models: (1) reactive, (2) thread-per-connection, (3) thread pool
(including the Real-time CORBA
thread pool API), and (4)
(which is optimized for deterministic real-time systems). TAO's ORB
Core supports nested
upcalls with all its concurrency models.
TAO's ORB Core is based on patterns and frameworks in ACE. The key patterns and ACE
frameworks used in TAO include the Acceptor
and Connector, Reactor,
- Portable Object Adapter --
TAO's implementation of the CORBA Portable
Object Adapter (POA) is designed using patterns that provide an
extensible and highly optimized set of request
demultiplexing strategies, such as
perfect hashing and active demultiplexing, for objects 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 that automatically launches servers in
response to client requests.
- An Interface
Repository that provides run-time information about IDL
In addition, TAO provides the following additional services targeted
for various types of DRE application domains:
- Audio/Video Streaming Service -- TAO's
implements the standard Control
and Management of Audio/Video Streams Specification. The service
has been integrated and tested with the QuO
framework. The integration demonstrated the applicability of
standard middleware for applications that can adapt
to changes in resource availability and QoS requirements.
- Concurrency Service -- TAO's Concurrency
Service provides a mechanism that allows clients to acquire and
release various types of locks in a distributed system. Note that TAO
only currently supports a subset of the Concurrency Service, i.e., the
- Event Service -- TAO's Event
Service supports decoupled communication among multiple
suppliers and consumers using the standard GIOP/IIOP
- Lifecycle Service -- TAO's Lifecycle
Service provides a standard means to locate, move, copy, and
- Logging Service -- TAO's implementation of the OMG's Telecom Log
Service allows applications to send logging records to a
centralized logging server.
- Naming Service -- TAO's Naming
Service supports both persistent and non-persistent hierarchical
mappings between sequences of strings and object references. In
addition, TAO supports the Interoperable
Naming Service, which defines a standard way for clients and
servers to locate the Naming Service, as well as any other CORBA
- Notification Service -- TAO's Notification
Service is a more powerful form of the Event Service that supports
filtering and correlation.
- Persistent State Service -- TAO's Persistent State Service (PSS) provides a way to make a service persistent. PSS presents persistent information as storage objects that reside in storage homes.
- Property Service -- TAO's Property
Service allows applications to associate properties with objects
dynamically. The Property Service is used by TAO's A/V Streaming
Service to transmit QoS information.
- Security Service -- TAO provides an implementation of portions of the CORBA
- Time Service -- TAO's Time Service
provides globally synchronized time to distributed clients.
- Trading Service -- TAO's Trading
Service implements a mapping between attribute constraints and
sequences of object references that match those constraints.
Finally, TAO contains many tests and example applications that
illustrate how to program the ORB for both real-time and non-real-time
applications. C++ source code for all these open-source TAO ORB
components, services, examples, and tests is available in the TAO release.
- Load Balancing Service -- TAO's Load
Balancing Service implements round robin and minimum
dispersion algorithms to help balance out the load across a group
- Real-time Event Service -- TAO's Real-time Event
Service augments the standard CORBA Event Service model by
providing source and type-based filtering, event correlations,
real-time dispatching, and UDP/IP multicast communication.
- 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.
Our goal for TAO is to be completely compliant with the latest OMG
CORBA specification. We have most of the current specification
implemented and we're in the midst of adding the following features to
You can keep track of TAO's new features and results from the branding
process online by tracking our release
- An open-source implementation of the CORBA Object Transaction Service (OTS).
- New optimizations
for TAO's IIOP protocol engine, ORB Core, and Object Adapter to
improve its performance, predictibility, and memory footprint for
high-performance and real-time systems.
- Adding the latest CORBA Security Service
features to TAO.
TAO continues to improve and its future
is bright. TAO is supported
commercially by many companies who use an open-source business model.
Since the CORBA specification continues to evolve, our collective goal
is to track the evolution of CORBA in TAO. We therefore require
external funding to accomplish this goal. The following are work
items that we are seeking funding in order to complete. Please
contact Douglas C. Schmidt <firstname.lastname@example.org>
or one of the commercial support
providers if you'd like to help to fund any of these efforts.
- The entire CORBA Messaging
specification, which provides an asynchronous method invocation
(AMI) mechanism and a standard API for specifying QoS parameters. We have enhanced
TAO's IDL compiler and run-time system to support the standard AMI
callback model. Support for the AMI polling model and the time-independent invocations (TII)
- Additional ORB concurrency
models, e.g., asynchronous thread pool using the Proactor, thread-per-request and
- We are interested in having someone sponsor TAO being branded as a CORBA-compliant ORB by The Open
Group when their test-suite matures to cover later versions of
- Additional protocols for TAO's Pluggable
Protocols framework, including sockets, TP4, SS7, ATM, GSMP, and
Fibrechannel. It would also be nice to have funding to complete the
- The forthcoming CORBA Wireless Access
and Control specification, which will provide CORBA service in the
presence of personal and terminal mobility.
Please feel free to experiment with, dissect, repair, use, etc., TAO.
We accept bug reports, appreciate bug fixes/enhancements, and will
strive to integrate correct bug fixes quickly! Please see our online bug reporting and
fixing process for more details on reporting problems with TAO.
Back to the TAO page.
Last modified 11:34:27 CDT 28 September 2006