Workshop: Lab 9 Object Oriented Programming for Networking
Lab 9:
Introduction to Network Programming and to ACE
Learning Objectives
• Understanding the ADAPTIVE Communication Environment (ACE)
Lab Work
The ADAPTIVE Communication Environment (ACE) is a freely available, open-source
object-oriented (OO) framework that implements many core patterns for concurrent
communication software. ACE provides a rich set of reusable C++ wrapper facades and
framework components that perform common communication software tasks across a
range of OS platforms. The communication software tasks provided by ACE include
event demultiplexing and event handler dispatching, signal handling, service
initialization, interprocess communication, shared memory management, message
routing, dynamic (re)configuration of distributed services, concurrent execution and
synchronization.
ACE is targeted for developers of high-performance and real-time communication
services and applications. It simplifies the development of OO network applications and
services that utilize interprocess communication, event demultiplexing, explicit dynamic
linking, and concurrency. In addition, 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 continues to improve and its future is bright. ACE is supported commercially by
multiple companies using an open-source business model. In addition, many members of
the ACE development team are currently working on building The ACE ORB (TAO) [See
http://www.cs.wustl.edu/~schmidt/TAO-intro.html].
Stavros Dimitriou ©London South Bank University 1
Workshop: Lab 9 Object Oriented Programming for Networking
Some of the many benefits of using ACE include:
• Increased portability -- ACE components make it easy to write concurrent
networked applications on one OS platform and quickly port them to many other
OS platforms. Moreover, because ACE is open source, free software, you never
have to worry about getting locked into a particular operating system platform or
compiler configuration.
• Increased software quality -- ACE components are designed using many key
patterns that increase key qualities, such as flexibility, extensibility, reusability,
and modularity, of communication software.
• Increased efficiency and predictability -- ACE is carefully designed to support a
wide range of application quality of service (QoS) requirements, including low
latency for delay-sensitive applications, high performance for bandwidth-intensive
applications, and predictability for real-time applications.
• Easier transition to standard higher-level middleware -- ACE provides the
reusable components and patterns used in The ACE ORB (TAO), which is an
open-source standard-compliant implementation of CORBA that's optimized for
high-performance and real-time systems. Thus, ACE and TAO are designed to
work well together in order to provide comprehensive middleware solutions.
The following diagram illustrates the key components in ACE and their hierarchical
relationships:
Stavros Dimitriou ©London South Bank University 2
Workshop: Lab 9 Object Oriented Programming for Networking
The ACE OS Adapter Layer
This layer resides directly atop the native OS APIs that are written in C. It provides a
small footprint, "POSIX-like" OS adaptation layer that shields the other layers and
components in ACE from platform-specific dependencies associated with the following
OS APIs:
• Concurrency and synchronization -- ACE's adaptation layer encapsulates OS
APIs for multi-threading, multi-processing, and synchronization.
• Interprocess communication (IPC) and shared memory -- ACE's adaptation
layer encapsulates OS APIs for local and remote IPC and shared memory.
• Event demultiplexing mechanisms -- ACE's adaptation layer encapsulates OS
APIs for synchronous and asynchronous demultiplexing I/O-based, timer-based,
signal-based, and synchronization-based events.
• Explicit dynamic linking -- ACE's adaptation layer encapsulates OS APIs for
explicit dynamic linking, which allows application services to be configured at
installation-time or run-time.
• File system mechanisms -- ACE's adaptation layer encapsulates OS file system
APIs for manipulating files and directories.
The portability of ACE's OS adaptation layer enables it to run on a many operating
systems. ACE has been ported and tested on a wide range of OS platforms including
Windows (i.e., WinNT 3.5.x, 4.x, 2000, Embedded NT, XP, Win95/98, and WinCE using
MSVC++, Borland C++ Builder, and IBM's Visual Age on 32- and 64-bit Intel and Alpha
platforms), Mac OS X, most versions of UNIX (e.g., Solaris on SPARC and Intel, SGI
IRIX 5.x and 6.x, DG/UX, HP-UX 10.x, and 11.x, Tru64UNIX 3.x and 4.x, AIX 3.x, 4.x,
5.x, DG/UX, UnixWare, SCO, and freely available UNIX implementations, such as
Debian Linux 2.x, RedHat Linux 5.2, 6.x, 7.x, 8x, and 9.x, as well as the various
Enterprise editions, SUSE Linux 8.1 and 9.2, Timesys Linux, FreeBSD, and NetBSD),
real-time operating systems (e.g., LynxOS, VxWorks, ChorusOS, QnX Neutrino,
RTEMS, OS9, and PSoS), OpenVMS, MVS OpenEdition, and CRAY UNICOS. A single
source tree is used for all these platforms. There is also a Java version of ACE.
Because of the abstraction provided by ACE's OS adaptation layer, a single source tree is
used for all these platforms. This design greatly simplies the portability and
maintainability of ACE.
C++ Wrapper Facades for OS Interfaces
It is possible to program highly portable C++ applications directly atop ACE's OS
adaptation layer. However, most ACE developers use the C++ wrapper facade layer
shown in the figure above. The ACE C++ wrapper facades simplify application
development by providing typesafe C++ interfaces that encapsulate and enhance the
native OS concurrency, communication, memory management, event demultiplexing,
dynamic linking, and file system APIs. Applications can combine and compose these
wrappers by selectively inheriting, aggregating, and/or instantiating the following
components:
• Concurrency and synchronization components -- ACE abstracts native OS
multi-threading and multi-processing mechanisms like mutexes and semaphores to
Stavros Dimitriou ©London South Bank University 3
Workshop: Lab 9 Object Oriented Programming for Networking
create higher-level OO concurrency abstractions like Active Objects and
Polymorphic Futures.
• IPC and filesystem components -- The ACE C++ wrappers encapsulate local
and/or remote IPC mechanisms, such as sockets, TLI, UNIX FIFOs and STREAM
pipes, and Win32 Named Pipes. In addition, the ACE C++ wrappers encapsulate
the OS filesystem APIs.
• Memory management components -- The ACE memory management
components provide a flexible and extensible abstraction for managing dynamic
allocation and deallocation of interprocess shared memory and intraprocess heap
memory.
The C++ wrappers provide many of the same features as the OS adaptation layer in ACE.
However, these features are structured in terms of C++ classes and objects, rather than
stand-alone C functions. This OO packaging helps to reduce the effort required to learn
and use ACE correctly.
For instance, the use of C++ improves application robustness because the C++ wrappers
are strongly typed. Therefore, compilers can detect type system violations at compile-
time rather than at run-time. In contrast, it is not possible to detect typesystem violations
for C-level OS APIs, such as sockets or filesystem I/O, until run-time.
ACE employs a number of techniques to minimize or eliminate performance overhead.
For instance, ACE uses C++ inlining extensively to eliminate method call overhead that
would otherwise be incurred from the additional typesafety and levels of abstraction
provided by its OS adaptation layer and the C++ wrappers In addition, ACE avoids the
use of virtual methods for performance-critical wrappers, such as send/recv methods for
socket and file I/O.
Frameworks
ACE also contains a higher-level network programming framework that integrates and
enhances the lower-level C++ wrapper facades. This framework supports the dynamic
configuration of concurrent distributed services into applications. The framework portion
of ACE contains the following components:
• Event demultiplexing components -- The ACE Reactor and Proactor are
extensible, object-oriented demultiplexers that dispatch application-specific
handlers in response to various types of I/O-based, timer-based, signal-based, and
synchronization-based events.
• Service initialization components -- The ACE Acceptor and Connector
components decouple the active and passive initialization roles, respectively, from
application-specific tasks that communication services perform once initialization
is complete.
• Service configuration components -- The ACE Service Configurator supports
the configuration of applications whose services may be assembled dynamically at
installation-time and/or run-time.
• Hierarchically-layered stream components -- The ACE Streams components
simplify the development of communication software applications, such as user-
level protocol stacks, that are composed of hierarchically-layered services.
Stavros Dimitriou ©London South Bank University 4
Workshop: Lab 9 Object Oriented Programming for Networking
• ORB adapter components -- ACE can be integrated seamlessly with single-
threaded and multi-threaded CORBA implementations via its ORB adapters.
The ACE framework components facilitate the development of communication software
that can be updated and extended without the need to modify, recompile, relink, or often
restart running applications. This flexibility is achieved in ACE by combining (1) C++
language features, such as templates, inheritance, and dynamic binding, (2) design
patterns, such as Abstract Factory, Strategy, and Service Configurator, and (3) OS
mechanisms, such as explicit dynamic linking and multi-threading.
Distributed Services and Components
In addition to its OS adaptation layer, C++ wrapper facades, and framework components,
ACE provides a standard library of distributed services that are packaged as self-
contained components. Although these service components are not strictly part of the
ACE framework library, these service components play two roles in ACE:
1. Factoring out reusable distributed application building blocks -- These service
components provide reusable implementations of common distributed application
tasks such as naming, event routing, logging, time synchronization, and network
locking.
2. Demonstrating common use-cases of ACE components -- The distributed
services also demonstrate how ACE components like Reactors, Service
Configurators, Acceptors and Connectors, Active Objects, and IPC wrappers can
be used effectively to develop flexible, efficient, and reliable communication
software.
Higher-level Distributed Computing Middleware Components
Developing robust, extensible, and efficient communication applications is challenging,
even when using a communication framework like ACE. In particular, developers must
still master a number of complex OS and communication concepts such as:
• Network addressing and service identification.
• Presentation conversions, such as encryption, compression, and network byte-
ordering conversions between heterogeneous end-systems with alternative
processor byte-orderings.
• Process and thread creation and synchronization.
• System call and library routine interfaces to local and remote interprocess
communication (IPC) mechanisms.
It is possible to alleviate some of the complexity of developing communication
applications by employing higher-level distributed computing middleware, such as
CORBA, DCOM, or Java RMI. Higher-level distributed computing middleware resides
between clients and servers and automates many tedious and error-prone aspects of
distributed application development, including:
• Authentication, authorization, and data security.
• Service location and binding.
Stavros Dimitriou ©London South Bank University 5
Workshop: Lab 9 Object Oriented Programming for Networking
• Service registration and activation.
• Demultiplexing and dispatching in response to events.
• Implementing message framing atop bytestream-oriented communication
protocols like TCP.
• Presentation conversion issues involving network byte-ordering and parameter
marshaling.
To provide developers of communication software with these features, the following
higher-level middleware applications are bundled with the ACE release:
1. The ACE ORB (TAO) -- TAO is a real-time implementation of CORBA built
using the framework components and patterns provided by ACE. TAO contains
the network interface, OS, communication protocol, and CORBA middleware
components and features. TAO is based on the standard OMG CORBA reference
model, with the enhancements designed to overcome the shortcomings of
conventional ORBs for high-performance and real-time applications. TAO, like
ACE, is freely available, open source software.
2. JAWS -- JAWS is a high-performance, adaptive Web server built using the
framework components and patterns provided by ACE. JAWS is structured as a
framework of frameworks. The overall JAWS framework contains the following
components and frameworks: an Event Dispatcher, Concurrency Strategy, I/O
Strategy, Protocol Pipeline, Protocol Handlers, and Cached Virtual Filesystem.
Each framework is structured as a set of collaborating objects implemented by
combining and extending components in ACE. JAW is also freely available, open-
source software.
Obtaining ACE, TAO, and CIAO
http://download.dre.vanderbilt.edu/
Building and Installing ACE
http://www.cs.wustl.edu/~schmidt/ACE-install.html
Stavros Dimitriou ©London South Bank University 6
Workshop: Lab 9 Object Oriented Programming for Networking
Who is using ACE
ACE and TAO are being used in thousands of commercial products at many companies,
as well as at various universities and research labs around the world, in many types of
distributed, real-time, and embedded systems, particularly telecom, medical, aerospace,
defense, and financial services. Our research group has personally worked with thousands
of contributors, dozens of end-user companies, and over a half-dozen commercial support
providers using ACE and TAO on UNIX, Win32, and embedded platforms. Our
experiences and lessons learned using ACE and TAO on these projects are documented
online.
ACE and TAO have been used and enhanced by hundreds of developers at many
companies and universities in over 40 countries in the world. If you're interested in
learning more about how ACE and TAO are being used in practice, or if you'd like to
explain how you are using ACE and TAO, please send email to the ace-
users@cs.wustl.edu mailing list. The following is a list of some known uses of ACE and
TAO. See the TAO Press Releases and OCI's OMG meeting briefing for more
information on TAO's use in commercial projects in many domains.
Telecommunications and Network Management
1. ACE and TAO are used inside the 3rd generation mobile base stations called
NodeB developed by Siemens AG, Information and Communication Mobile.
2. ACE is used for PBX monitoring applications at Ericsson, Cypress California.
3. ACE is used for a distributed computing infrastructure and gateway
communication for mobile communications systems at Motorola Iridium,
Phoenix, Arizona.
4. Innovation Media Solutions uses TAO for inflight entertaining and
communication systems.
5. ACE is used for network management at ARINC.
6. CommWorks Corp., a 3Com company, developed its next-generation VoIP media
gateway, the TCH2000, with ACE. ACE facilitated the development of a SPARC
Solaris-based simulation of the media gateway for the purpose of rapid
development. Over 95% of the code run in simulation also runs without
modification on its PPC VxWorks target. Design to a demonstrable system took
less than six months in large measure to the efficiency gains won by ACE-based
simulation.
7. TAO is used by Spectrum Signal Processing in their SDR-3000 and HCDR-1002
product families of software defined radio subsystems.
8. CUseeMe Networks, Inc use ACE and TAO in their CUseeMe Conference Server,
a software-based H.323 MCU, enabling standards-based group conferencing with
a variety of endpoints. The server uses a Reactor to handle all T.120 protocol
communication, and a Proactor to handle the huge numbers of RTP/RTCP audio
and video datagrams. Also, an ACE_Task is used as a thread pool for mixing
audio packets. TAO is being used to configure and monitor the server.
Stavros Dimitriou ©London South Bank University 7
Workshop: Lab 9 Object Oriented Programming for Networking
9. Telesoft S.p.A., a company owned by Telecom Italia that produces
telecommunications software, is using ACE to provide a general network API that
hides the underlying communication mechanism.
10. GlobeTOM has used TAO to develop a product to perform generic network
mediation using the Monfox Dynamic TMN toolkit to implement Q3 interfaces to
network elements and support CMIS (CMIP/RFC1006) communication to the
network resources of customers. They are using ACE together with a proprietary
Business Process Logic engine to perform intelligent abstraction of the underlying
network resource diversity to present the customer with a homogeneous view of
their hetereogeneous network. This ACE-based solution is now successfully
managing Alcatel, Motorola and Siemens GSM radio equipment as well as
Siemens Switching and UMTS equipment.
11. DSC Communications Corporation is using ACE in the development of an
Element Management System for their Litespan network elements.
12. ACE is being used at CSC Communications Industry Services on projects
including, cellular switch provisioning, real time rater, credit and collections, GUI
integration with UNIX, and a credit bureau interface.
13. Balisoft Technologies is developing a Call Center integration for its LiveContact
product using ACE as an infrastructure. ACE provides events dispatching, TCP/IP
communications, distributed logging and dynamic service configuration. The
software allows internet surfers to contact customer service call centers without
having to place a telephone call offline or wait for e-mail.
14. Infinite Technology, Inc. has built a routing engine on Solaris to support a VoIP
network of gatekeepers and gateways. They have used the following patterns very
successfully: ACE Thread Pools (the ACE_Task pattern), ACE CStrings, ACE
threads (from ThreadManager::spawn()), ACE Singleton, ACE Token,
ACE_Allocator_Adapter, and last but not the least,
ACE_Atomic_Op to support a reference counting scheme. The project was finish
in on time, within budget, and far exceeding client performance expectations on
the running process.
15. ACE is being used to develop communications software at LCI International,
which is the 6th largest long distance carrier in the US.
16. Titan Client/Server Technologies is using ACE to develop a highly distributed
system that is responsible for managing the encryption (and eventual decryption at
the consumer end) of analog or digital audio in a Direct To Home consumer
television market.
17. ETC Ltd (London UK) recently completed a high profile project at Cable &
Wireless in the UK using ACE, which provides a real time multithreaded gateway
between a Remedy ARS system and a Microsoft SQL server system. ACE made is
easy to port the code to both Solaris and NT. In addition, the design patterns
provided by ACE are used as exemplars for new design work.
18. Comverse Network Systems is using ACE as a basis for the infrastructure in a
large scale telephony project. Comverse develops a platform that gives various
Stavros Dimitriou ©London South Bank University 8
Workshop: Lab 9 Object Oriented Programming for Networking
services such as voice mail, call completion and forwarding, messaging and
different telephony protocols.
19. Bell South Cellular Corp is using ACE to write a trouble ticket processing system
for cellular telephone customers to report problems. This system involves remote
PC/Windows client and acess to mainframes via an external Unix gateway. ACE
is used for (1) TCP communication to the PC clients and thehost system gateway
and (2) multi-threaded programming support and signal programming for the
servers.
20. Objective Systems Integrators, Folsom, CA, have used ACE to build a network
management platform for SNMP and CMIP.
21. ACE is being used in a product at Ericsson Radio.
22. ACE is being used by reachNET to create the worlds first wireless
communications network for the deaf. By using a small wireless device the deaf
user will be able to conduct a TTY (TDD) call when away from their wire line
equipment. They have created an ACE-based server combining the wireless
network switch with a large bank of special TTY modems.
23. ACE is being used at Tadiran Telecommunications, the biggest in Israel supplier
of telecommunications equipment, to build performance monitoring tools for
phone switching devices.
24. ACE was successfully used in the development of an Ethernet to ATM edge
forwarder emulation software tool (Lanscape) at Newbridge Networks Inc. in a
multithreaded Solaris environment. The key ACE components used on this project
include ACE_Reactor, ACE_Task, ACE_Event_Handler, ACE_Timer_Queue.
25. ACE is being used at Cisco Systems for development of Network Management
Applications and products, including the CSR-1 carrier routing system.
26. ADC Apex using ACE to build network management applications. They are also
looking at TAO as a possible alternative for Orbix which is currently used for
their distributed applications.
27. Nortel Networks and Motorola Computer Group (hardware) announced a
collaboration to support advanced Internet product development. It runs on
Motorola's chips and Nortel's Open IP routing software, which is developed using
ACE.
28. ACE+TAO are being used by Northrop Grumman and Boeing on Wedgetail,
which is an Australian airborne early warning & control (AEW&C) system. This
AEW&C system combines the new high-performance Boeing 737-700 aircraft
with the Northrop Grumman multi-role Electronically Scanned Array (MESA)
radar.
29. Data Kinetics is developing an application called net.Tables that uses ACE to
perform table management services across different platforms. The server portion
runs on Linux and Windows NT. Clients run on Linux, Win-NT, and Win-95.
Stavros Dimitriou ©London South Bank University 9
Workshop: Lab 9 Object Oriented Programming for Networking
30. ACE is used in the ATM switch Q.93b signaling software at Bellcore,
Morristown, New Jersey
31. ACE is used in an X.25 PVC product at Syncom Systems AB, Uppsala, Sweden
32. Alcatel recently made a corporate-wide decision to deploy TAO as packaged in
OpenFusion TCS. As a major telecom equipment manufacturer, Alcatel is a heavy
user of CORBA in its network management products.
33. COMSAT RSI has been using ACE in building the Network Control Center for
the ACeS satellite-based cellular comms system. On this project, ACE was used
extensively as OO wrappers over IPC mechanisms, as well as providing a high-
level network programming framework to build network management and call
processing applications.
34. TAO is being used in the OSSNet Framework product, which provides
comprehensive suite of development tools and a run-time environment for rapidly
building and deploying standards-based network managers and agents.
35. TAO and ACE are being used for network management and a call processing
gateway for a "voice over IP" system in the Siemens ICN division in Munich,
Germany.
36. ACE and TAO are being used for a number wireless and wireline
telecommunication and data networking embedded systems at Lucent
Technologies and Motorola.
37. TAO is being used in the CMA telecom management agent project, which allows
telecom devices to be managed via CORBA interfaces. CMA does for CORBA
what SNMP agents do for SNMP.
38. DIRECTV® uses ACE in it's high-speed broadcast network to insert data circuits
into the video stream, and to monitor and control remote broadcast equipment
located throughout the US.
Aerospace and Defense
1. ACE+TAO are being used in the displays subsystem of Raytheon's Ship Self-
Defense System (SSDS MK2) on the USS Ronald Reagan aircraft carrier.
2. TAO and ACE are used for the Run-Time Infrastructure (RTI) for the Defense
Modeling and Simulation Organization's (DMSO) High-Level Architecture
(HLA) distributed interactive simulation environment at SAIC.
3. TAO and ACE are used for a number of manned and unmanned real-time avionics
mission computing embedded systems at Boeing/McDonnell Douglas in St. Louis,
MO. Several successful test flights of Boeing aircraft were recently flown using
ACE and TAO.
4. At JPL, a telemetry infrastructure developed with ACE+TAO framework is being
use to process, archive, and distribute the current Cassini Jupiter flyby science
data. TAO is being use as the backbone for data acquisition and resource
management. ACE is being use to develop the File Exchange Interface as the
Stavros Dimitriou ©London South Bank University 10
Workshop: Lab 9 Object Oriented Programming for Networking
publish/subscribe and data archiving service, which enables the distribution of
processed science product to remote scientists in RealTime. In addition, ACE is
also being use for developing a portable OO database wrapper interface.
5. ACE has been deployed to the 2nd Infantry Division HQs in Korea.
6. ACE is being used at esystems on the Tier2 Plus project.
7. ACE is being used in the Distributed Air/Ground Traffic Management (DAG-TM)
program, which is a NASA effort that is the testing "free-flight" operating concept
that will allow pilots with specially equipped aircraft to choose their own flight
paths and provide their own en route separation.
8. The Boeing Company is using ACE in a Centrifuge training device for the US
Navy. The communications and logging facilities of ACE are used to allow five
separate computer systems running on different operating systems to
communication and operate as one.
9. The Turkish Navy is using ACE+TAO as the basis for shipboard combat
management systems.
10. ACE is being used on the SIMAE project for the Chilean Air Force to build a
Tactical Warfare Simulation System running on SGI Indy workstations using an
SGI Indigo as a server.
11. ACE is used at COMSAT labs in Clarksburg, MD for various satellite control
projects.
12. ACE is used as the main IPC layer in SETAC, a distributed interactive simulation
system, used by the Chilean Army as part of the training for batallion and brigade
commanders and staffs.
13. ACE+TAO are being used by Raytheon as the middleware for the mission
controls an communications system in the Stratospheric Observatory for Infrared
Astronomy (SOFIA) project, which is a Boeing 747SP aircraft modified to
accommodate a 2.5 meter reflecting telescope, which is the largest airborne
telescope in the world.
14. ACE+TAO are being used by Raytheon as part of the total ship computing
environment (TSCE) infrastructure for the DD(X) land attack destroyer program.
A TSCE is a coordinated grid of computers that manage many aspects of a ship's
power, navigation, command and control, and combat operations.
15. The Advanced Technology group at Sanders, a Lockheed-Martin Company, is
using TAO and ACE to develop the Ground Support System (GSS) for the X33
Single Stage To Orbit (SSTO) Reusable Launch Vehicle (RLV) prototype:
www.venturestar.com. The GSS is responsible for archiving, distributing, and
displaying the real-time telemetery from the X33 vehicle and all the Ground
Interface Modules (GIMs) which interface with ground fuel storage tanks, etc.
The GSS is also responsible for interpreting operator commands, scripted
commands, and Reactive Control Logic rules, then forwarding low-level device
commands to the vehicle and GIMs.Our software is composed of two major
pieces: the operator consoles (which are written in Java and run on NT), and the
Stavros Dimitriou ©London South Bank University 11
Workshop: Lab 9 Object Oriented Programming for Networking
Command and Data Processor (CDP, which is written in C++ and runs on
Solaris). The CDP interfaces with the vehicle and GIMS, logging the data stream
(which is around 200000 updates/sec), activating any RCL, and multicasting
updates to interested consoles.
The CDP is written using ACE as an OS abstraction to simplify portability
between VxWorks and Solaris. TAO provides the CORBA interface to the Java
consoles (which use OrbixWeb). Other projects at Sanders are looking at ACE
and TAO.
16. Raytheon Systems Company in St. Petersburg, Florda is using ACE and TAO on
the Joint Tactical Terminal (JTT) project. The JTT is an open architecture satellite
communications terminal utilized by various armed services. Raytheon is writing
embedded C++ that is targeted to a VxWorks operating system running on
multiple processors on a VME backplane. Host development of the software is
performed on NT workstations and then is ported to VxWorks. The software is
developed as a series of software objects which can be "plug and play'd" in
various configurations. TAO and its Naming Service are being used as a
framework to discover, create, and communicate amonst these objects. Since the
software must also be transportable, ACE is used as an O/S abstraction layer. The
ability to use ACE on NT and VxWorks will hopefully make "porting" a non-
issue.
17. APTI (part of the Falls Church Division of Raytheon/E-Systems) is using ACE in
the implementation of a Client/Server architecture for the control system software
for an ionospheric research instrument (IRI) for the Air Force and ONR in
Gakona, Alaska.
COTS Middleware Platforms and Products
1. OMC is using ACE and TAO to develop Brutus, which is a CORBA layer on top
of win32 Extended MAPI. Any compliant CORBA client application on any
platform has therefore full access to any Microsoft Exchange Server version 5.5 or
later on an equal footing with native win32 MAPI applications such as MS
Outlook.
2. ACE+TAO are being used as the core middleware infrastructure for HP's NonStop
CORBA product, which has transaction rates in the 80,000 tx/sec with peaks
hitting 120,000 tx/sec.
3. bake, which is an open-source distributed/parallel build tool focusing on correct
dependency graph generation, uses ACE for threading and portability issues. It
will soon use TAO for communication, as well. bake is a distributed replacement
for gmake.
4. Penta Security Systems in Korea has used ACE to develope certification authority,
registration authority in PKI System that deals with RFC2510/RFC2511 protocol.
This system was applied to Government PKI of South Korea, and intranet security
systems in some banks on AIX, Sun, Linux, and Win32.
5. ACE and JAWS is used as the basis for an Internet content delivery system at
CacheFlow in California.
Stavros Dimitriou ©London South Bank University 12
Workshop: Lab 9 Object Oriented Programming for Networking
6. iCMG has successfully developed K2 Component Server based on CCM specs
and ACE+TAO. The K2 Component Server is a server-side infrastructure to
develop and deploy CORBA Component written in CORBA 3.0 IDL. It is based
on OMG's CORBAComponent Model that includes a Component Model,
Container Model, Packaging and Deployment, Component Implementation
Framework and Inter-working with EJB 1.1.
7. ACE is an essential part of a project called Magick, which is an IRC services
package.
The K2 Component Server uses IIOP as the base layer is the communication
protocol derived from CORBA. Even though, the K2 core implementation is
independent from a particular ORB implementation, iCMG has chosen to use
ACE+TAO since they provide more services than other commercial ORB
vendors.
8. Vectaport Inc. uses the ACE socket/handler/acceptor framework in ivtools, a
layered collection of application frameworks built on InterViews and Unidraw.
Three different uses of the ACE mechanisms were incorporated into ivtools, first
to add server capability to a stand-alone command interpreter, then to add an
import service to drawing editors derived from idraw, and finally to add an
interpreted remote control mechanism to the Unidraw framework.
9. ACE has impacted the design and development of a suite of reliable multicast
products that are currently in development by MLDS, Inc.
10. TAO as packaged as part of PrismTechnologies OpenFusion Total CORBA
Solution (TCS).
Big Science
1. ACE is being used in a control system for an ionospheric research instrument
(IRI) which is a large phased array radio-station type of thing
(www.haarp.alaska.edu). The array consists of (currently) 48 transmitters, each of
which has an embedded controller. These transmitters are all controlled by a
central server which runs a number of processes, all of which use ACE for UDP
sockets, Shared memory, event scheduling with the Reactor, etc. ACE is also
being used in a data acquisition system for Extremely Low Frequency (ELF)
sensors (the antenna array can generate ELF in the auroral electrojet, which can be
observed on earth).
2. The Sunrise project is using ACE to control a light-weight solar telescope with a
1m aperture for spectro-polarimetric observations of the solar atmosphere. The
telescope is planned to be operated during a series of long-duration balloon flights
in order to obtain time series of spectra and images at the diffraction-limit and to
study the UV spectral region down to 200 nm, which is not accessible from the
ground. The central aim of Sunrise is to understand the structure and dynamics of
the magnetic field in the solar atmosphere. Interacting with the convective flow
field, the magnetic field in the solar photosphere develops intense field
concentrations on scales below 100 km, which are crucial for the dynamics and
energetics of the whole solar atmosphere. In addition, Sunrise aims to provide
Stavros Dimitriou ©London South Bank University 13
Workshop: Lab 9 Object Oriented Programming for Networking
information on the structure and dynamics of the solar chromosphere and on the
physics of solar irradiance changes.
3. The Keck Observatory on Mauna Kea uses TAO to operate the world's largest
astronomical observatory.
4. The Alacama Large Millimeter/Submillimeter Array (ALMA) is a telescope
project that is using ACE. The ALMA project will provide scientists with precise
images of galaxies in formation seen as they were twelve billion years ago.
5. The GTC (http://gtc.iac.es) telescope is a high performance segmented 10-meter
telescope to be installed in one of the best sites of the Northern Hemisphere: the
ORM Observatory (http://www.iac.es/folleto/orm.html). ACE+TAO is being used
to develop its control system (GCS). GCS is responsible for controlling the
different mechanisms of the telescope, e.g. mount, active optics, instruments, as
well as for the data acquisition and adaptive observation scheduling. Specifically,
the primary mirror control system may have to work at 200 Hz to maintain
alignment of a set of 36 mirror-segments, weighing 400 kg each, within an
accuracy of some nanometers. GCS will run on a heterogeneous platform: VME
CPU boards with VxWorks for the real-time tier written in C++ and Solaris
workstations for the coordinating part and for the user interfaces written in Java.
All the nodes are connected by a high speed ATM network.
ACE+TAO provides a uniform architecture, simplifies portability between
VxWorks and Solaris, and interoperates with the Java2 ORB to communicate with
the user interfaces. The real-time capabilities of TAO are extensively exercised
through the use of the Real-Time Event Service to drive the control loops, status
monitoring, alarm propagation, etc.
6. ACE+TAO are being used in a passive radar project at the University of
Washington. The instrument in this project relies on an ability to have two
receivers synchonously sample at a rate of 250 ksamp/sec for relatively long times
(seconds now, minutes later), the trick being that the two receivers are separated
by 150 km. ACE+TAO are used multiple times in this project: for the experiment
coordination, data transport, and ultimately thread management on the
``supercomputer.''
7. The BABAR experiment at the Stanford Linear Accelerator Center is using both
ACE and TAO within selected places of the data acquisition system. We are using
ACE transparently via the "CMLOG" software from CEBAF (Jefferson Lab), and
in part of our Unix-based event delivery software. In addition, we are using TAO
as a mechanism to monitor and control parts of the DAQ system. The code to be
monitored/controlled is C++ and the GUI is Java (using JavaIDL). Finally, a
distributed histogram package being developed at Caltech will shortly use TAO.
The experiment is a project located on the Stanford University campus and
involves a new electron-positron asymmetric collider used to produce large
numbers of B and B-bar (anti-B) mesons (you can guess how the collaboration got
its name). The physics is focused on investigating differences in the behavior of
matter and anti-matter by observing the decay products of the B and B-bar
mesons. This project involves over 600 physicists and engineers representing ~80
institutions from 9 countries. Work started in the late 1980s and the first data is
Stavros Dimitriou ©London South Bank University 14
Workshop: Lab 9 Object Oriented Programming for Networking
scheduled to be collected in the Spring of 1999. The experiment will continue
running for five to ten years. More info may be found here:
Finance and Online Financial Services
1. IG Index uses TAO as the basis for spread betting.
2. ACXIOM uses TAO to provide customer information and analytics obtained from
publically available sources and their clients.
3. Onix Solutions are using ACE to implement a C++ FIX Engine for the Financial
Information eXchange ("FIX") Protocol. One of the most important and complex
tasks of a FIX Engine is to manages network connections, and using
ACE_Connector, ACE_Svc_Handler, ACE_Acceptor and ACE_Message_Queue
enabled this part of the system to be completed after just a few weeks of coding.
4. ACE is used for distributed insurance claims processing system at CCC, Chicago,
Illinois.
5. ACE is used for a global limiting system at Credit Suisse, Zurich, Switzerland.
6. Automated Trading Desk uses ACE and TAO as the infrastructure for their online
finance services systems.
7. ACE is being used on Win32, Linux, and Solaris in the Administracion Federal de
Ingresos Publicos in its generalized database access server that provides a
universal contry-wide platform to access to tax-related information.
8. Bear Stearns utilizes ACE in Risk Analysis Control System (RACS) to facilitate
its server/client UNIX/NT development. RACS is intended to provide overnight
and real time theoretical market position calculations to support clearance group
and market analysts decisions.
There is a server framework in place that allows creation of multiple independent
servers running in dedicated threads and sharing the same executable.
Architecture uses Stream, Module, Task, Reactor, Thread_Manager classes.
Utilization domain of servers sharing the same address space and running in
different threads of control is similar to the one of a shared memory
communication between servers, but implementation is much more flexible and
cleaner. As an example, we may draw any in-memory data server, that should
update (on the fly) historical server of the same data. In our case they share the
same repository, which is the only point of contact for these two servers. There are
three non-trivial areas in such architecture: signal handling, threads dispatching,
network dispatching. Servers register their signals with a dedicated thread running
a signal reactor. Each server thread has a dedicated reactor to process network IO
and dedicated thread manager to provide effective shutdown and specific
resources manipulations. Also every server has its own resource manager to
initialize and track down specific resources. Another very interesting and useful
application of ACE in our system is Stream class utilization in conjunction with
MessageBlock. Stream/Module/Task/MessageBlock provide very efficient
redirection of messages and their hierarchical processing, facilitating creation of
functional framework with predefined protocol parsers, connector/acceptor
Stavros Dimitriou ©London South Bank University 15
Workshop: Lab 9 Object Oriented Programming for Networking
factories. This makes possible to concentrate server development on business
logic rather than on details of how to communicate with low level network API.
Maintenance is another key aspect that is much easier to keep up now, due to a
true OO nature of the framework. Modules could be unplugged and adjusted
independently (from each other as well as underlying network protocol). If you
have any questions please don't hesitate to ask.
Regards,
Alexander Mintz
9. Merrill Lynch options trading desk are using ACE Reactor for point to point
communication. Our system is a multi-tier architecture which uses both
publish/subscribe and point to point.
Control Systems
1. TAO and CIAO have been the underlying technologies successfully used by the
ARCOS Project, a research effort developed carried out in the Pos-Graduation
Program on Mechatronics of Federal University of Bahia, Brazil. ARCOS is a
vertical, highly configurable framework for the construction of predictable and
interoperable Distributed Industrial Supervision and Control (D-S&C) Systems
and makes intensive use of many TAO+CIAO features, such as the Real-Time
Event Service, Scheduling Service, DAnCE and the programmatic use of ReDaC.
2. Gottwald uses TAO for shipping port management systems, e.g., integrating
terminal management and logistics.
3. Imaging Business Machines uses TAO for high end color image capture of
documents and meaningful data at full track speed, e.g., automaticlaly organize
documents by transition and capture MICR, OCR/ICR, and barcode information.
4. ACE is used by Peopleware to develop a general-purpose event gathering and
control system that can be used to implement a complete SCADA system, or to
monitor heterogeneous servers and applications. This product is called Osmius
and is an open source initiative.
5. Allied Signal is using ACE on a secondary air traffic control system for the new
Hong Kong airport. The system monitors approaching aircraft landing on parallel
runways. The planes get closer than normally allowed when landing in parallel, so
the system is used for finer monitoring than is available with the standard air
traffic control systems. The system monitor the departures, since there are many
high mountains around this particular airport, so the planes must not deviate too
much until they have reached a certain safe height. The system is a collection of
NT and Solaris boxes, connected on a private ethernet LAN.
6. McCain uses TAO for their advanced traffic management systems, e.g., vehicle
ID and tracking, signaling, Amber alerts, etc.
7. Gilbarco and Veeder-Root use TAO to control fueling systems, e.g., pressure and
temperature monitoring, emissions control and safety compliance, flow
management, and pump/turbine management.
8. Scanvaegt uses TAO to control machine food processing and packaging services.
Stavros Dimitriou ©London South Bank University 16
Workshop: Lab 9 Object Oriented Programming for Networking
9. Homag uses TAO and CIAO to control machine tools for woodworking.
10. ACE+TAO are used in home automation system that uses CORBA for
interservice communication. The central controller of the system is a SWI-Prolog
engine that is wrapped in ACE+TAO code so Prolog can send and react to
CORBA events.
11. Krones is using TAO and ACE in their beer bottling real-time control systems,
which process 20-40 images per-second to ensure bottle quality.
12. ACE is being used for a high-performance data distribution service for Siemens
Power Systems Control in Minneapolis, MN.
13. TAO and ACE are being used in a ``hot rolling mill'' embedded system framework
that controls the production of steel for the Siemens ATD division in Erlangen,
Germany.
14. NetAcquire Corporation in Kirkland, Washington is using ACE and TAO as a
distributed object framework in its real-time distributed NetAcquire Server
products. TAO is being used to support dynamic real-world input/output
distributed device configuration and to support NetAcquire Publish/Subscribe.
ACE is being used to provide a platform-neutral OS abstraction for NetAcquire
Server applications running on the NetAcquire Server RTOS. NetAcquire systems
have been deployed in satellite telemetry, aerospace test, remote monitoring, and
industrial automation.
15. ZAG Ljubljana is using ACE to write a Bridge Weigh-in-Motion system SiWIM,
a real-time data acquisition and processing system. ACE is used for:
o All TCP/IP and UDP/IP communications between SiWIM Engine and
SiWIM Front-End.
o Event logging via ACE_Log_Msg through a callback routine that sends UDP
packets to an external event logger program.
o Thread management and synchronisation. Inter-thread communication is
performed using ACE_Message_Queue.
The engine currently runs under WinNT4, but ACE was chosen to ease the future
porting of the application to a Linux or VxWorks platform.
16. SoftSmiths is using ACE for its e-Merchant and e-Wheel product suites, which are
next-generation seamlessly integrated and scalable Transaction Management
Systems solutions for energy companies.
Gaming and Multimedia
1. Eidos Media uses TAO to separate news from paper, i.e., news gathering,
commentary, analysis, etc.
2. World Fusion is using ACE and TAO to engineer a massively-multiplayer online
persistent-world game (a.k.a., MMOG, MMORPG, MMPOW, etc.) called
Atriarch. TAO is used for communication between all of our servers. The nature
Stavros Dimitriou ©London South Bank University 17
Workshop: Lab 9 Object Oriented Programming for Networking
of these types of games requires real-time QoS constraints, as well as fault-
tolerance, failover, and load balancing.
3. Laputan Designs is leveraging ACE in designing and implementing distributed
WWW tools and games.
4. ESC Entertaining uses TAO to manage their hundreds of rendering systems to
create visual effects for movies, including the Matrix.
5. Euphonix uses TAO for broadcast, post production, music, and live performance.
6. ACE was used by AudioActive to broadcast live audio from the 1997 Grammy
awards. The AUDIOACTIVE Internet Audio Server runs Linux on a Pentium-
based PC with a modified Web server that supports as many as 100 to 200 real-
time audio connections.
7. Vistas uses TAO to map signs from camera angles at ball parks, e.g., manages
time expended, frequency and compensates for angles, players, umps, etc.
8. Broadbus uses TAO manage remote TV-on-demand, where all programming can
be stored in memory for delivery by local cable companies.
R&D Projects
1. ACE is used by the Software Research Laboratory (SRL), which is a cooperative
effort between the NASA Office of Safety and Mission Assurance (OSMA) and
West Virginia University.
2. ACE is being used as the networking component of the JX GUI library at Cal
Tech.
3. ACE and TAO are used in the Quality Objects (QuO) middleware for providing
quality of service (QoS) in distributed applications. TAO's CORBA Audio/Video
Streaming Service is used extensively in the Unmanned Aircraft Vehicle (UAV)
demonstration that is built on top of the QuO middleware. In addition, the WSOA
project at Boeing Corporation uses QuO on top of TAO for implementing
adaptive image delivery.
4. ACE and TAO are used in the Intrusion-Tolerant Gateway developed as part of
the ITUA project. The Gateway provides fault-tolerance, intrusion-tolerance, and
soft-realtime/consistency properties to CORBA applications.
5. ACE and TAO are being used for a DARPA Software enabled controls project at
Boeing, Georgia Tech, and UC Berkeley. A Yamaha R-50 Helicopter will be used
as the VTOL UAV testbed. Initially, the effort focuses on the development of
algorithms and integration of software components from other SEC contractors.
The Boeing Open System Architecture, which is based on ACE+TAO and is also
known as Boldstroke, provides the distributed computing architecture required to
develop and test control algorithms. Boldstroke provides the ideal ether by way of
which software algorithms at all levels (high, medium and low) can communicate
efficiently across a network of computers. A hardware-in-the-loop simulation of
the algorithms will then be performed demonstrating the algorithms. Based on the
outcome of this simulated demonstration the algorithms will be tested in unusual
Stavros Dimitriou ©London South Bank University 18
Workshop: Lab 9 Object Oriented Programming for Networking
flight situations. The helicopter carries an Avionics box with an Inertial
Measurement Unit, GPS and computer processors that allow control algorithms to
be implemented onboard the UAV. Ground station computers will monitor the
UAV during its flight using wireless Ethernet devices.
Healthcare Systems
1. ACE is being used by a SWi, a healthcare software company in Singapore, to
redesign an existing Interface Engine product into a 3 tier client/server
architecture.
2. ACE was used for enterprise-wide distributed medical imaging systems at Kodak
in Dallas and Washington University School of Medicine in St. Louis.
3. ACE and TAO are being used by GE for a variety of healthcare systems.
4. ACE and TAO are being used by Stentorsoft for a variety of radiology systems.
5. ACE and TAO are used for syngo, which is next-generation medical software
framework for Siemens Medical Engineering, Erlangen, Germany.
Data Storage
1. ACE and TAO are being used at Veritas (now Symantec) as the middleware
infrastructure for their distributed storage management systems.
2. StorageTek is using ACE in a new Storage Management product that will run on
MVS. The software development is being done primarily on Windows/NT and
Solaris platforms. Prototype code developed on NT and Solaris using ACE has
been successfully built and executed on MVS without requiring any change to the
source.
3. SUTMYN Storage Corporation are in the process of deploying TAO as a
communication mechanism in a future mass-storage device intended for
attachment to IBM plug-compatible mainframes and open systems. A core
principle of such mass-storage systems is the separation of data and control paths.
TAO will be used as follows:
o in the internal control paths, for traditional object-to-object method
invocation, where the objects are constrained to be in different processes,
and on different processors within our product
o in the event logging subsystem (it may be possible to use all of the real-
time event service), and
o in the external interfaces (those that do not involve data transfer), for
controlling and monitoring the device.
TAO will not be used in any data paths.
This system is implemented on an array of Intel-i960-based, custom SBCs running
VxWorks, an Intel-x86 subsystem running Solaris 2.6 and some number of
SPARC Ultra subsystems running Solaris 2.6. On the subsystems running Solaris,
Stavros Dimitriou ©London South Bank University 19
Workshop: Lab 9 Object Oriented Programming for Networking
several processes will be deployed on each processor. Since the processes are
heavily multithreaded, the thread-per-request style of concurrency will likely be
used.
Robotics
1. RECIPE, which is an image capture and processing system designed for use on
autonomous robots at the University of Bonn, Germany.
2. ACE+TAO are being used in a joint project at the Clinic of Craniofacial Surgery
of the University of Heidelberg and the engineers of the Institute of Process
Control and Robotics of the University of Karlsruhe to develop a computer and
robot-aided operating theatre.
Travel Planning and Reservation Systems
1. The Weather Channel uses TAO as the basis for their weather.com website.
2. AirSage is using ACE+TAO to provide an intelligent traffic road map based on
online analysis of cell phone signals. AirSage provides comprehensive traffic
information. AirSage utilizes anonymous and aggregate signaling data from
wireless carrier networks to provide traffic information for metropolitan areas and
rural highways throughout the country. Our patented technology delivers traffic
speeds, travel times, and other transportation information at a fraction of the cost
of traditional traffic monitoring solutions.
3. TAO is used by the Sabre Travel Network for their online reservation systems.
4. TAO is used by Travelocity for their online reservation systems.
5. ACE is used to connect travel agents to travel products and Airline Reservation
systems at Travel Industra Automated Systems (TIAS), Australia
6. MapQuest.com is using ACE to create a server framework from which a few (and
all future) servers are derived. By using ACE and some of its frameworks, has
made their development process much faster, but also portable.
Testing and Measurement Equipment
1. Integrated Measurement Systems in Beaverton, Oregon is using ACE in its
Vanguard High Speed Digital IC Validation System. A SIMD supercomputer used
in the development and test of the next generation of high-end microprocessors.
ACE is an integral part of the client server software which allows the Gigabit IC
validation system to be accessed from anywhere on the Internet.
2. ACE is used in a multiplatform tool to test the integrity of system platforms and
numerous configurations at Digital Equipment Corp (DEC).
3. Cadence Design Systems, Inc. is using portions of ACE for a current server that
lets multiple application communicate to an Integrated Circuit tester.
Stavros Dimitriou ©London South Bank University 20
Workshop: Lab 9 Object Oriented Programming for Networking
Assignment:
1. Read the information above and understand ACE.
2. Follow the instructions and download successfully the ACE environment.
3. Provide in a word fine and attach it in your logbook a complete and
comprehensive procedure on how can you install and run ACE under Microsoft
Visual Studio 6.
4. Explain how can you execute C++ network programs by using ACE?
5. What is the importance and significance of ACE in network programming?
Stavros Dimitriou ©London South Bank University 21