mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
222 lines
8.6 KiB
Text
222 lines
8.6 KiB
Text
This document is also available at the following URL:
|
|
|
|
http://www.cs.wustl.edu/~schmidt/ACE.html
|
|
|
|
All software and documentation is available via both anonymous ftp and
|
|
the World Wide Web.]
|
|
|
|
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
|
|
|
|
The current ACE release is provided as a tar file that is around 3 Meg
|
|
compressed using GNU gzip. ACE may be obtained electronically from
|
|
http://www.cs.wustl.edu/~schmidt/ACE-obtain.html. 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 and at Washington
|
|
University, St. Louis.
|
|
|
|
You can get The ACE ORB (TAO) in a companion release at
|
|
http://www.cs.wustl.edu/~schmidt/TAO.html.
|
|
|
|
----------------------------------------
|
|
|
|
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
|
|
ftp://wuarchive.wustl.edu/languages/c++/ACE/ACE-documentation. This
|
|
directory contains postscript versions of various papers that describe
|
|
different aspects of ACE.
|
|
|
|
I update these papers periodically to reflect changes to the ACE
|
|
architecture. Therefore, you might want to check the date on the
|
|
files to make sure that you have read the most recent versions of
|
|
these papers.
|
|
|
|
This material is also available available via the WWW at URL:
|
|
|
|
http://www.cs.wustl.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.cs.wustl.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.cs.wustl.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@cs.wustl.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.
|