Developing Efficient Network and Distributed Applications with ACE
I'm going to introduce Adaptive Communication Environment (ACE), a free, open source, C++-based OO framework used to develop portable, reliable, high-performance, and real-time communication services and applications. ACE, with its rich feature set and reusability support, can be used to develop efficient communication services/components for distributed applications, as well as network applications, increasing speed and efficiency for both types of applications.
Importance of Communication Software
Communication (interprocess) is an important aspect of distributed as well as network applications. Fine-tuning of communication components/services has a direct effect on the performance of these applications, in the form of increasing efficiency and speed. To obtain better performance, communication software should possess the following characteristics:
- It should be flexible enough to accommodate and support an ever-increasing number of data types and traffic patterns, while confirming to end-to-end quality of service norms.
- It should be efficient to provide low latency to delay-sensitive applications, high-performance to bandwidth-intensive applications, and predictability to real-time applications.
- It should be reliable enough for developing high-performance, robust and fault-tolerant applications.
- It should be highly portable to support quickly porting applications on any other OS platforms or compilers while keeping the porting cost low.
Developing Efficient Communication Software
Developers often rely on (i) low-level native OS APIs and (ii) distributed computing middleware components to develop efficient communication software for OO networking applications, distributed applications, or real-time applications. But, both of these approaches have their shortcomings, as given below:
- Low-level native OS APIs provide neither flexibility nor portability. They tie applications built upon them to a specific OS platform only.
- For specialized fields of scientific research, medical imaging, aviation, and telecommunication, there are no available standard and readymade distributed computing middleware components (e.g. DCOM, CORBA, or RMI components) efficient and reliable enough for developing complex applications that rely heavily on faster, low-latency, and real-time inter-process communication.
So, how can one overcome these limitations to develop flexible, efficient, reliable, and portable communication software? Adaptive Communication Environment (ACE) could be the answer. The following sections explore ACE and its potential for developing communication software with the above-cited characteristics.
Overview of ACE
Adaptive Communication Environment (ACE) is a free, open source, C++-based, object-oriented framework/toolkit used to develop portable, reliable, high-performance, and real-time communication services/components for distributed networks as well as real-time applications. The ACE framework contains a wide array of reusable C++ wrappers and framework components, and sports a rich feature set to facilitate the development of high-performance distributed, network, and real-time applications.
ACE Under the Hood
ACE has a layered architecture for the separation of concerns and reducing complexity. Figure 1 shows the various layers of the ACE architecture, followed by a brief explanation of these layers.
Figure 1: ACE Outline