223 lines
8.3 KiB
Plaintext
223 lines
8.3 KiB
Plaintext
|
|
|
|
This document is also available at the following URL:
|
|
|
|
http://www.dre.vanderbilt.edu/~schmidt/ACE.html
|
|
|
|
All software and documentation is available via both anonymous ftp and
|
|
the http.]
|
|
|
|
THE ADAPTIVE COMMUNICATION ENVIRONMENT (ACE)
|
|
|
|
An Object-Oriented Network Programming Toolkit
|
|
|
|
----------------------------------------
|
|
|
|
Overview of ACE
|
|
|
|
The ADAPTIVE Communication Environment (ACE) is an object-oriented
|
|
(OO) toolkit that implements fundamental design patterns for
|
|
communication software. ACE provides a rich set of reusable C++
|
|
wrappers and frameworks that perform common communication software
|
|
tasks across a range of OS platforms, including Win32/Win64, most
|
|
versions of UNIX (e.g., SunOS, HP-UX , AIX, Linux, NetBSD, and FreeBSD),
|
|
real-time operating systems (e.g., VxWorks, Chorus, LynxOS, and QNX),
|
|
OpenVMS, and MVS OpenEdition. A single source tree is used for all
|
|
these platforms and porting ACE to other platforms is relatively easy.
|
|
|
|
The communication software components provided by ACE include event
|
|
demultiplexing and event handler dispatching, service initialization,
|
|
interprocess communication, shared memory management, message routing,
|
|
dynamic (re)configuration of distributed services, multi-threading,
|
|
and concurrency control. There are both C++ and Java versions of ACE
|
|
available.
|
|
|
|
ACE is targeted for developers of high-performance and real-time
|
|
communication services and applications on UNIX, POSIX, and Win32
|
|
platforms. ACE simplifies the development of OO network applications
|
|
and services that utilize interprocess communication, event
|
|
demultiplexing, explicit dynamic linking, and concurrency. ACE
|
|
automates system configuration and reconfiguration by dynamically
|
|
linking services into applications at run-time and executing these
|
|
services in one or more processes or threads.
|
|
|
|
ACE is currently used in commercial projects and products by dozens of
|
|
companies including Ericsson, Bellcore, Siemens, Motorola, Kodak,
|
|
Boeing, Lucent, DEC, Lockheed Martin, and SAIC. Commercial support
|
|
for ACE is available from several companies as listed at
|
|
http://www.cs.wustl.edu/~schmidt/commercial-support.html
|
|
|
|
----------------------------------------
|
|
|
|
C++ Wrappers for OS Interfaces
|
|
|
|
The lower-level portions of ACE provide a set of portable and
|
|
type-secure C++ wrappers that encapsulate the following C language OS
|
|
interfaces:
|
|
|
|
. IPC mechanisms
|
|
-- e.g., Internet- and UNIX-domain sockets, TLI, Named
|
|
Pipes (for UNIX and Win32) and STREAM pipes;
|
|
|
|
. Event demultiplexing
|
|
-- e.g., select(), poll(), and Win32
|
|
WaitForMultipleObjects and I/O completion ports;
|
|
|
|
. Multi-threading and synchronization
|
|
-- e.g., Solaris threads, POSIX Pthreads, and Win32
|
|
threads;
|
|
|
|
. Explicit dynamic linking
|
|
-- e.g., dlopen/dlsym on UNIX and LoadLibrary/GetProc
|
|
on Win32;
|
|
|
|
. Memory-mapped files and shared memory management
|
|
-- e.g., BSD mmap(), SYSV shared memory, and Win32
|
|
shared memory;
|
|
|
|
. System V IPC
|
|
-- e.g., shared memory, semaphores, message queues.
|
|
|
|
The OS Adaptation Layer shields the upper levels of ACE from platform
|
|
dependencies associated with the underlying OS interfaces.
|
|
|
|
----------------------------------------
|
|
|
|
Frameworks and Class Categories
|
|
|
|
ACE also contains a higher-level network programming framework that
|
|
integrates and enhances the lower-level C++ wrappers. This framework
|
|
supports the dynamic configuration of concurrent distributed services
|
|
into applications. The framework portion of ACE contains the
|
|
following class categories:
|
|
|
|
. The Reactor
|
|
-- Supports both Reactive and Proactive I/O;
|
|
|
|
. The Service Configurator
|
|
-- Support dynamic (re)configuration of objects;
|
|
|
|
. The ADAPTIVE Service Executive
|
|
-- A user-level implementation of System V STREAMS,
|
|
that supports modular integration of
|
|
hierarchically-related communicaion services;
|
|
|
|
. Concurrency
|
|
-- Various types of higher-level concurrency
|
|
control and synchronization patterns (such as
|
|
Polymorphic Futures and Active Objects);
|
|
|
|
. Shared Malloc
|
|
-- Components for managing dynamically allocation
|
|
of shared and local memory;
|
|
|
|
----------------------------------------
|
|
|
|
Distributed Services and Components
|
|
|
|
Finally, ACE provides a standard library of distributed services that
|
|
are packaged as components. These service components play two roles
|
|
in ACE:
|
|
|
|
1. They provide reusable components for common distributed
|
|
system tasks such as logging, naming, locking, and time
|
|
synchronization.
|
|
|
|
2. They illustrate how to utilize ACE features such as the
|
|
Reactor, Service Configurator, Service Initialization,
|
|
Concurrency, and IPC components.
|
|
|
|
----------------------------------------
|
|
|
|
Middleware Applications
|
|
|
|
ACE has been used in research and development projects at many
|
|
universities and companies. For instance, it has been used to build
|
|
avionics systems at Boeing, telecommunication systems at Bellcore,
|
|
Ericsson, Motorola, and Lucent; medical imaging systems at Siemens and
|
|
Kodak; and many academic research projects. Two example middleware
|
|
applications provided with the ACE release include:
|
|
|
|
1. The ACE ORB (TAO) -- TAO is a real-time implementation of
|
|
CORBA built using the framework components and patterns
|
|
provided by ACE.
|
|
|
|
2. JAWS -- JAWS is a high-performance, adaptive Web server
|
|
built using the components in ACE.
|
|
|
|
----------------------------------------
|
|
|
|
OBTAINING ACE
|
|
|
|
ACE may be obtained electronically from
|
|
http://download.dre.vanderbilt.edu. This release contains the source
|
|
code, test drivers, and example applications (including JAWS) for C++
|
|
wrapper libraries and the higher-level ACE network programming
|
|
framework developed as part of the ADAPTIVE project at the University
|
|
of California, Irvine, Washington University, St. Louis, and
|
|
Vanderbilt University.
|
|
|
|
You can get The ACE ORB (TAO) in a companion release at the same URL.
|
|
|
|
----------------------------------------
|
|
|
|
ACE DOCUMENTATION AND TUTORIALS
|
|
|
|
Many of the C++ wrappers and higher-level components have been
|
|
described in issues of the C++ Report, as well as in proceedings of
|
|
many journals, conferences, and workshops.
|
|
|
|
A collection of white papers and tutorial handouts are included at
|
|
|
|
http://www.dre.vanderbilt.edu/~schmidt/ACE-papers.html
|
|
|
|
This page contains PDF versions of various papers that describe
|
|
different aspects of ACE.
|
|
|
|
This material is also available available via the WWW at URL:
|
|
|
|
http://www.dre.vanderbilt.edu/~schmidt/ACE.html
|
|
|
|
----------------------------------------
|
|
|
|
ACE MAILING LIST AND NEWSGROUP
|
|
|
|
A mailing list, ace-users@list.isis.vanderbilt.edu, is available for
|
|
discussing bug fixes, enhancements, and porting issues regarding ACE.
|
|
Please send mail to me at the
|
|
ace-users-request@list.isis.vanderbilt.edu if you'd like to join the
|
|
mailing list. There is also a USENET newsgroup called
|
|
comp.soft-sys.ace. Please see
|
|
http://www.dre.vanderbilt.edu/~schmidt/ACE-mail.html for details on
|
|
how to subscribe to the mailing list.
|
|
|
|
----------------------------------------
|
|
|
|
BUILDING AND INSTALLING ACE
|
|
|
|
Please refer to the
|
|
http://www.dre.vanderbilt.edu/~schmidt/ACE-install.html file for
|
|
information on how to build and test the ACE wrappers. The
|
|
BIBLIOGRAPHY file contains information on where to obtain articles
|
|
that describe the ACE wrappers and the ADAPTIVE system in more detail.
|
|
|
|
The current release has been tested extensively, but if you find any
|
|
bugs, please report them to the ACE mailing list
|
|
ace-users@list.isis.vanderbilt.edu using the
|
|
$ACE_ROOT/PROBLEM-REPORT-FORM. Please use the same form to submit
|
|
questions, comments, etc. To ensure that you see responses, please do
|
|
one of the following:
|
|
|
|
1) Subscribe to the ace-users mail list, by sending email with
|
|
contents "subscribe ace-users" to
|
|
ace-users-request@list.isis.vanderbilt.edu.
|
|
|
|
2) Or, monitor the comp.soft-sys.ace newsgroup for responses.
|
|
|
|
----------------------------------------
|
|
|
|
ACKNOWLEDGEMENTS
|
|
|
|
Please see the file `$ACE_ROOT/THANKS' for a list of the thousands of
|
|
people who've contributed to ACE and TAO over the years.
|