ACE and TAO have been used and enhanced by hundreds of developers at many companies and universities in over 40 countries in the world. If you're interested in learning more about how ACE and TAO are being used in practice, or if you'd like to explain how you are using ACE and TAO, please send email to the ace-users@list.isis.vanderbilt.edu mailing list. The following is a list of some known uses of ACE and TAO. See the TAO Press Releases and OCI's OMG meeting briefing for more information on TAO's use in commercial projects in many domains.
ACE_Reactor, ACE_Task,
ACE_Event_Handler, ACE_Timer_Queue.
The CDP is written using ACE as an OS abstraction to simplify portability between VxWorks and Solaris. TAO provides the CORBA interface to the Java consoles (which use OrbixWeb). Other projects at Sanders are looking at ACE and TAO.
bake is a distributed
replacement for gmake.
The K2 Component Server uses IIOP as the base layer is the communication protocol derived from CORBA. Even though, the K2 core implementation is independent from a particular ORB implementation, iCMG has chosen to use ACE+TAO since they provide more services than other commercial ORB vendors.
ACE+TAO provides a uniform architecture, simplifies portability between VxWorks and Solaris, and interoperates with the Java2 ORB to communicate with the user interfaces. The real-time capabilities of TAO are extensively exercised through the use of the Real-Time Event Service to drive the control loops, status monitoring, alarm propagation, etc.
The experiment is a project located on the Stanford University campus and involves a new electron-positron asymmetric collider used to produce large numbers of B and B-bar (anti-B) mesons (you can guess how the collaboration got its name). The physics is focused on investigating differences in the behavior of matter and anti-matter by observing the decay products of the B and B-bar mesons. This project involves over 600 physicists and engineers representing ~80 institutions from 9 countries. Work started in the late 1980s and the first data is scheduled to be collected in the Spring of 1999. The experiment will continue running for five to ten years. More info may be found here:
There is a server framework in place that allows creation of multiple independent servers running in dedicated threads and sharing the same executable. Architecture uses Stream, Module, Task, Reactor, Thread_Manager classes. Utilization domain of servers sharing the same address space and running in different threads of control is similar to the one of a shared memory communication between servers, but implementation is much more flexible and cleaner. As an example, we may draw any in-memory data server, that should update (on the fly) historical server of the same data. In our case they share the same repository, which is the only point of contact for these two servers. There are three non-trivial areas in such architecture: signal handling, threads dispatching, network dispatching. Servers register their signals with a dedicated thread running a signal reactor. Each server thread has a dedicated reactor to process network IO and dedicated thread manager to provide effective shutdown and specific resources manipulations. Also every server has its own resource manager to initialize and track down specific resources. Another very interesting and useful application of ACE in our system is Stream class utilization in conjunction with MessageBlock. Stream/Module/Task/MessageBlock provide very efficient redirection of messages and their hierarchical processing, facilitating creation of functional framework with predefined protocol parsers, connector/acceptor factories. This makes possible to concentrate server development on business logic rather than on details of how to communicate with low level network API. Maintenance is another key aspect that is much easier to keep up now, due to a true OO nature of the framework. Modules could be unplugged and adjusted independently (from each other as well as underlying network protocol). If you have any questions please don't hesitate to ask.
Regards,
Alexander Mintz
ACE_Log_Msg through a callback routine
that sends UDP packets to an external event logger program.
ACE_Message_Queue.
The engine currently runs under WinNT4, but ACE was chosen to ease the future porting of the application to a Linux or VxWorks platform.
TAO will not be used in any data paths.
This system is implemented on an array of Intel-i960-based, custom SBCs running VxWorks, an Intel-x86 subsystem running Solaris 2.6 and some number of SPARC Ultra subsystems running Solaris 2.6. On the subsystems running Solaris, several processes will be deployed on each processor. Since the processes are heavily multithreaded, the thread-per-request style of concurrency will likely be used.
Back to the ACE home page.
Last modified 12:03:46 CDT 15 March 2008