1 This document is also available at the following URL:
3 https://www.dre.vanderbilt.edu/~schmidt/ACE.html
5 All software and documentation is available via both anonymous ftp and
8 THE ADAPTIVE COMMUNICATION ENVIRONMENT (ACE)
10 An Object-Oriented Network Programming Toolkit
12 ----------------------------------------
16 The ADAPTIVE Communication Environment (ACE) is an object-oriented
17 (OO) toolkit that implements fundamental design patterns for
18 communication software. ACE provides a rich set of reusable C++
19 wrappers and frameworks that perform common communication software
20 tasks across a range of OS platforms, including Win32/Win64, most
21 versions of UNIX (e.g., SunOS, HP-UX , AIX, Linux, NetBSD, and FreeBSD),
22 real-time operating systems (e.g., VxWorks, Chorus, LynxOS, and QNX),
23 OpenVMS, and MVS OpenEdition. A single source tree is used for all
24 these platforms and porting ACE to other platforms is relatively easy.
26 The communication software components provided by ACE include event
27 demultiplexing and event handler dispatching, service initialization,
28 interprocess communication, shared memory management, message routing,
29 dynamic (re)configuration of distributed services, multi-threading,
30 and concurrency control. There are both C++ and Java versions of ACE
33 ACE is targeted for developers of high-performance and real-time
34 communication services and applications on UNIX, POSIX, and Win32
35 platforms. ACE simplifies the development of OO network applications
36 and services that utilize interprocess communication, event
37 demultiplexing, explicit dynamic linking, and concurrency. ACE
38 automates system configuration and reconfiguration by dynamically
39 linking services into applications at run-time and executing these
40 services in one or more processes or threads.
42 ACE is currently used in commercial projects and products by dozens of
43 companies including Ericsson, Bellcore, Siemens, Motorola, Kodak,
44 Boeing, Lucent, DEC, Lockheed Martin, and SAIC. Commercial support
45 for ACE is available from several companies as listed at
46 http://www.dre.vanderbilt.edu/~schmidt/commercial-support.html
48 ----------------------------------------
50 C++ Wrappers for OS Interfaces
52 The lower-level portions of ACE provide a set of portable and
53 type-secure C++ wrappers that encapsulate the following C language OS
57 -- e.g., Internet- and UNIX-domain sockets, TLI, Named
58 Pipes (for UNIX and Win32) and STREAM pipes;
60 . Event demultiplexing
61 -- e.g., select(), poll(), and Win32
62 WaitForMultipleObjects and I/O completion ports;
64 . Multi-threading and synchronization
65 -- e.g., Solaris threads, POSIX Pthreads, and Win32
68 . Explicit dynamic linking
69 -- e.g., dlopen/dlsym on UNIX and LoadLibrary/GetProc
72 . Memory-mapped files and shared memory management
73 -- e.g., BSD mmap(), SYSV shared memory, and Win32
77 -- e.g., shared memory, semaphores, message queues.
79 The OS Adaptation Layer shields the upper levels of ACE from platform
80 dependencies associated with the underlying OS interfaces.
82 ----------------------------------------
84 Frameworks and Class Categories
86 ACE also contains a higher-level network programming framework that
87 integrates and enhances the lower-level C++ wrappers. This framework
88 supports the dynamic configuration of concurrent distributed services
89 into applications. The framework portion of ACE contains the
90 following class categories:
93 -- Supports both Reactive and Proactive I/O;
95 . The Service Configurator
96 -- Support dynamic (re)configuration of objects;
98 . The ADAPTIVE Service Executive
99 -- A user-level implementation of System V STREAMS,
100 that supports modular integration of
101 hierarchically-related communication services;
104 -- Various types of higher-level concurrency
105 control and synchronization patterns (such as
106 Polymorphic Futures and Active Objects);
109 -- Components for managing dynamically allocation
110 of shared and local memory;
112 ----------------------------------------
114 Distributed Services and Components
116 Finally, ACE provides a standard library of distributed services that
117 are packaged as components. These service components play two roles
120 1. They provide reusable components for common distributed
121 system tasks such as logging, naming, locking, and time
124 2. They illustrate how to utilize ACE features such as the
125 Reactor, Service Configurator, Service Initialization,
126 Concurrency, and IPC components.
128 ----------------------------------------
130 Middleware Applications
132 ACE has been used in research and development projects at many
133 universities and companies. For instance, it has been used to build
134 avionics systems at Boeing, telecommunication systems at Bellcore,
135 Ericsson, Motorola, and Lucent; medical imaging systems at Siemens and
136 Kodak; and many academic research projects. Two example middleware
137 applications provided with the ACE release include:
139 1. The ACE ORB (TAO) -- TAO is a real-time implementation of
140 CORBA built using the framework components and patterns
143 2. JAWS -- JAWS is a high-performance, adaptive Web server
144 built using the components in ACE.
146 ----------------------------------------
150 ACE may be obtained electronically from
151 https://download.dre.vanderbilt.edu. This release contains the source
152 code, test drivers, and example applications (including JAWS) for C++
153 wrapper libraries and the higher-level ACE network programming
154 framework developed as part of the ADAPTIVE project at the University
155 of California, Irvine, Washington University, St. Louis, and
156 Vanderbilt University.
158 You can get The ACE ORB (TAO) in a companion release at the same URL.
160 ----------------------------------------
162 ACE DOCUMENTATION AND TUTORIALS
164 Many of the C++ wrappers and higher-level components have been
165 described in issues of the C++ Report, as well as in proceedings of
166 many journals, conferences, and workshops.
168 A collection of white papers and tutorial handouts are included at
170 http://www.dre.vanderbilt.edu/~schmidt/ACE-papers.html
172 This page contains PDF versions of various papers that describe
173 different aspects of ACE.
175 This material is also available available via the WWW at URL:
177 http://www.dre.vanderbilt.edu/~schmidt/ACE.html
179 ----------------------------------------
181 ACE MAILING LIST AND NEWSGROUP
183 A mailing list, ace-users@list.isis.vanderbilt.edu, is available for
184 discussing bug fixes, enhancements, and porting issues regarding ACE.
185 Please send mail to me at the
186 ace-users-request@list.isis.vanderbilt.edu if you'd like to join the
187 mailing list. Please see
188 http://www.dre.vanderbilt.edu/~schmidt/ACE-mail.html for details on
189 how to subscribe to the mailing list.
191 ----------------------------------------
193 BUILDING AND INSTALLING ACE
195 Please refer to the $ACE_ROOT/ACE-INSTALL.html file for
196 information on how to build and test the ACE wrappers. The
197 BIBLIOGRAPHY file contains information on where to obtain articles
198 that describe the ACE wrappers and the ADAPTIVE system in more detail.
200 The current release has been tested extensively, but if you find any
201 bugs, please report them to the ACE mailing list
202 ace-users@list.isis.vanderbilt.edu using the
203 $ACE_ROOT/PROBLEM-REPORT-FORM. Please use the same form to submit
204 questions, comments, etc. To ensure that you see responses, please do
205 one of the following:
207 1) Subscribe to the ace-users mail list, by sending email with
208 contents "subscribe ace-users" to
209 ace-users-request@list.isis.vanderbilt.edu.
211 ----------------------------------------
215 Please see the file `$ACE_ROOT/THANKS' for a list of the thousands of
216 people who've contributed to ACE and TAO over the years.