Adaptive Communication Environment
Encyclopedia
The Adaptive Communication Environment (often referred to as ACE) is an open-source
framework
used to simplify various aspects of network programming. It provides a set of high performance object-oriented
C++
class
es designed to help address the inherent complexities and challenges in network programming by preventing common errors.
during his graduate work at the University of California, Irvine
. Development followed him to the Washington University in St. Louis where he was employed. It was there in the Distributed Object Computer (DOC) group where ACE was released as open source. Today, most of the development work on ACE continues as part of the Institute for Software Integrated Systems (ISIS) at Vanderbilt University
.
s. These include: inter-process communication
, thread
management, efficient memory management
, etc.
It was designed to be portable and provides a common framework. The same code will work on most Unix
es, Microsoft Windows
, VxWorks
, QNX
, OpenVMS
etc, with minimal changes. Due to this cross-platform
support, it has been widely used in the development of communication software
. Some of the successful projects that have used ACE includes: Motorola
Iridium
satellites, Boeing Wedgetail
's Australian airborne early warning & control (AEW&C) system, and others.
Event handling patterns:
Synchronization patterns:
Concurrency patterns:
service access and configuration patterns:
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
used to simplify various aspects of network programming. It provides a set of high performance object-oriented
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
class
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
es designed to help address the inherent complexities and challenges in network programming by preventing common errors.
History
ACE was initially developed by Douglas C. SchmidtDouglas C. Schmidt
Douglas C. Schmidt is a computer scientist and author known for his works in the fields of object-oriented programming, distributed computing and design patterns. Currently he is working as Associate Chair of Computer Science and Engineering and Professor of Computer Science in Vanderbilt University...
during his graduate work at the University of California, Irvine
University of California, Irvine
The University of California, Irvine , founded in 1965, is one of the ten campuses of the University of California, located in Irvine, California, USA...
. Development followed him to the Washington University in St. Louis where he was employed. It was there in the Distributed Object Computer (DOC) group where ACE was released as open source. Today, most of the development work on ACE continues as part of the Institute for Software Integrated Systems (ISIS) at Vanderbilt University
Vanderbilt University
Vanderbilt University is a private research university located in Nashville, Tennessee, United States. Founded in 1873, the university is named for shipping and rail magnate "Commodore" Cornelius Vanderbilt, who provided Vanderbilt its initial $1 million endowment despite having never been to the...
.
Features
ACE provides a standardized usage for operating system/machine specific features. It provides common data types and methods to access the powerful but complex features of modern operating systemOperating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
s. These include: inter-process communication
Inter-process communication
In computing, Inter-process communication is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared...
, thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
management, efficient memory management
Memory management
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...
, etc.
It was designed to be portable and provides a common framework. The same code will work on most Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
es, Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, VxWorks
VxWorks
VxWorks is a real-time operating system developed as proprietary software by Wind River Systems of Alameda, California, USA. First released in 1987, VxWorks is designed for use in embedded systems.- History :...
, QNX
QNX
QNX is a commercial Unix-like real-time operating system, aimed primarily at the embedded systems market. The product was originally developed by Canadian company, QNX Software Systems, which was later acquired by Canadian BlackBerry-producer Research In Motion.-Description:As a microkernel-based...
, OpenVMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...
etc, with minimal changes. Due to this cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
support, it has been widely used in the development of communication software
Communication software
Communication software is used to provide remote access to systems and exchange files and messages in text, audio and/or video formats between different computers or user IDs...
. Some of the successful projects that have used ACE includes: Motorola
Motorola
Motorola, Inc. was an American multinational telecommunications company based in Schaumburg, Illinois, which was eventually divided into two independent public companies, Motorola Mobility and Motorola Solutions on January 4, 2011, after losing $4.3 billion from 2007 to 2009...
Iridium
Iridium (satellite)
Iridium Communications Inc. is a company, based in McLean, VA, United States which operates the Iridium satellite constellation, a system of 66 active satellites used for worldwide voice and data communication from hand-held satellite phones and other transceiver units...
satellites, Boeing Wedgetail
Boeing Wedgetail
The Boeing 737 AEW&C is a twin-engine airborne early warning and control aircraft. It is lighter than the 707-based Boeing E-3 Sentry, and mounts a fixed, electronically scanned, rather than a rotating, radar antenna. It was designed for the Royal Australian Air Force under "Project Wedgetail"...
's Australian airborne early warning & control (AEW&C) system, and others.
Design patterns
One of the unique features of ACE is the extensive use of design patterns in addressing the complexity of software. The ACE framework utilizes the following design patterns:Event handling patterns:
- reactorReactor patternThe reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs...
- Acceptor-connector
- proactorProactor patternProactor is a software design pattern for Event handling in which long running activities are running in an asynchronous part. A Completion Handler is called after the asynchronous part has terminated....
- Asynchronous completion token
Synchronization patterns:
- Scoped locking
- Strategized locking
- Thread-safe interface
- Double-checked locking optimization
Concurrency patterns:
- Thread-specific storage
- monitor objectMonitor (synchronization)In concurrent programming, a monitor is an object or module intended to be used safely by more than one thread. The defining characteristic of a monitor is that its methods are executed with mutual exclusion. That is, at each point in time, at most one thread may be executing any of its methods...
- Active objectActive ObjectThe active object design pattern decouples method execution from method invocation that reside in their own thread of control. The goal is to introduce concurrency, by using asynchronous method invocation and a scheduler for handling requests....
- Half-synch/half-asynch
- Leader/follower
service access and configuration patterns:
- Component configurator
- Interceptor
- Extension interface
- Wrapper facade
See also
- TAOTAO (software)The ACE ORB is a freely available, open-source, and standards-compliant real-time C++ implementation of CORBA based upon the Adaptive Communication Environment . It attempts to provide efficient, predictable, and scalable quality of service end-to-end...
(component-integrated ACE ORBComponent-Integrated ACE ORBThe component-integrated ACE ORB is a CORBA component model implementation built on top of TAO.CIAO is currently aiming to provide component-oriented paradigm to the distributed, real-time, embedded system developers by abstracting DRE-critical systemic aspects, such as QoS requirements, RT...
a CORBAÇorbaChorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
implementation) - CIAOComponent-Integrated ACE ORBThe component-integrated ACE ORB is a CORBA component model implementation built on top of TAO.CIAO is currently aiming to provide component-oriented paradigm to the distributed, real-time, embedded system developers by abstracting DRE-critical systemic aspects, such as QoS requirements, RT...
- Communication softwareCommunication softwareCommunication software is used to provide remote access to systems and exchange files and messages in text, audio and/or video formats between different computers or user IDs...
- Cross-platform support middlewareCross-Platform Support MiddlewareA cross-platform support middleware is a software abstraction layer that guarantees the existence, and correct implementation, of a set of services on top a set of platforms.-Formal model:Formally, a CPSM can be represented by the following model:...