Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
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