ACE

the C++ framework

ACE stands for ADAPTIVE Communication Environment. ACE is an object-oriented C++ framework that implements many of the standard patterns for creating communications software.

A pattern may be thought of as a standard solution to a specific programming problem. The solution can be at the level of design or implementation.

One of the advantages of using patterns is that it makes it easier for designers and programmers to communicate with each other. By using these standard patterns, it is possible to develop stable, portable and fast software in a short space of time. A large number of the patterns implemented in ACE are explained in the POSA2 book by Douglas C. Schmidt.

In the context of ACE, portability means that a large number of different compilers and operating systems are supported. This makes it is easy to ensure that server software developed for Windows NT can also work under Linux. Various real-time operating systems such as VxWorks and RT-Linux are also supported.

ACE is used by a large number of companies and many ACE applications have already been successfully adopted. Because the source code is available to everybody, each line of code has been reviewed several times over, thus guaranteeing a very high level of quality.

To prevent erroneous changes, ACE has a large set of regression tests that ensure that no new problems are introduced. If new problems are found, the extensive user community generally provides a reliable solution within 24 hours.

ACE is open source software with an extensive user community. We have been using ACE for several years and our experience is that problems are solved within 24 hours 90% of the time.

Furthermore, various books are available on ACE and a large number of white papers can be downloaded. Although the learning curve for ACE is steep, we can help you use ACE quickly and effectively. We can also provide you with tailor-made courses on site.

If it is a requirement for your software that it must be able to work with, for example, Java applications, ACE offers a good basis for switching to CORBA with the aid of TAO. TAO stands for The ACE ORB and is a CORBA implementation.

An overview of the greatest benefits of using ACE:

  • Extensive portability to a large number of compilers and operating systems

  • Better quality through the use of standard patterns

  • Efficiency and predictability

  • Well tested framework frequently used worldwide

  • Easier to move to standard CORBA middleware

Firstly, ACE offers an OS abstraction layer which hides operating system specifics. The advantage of this layer is that it becomes possible to develop applications that are independent of both the operating system and the compiler.

On top of this OS abstraction layer, a to C++ wrapper layer is implemented which makes it possible to access OS specifics by means of to C++ classes. This to C++ wrapper layer protects you against difficult and ever changing OS APIs. Many errors that would otherwise only be found by debugging during testing will now be detected by the to C++ compiler. This drastically simplifies the testing phase.

On top of this to C++ wrapper layer, standard frameworks and services have been developed. For example, TAO (The ACE ORB) is a real-time CORBA ORB that was developed using ACE.

The C++NPv2 book describes a number of these frameworks in detail. These frameworks include Reactor and Proactor for event handling, Acceptor/Connector for connecting components and Service Configurator for dynamically configured applications.