Overview of ACE

ACE is an object-oriented (OO) portability framework that implements many core design patterns for concurrent communication software. ACE provides a rich set of reusable C++ wrappers and framework components that perform common communication tasks across a range of O/S platforms. Such communication tasks provided by ACE include event demultiplexing, and event handler dispatching, signal handling, service initialization, interprocess communication, shared memory management, message routing, dynamic reconfiguration of distributed services, concurrent execution and synchronization.

ACE is targeted at developers of high performance and real-time communication services and applications. It simplifies the development of OO network applications and services that utilize interprocess communications, event demultiplexing, explicit dynamic linking services into applications at run-time and executing those services in one or more processes or threads.

ACE provides a typesafe, portable, C++ programming environment with socket level performance. It can be used as a compliment to TAO's CORBA environment, as ACE provides TAO's platform abstraction layer. ACE is version managed and distributed with TAO. ACE is also supported by OCI.

ACE provides the types of portability functions described in the US Navy Open Architecture Computing Environment (OACE) document. Such an abstraction layer plays a key role in keeping applications independant of operating systems and networking entanglements. 

ACE has over 135,000 lines of C++ code and represents many years of effort and experience with operating systems, low level services and abstracting their services into patterns. ACE is a critical layer in TAO's ladder of abstraction between the implementation of the specifics of operating and communication systems etc. and the total abstraction of CORBA interfacing. By leveraging ACE's abstraction layer at the systems level, TAO's design can be platform neutral and devoid of the architectural biases that follow when the ORB design is targeted to specific operating systems.

ACE continues to adapt and succesfully support new OSs and transports.

The following diagram illustrates the key components of ACE and their hierarchical relationships.

For more information about ACE, take an OCI class on Patterns or ACE. Details of which may be obtained here. Or go to Washington University´s Overview of ACE page.