Adaptive Communication Environment ACE OF: Douglas C. Schmidt Translator: a Mahuida, ACE Summary ACE Adaptive Communication Environment (ADAPTIVE Communication Environment) is free to use, open source object-oriented (OO) framework (Framework), in Among them, many core modes for concurrent communication software are implemented. ACE provides a rich set of Wrapper Façade and architectural components that complete universal communication software tasks across multiple platforms, including: event multiplexing and event processor assignment, signal processing, service Initialization, inter-process communication, shared memory management, message routing, distributed service dynamics (heavy) configuration, concurrent execution, synchronization, and so on. ACE target users are developers of high performance and real-time communication services and applications. It simplifies the development of OO network applications and services using inter-process communication, event multiplexing, explicit dynamic links, and concurrent OO network applications. In addition, the ACE also automates the configuration and reconfiguration of the system through the dynamic link of the application at runtime and the application. ACE is undergoing continuous improvement. Riverace (http://www.riverace.com) uses open source business model to commercial support for ACE. In addition, many members of the ACE development group are currently undergoing development efforts of The Ace ORB (Tao, http://www.cs.wustl.edu/~schmidt/tao.html). Second, the benefits of using ACE use ACE benefits: l Enhanced portability: With the help of ACE components, it is easy to write concurrent network applications on a OS platform, and then transplant them into a variety of other OS. on the platform. Moreover, because ACE is free software for open source, you don't have to worry about being locked on a specific operating system platform or compiler. l Better software quality: ACE design uses many key modes that improve software quality, including communication software flexibility, scalability, reuse and modularity. l Higher efficiency and predictability: ACE is carefully designed, supporting a wide range of application service quality (QoS) requirements, including delay sensitive applications, high performance, high-bandwidth applications, and predictability of real-time applications . l Map easier to convert to standard advanced middleware: TAO uses the accessible components and modes provided by the ACE. It is the development source code of CORBA, following standard implementation, and optimized for high performance and real-time systems. To this end, ACE and TAO are designed to work well to provide a comprehensive middleware solution. Third, the structure and function of ACE The following figure shows the key components in ACE and their hierarchical relationships:
The structure and components of the drawings are described below. Fourth, the ACE OS adaptation layer This layer is directly located on the local OS API written in C. It provides a lightweight POSIX OS adaptation layer that blocks other layers and components in the ACE and the platform with the platform associated with the OS API. Specific characteristic shield: L concurrently and synchronized: ACE adapter layer packaged for more Thread, multi-process and synchronized OS API. l Inter-process communication (IPC) and shared memory: ACE adaptation layer encapsulates the OS API for local and remote IPCs, and shared memory. l Event multi-channel separation mechanism: ACE adaptation layer encapsulates an OS API for synchronizing and asynchronous multi-channel. l Explicitly dynamic link: ACE adaptation layer encapsulates an OS API for explicit dynamic links. Explicit dynamic links allow configuration services to be configured when installing or runtime. l File system mechanism: ACE adaptation layer encapsulates an OS file system API for operating files and directories. The portability of the ACE OS adaptation layer allows the ACE to operate on many operating systems. ACE has been transplanted and tested on a wide OS platform, including Win32 (that is, using MSVC , Borland C Builder and IBM Visual Age WINNT 3.5.x, 4.x, 2000, Win95 / 98 and Wince), Mac OS X, most versions of UNIX (for example, Solaris 1.x and 2.x, SGI IRIX 5.x, and 6.x, DG / UX, HP-UX 9 on SPARC and Intel). X, 10.x and 11.x, Dec / Compaq Unix 3.x, and 4.x, AIX 3.x, and 4.x, Unixware, SCO, and freely used UNIX implementations, such as Debian Linux 2.x, Redhat Linux 5.2, 6.x and 7.x, FreeBSD, and NetBSDs, real-time operating systems (such as Lynxos, VxWorks, Chorus Classix 4.0, QNX Neutrino, RTEMS, and PSOS, MVS Openedition, and Cray Unicos. Due to the abstraction provided by the ACE's OS adaptation layer, all of these platforms use the same code tree. Such a design greatly enhances the portability and maintainability of ACE. In addition, there is a Java version of ACE available (http://www.cs.wustl.edu/ toea1/jace.html). 5. The C packaging appearance of the OS interface can be directly written directly on the ACE OS adaptation layer. However, most ACE developers use the C packaging appearance layer shown in the above figure. By providing type C interfaces (these interface packages and enhances local OS concurrency, communication, memory management, event multiplex, dynamic links, file system APIs), ACE packaging appearance simplifies the development of applications. Applications can be combined and used by selectively inheriting, aggregating, and / or instantiating the following components: L concurrency and synchronous components: ACE objects such as mutex and semaphoremine and multi-process mechanisms Abstraction to create advanced OO concurrent abstraction, like active objects and polymorphic futures. l IPC and file system components: ACE C packages package local and / or remote IPC mechanisms, such as Socket, TLI, UNIX FIFO, and Stream pipes, and Win32 named pipes.
In addition, the ACE C packaging also encapsulates the OS file system API. l Memory Management Components: ACE Memory Management Components provides flexible and scalable abstractions to manage the dynamic allocation and release of the management process. ACE C packaging provides a number of features as the ACE OS adaptation layer. However, these features are constructed using C classes and objects, rather than independent C functions. Such OO packaging helps to reduce the efforts required to correctly learn and use ACE. For example, C uses to increase the robustness of the application because C packaging is a strong type. Therefore, the compiler can be compiled, not the runtime detection type system violation. Conversely, it is impossible to detect type system violations of the C-level OS API such as socket or file system I / O at runtime. ACE uses many techniques to reduce or eliminate additional performance overhead. For example, ACE uses C inline to eliminate additional methods to call overhead; this overhead can be brought by an additional type of security and abstract hierarchy provided by the OS adaptation layer and C packaging. In addition, packaging, such as Socket and File I / O, ACE avoids the use of virtual functions such as Socket and file I / O. 6. The architecture ACE also includes a advanced network programming architecture, integrated and enhanced lower level C packaging appearance. This architecture supports the dynamic configuration of concurrent distributed services. The architecture of the ACE includes the following components: l Event Multi-channel Separation Components: ACE Reactor and Proactor (front-taper) are scalable object-oriented multi-channel separators that assign a specific processor to respond to a variety of Types of events based on I / O, timers, signals, and synchronization. l Service Initialization Components: ACE Acceptor and Connector (Connector) components respectively make the initialization and passive initialization tasks with initialization once the application unique task decoupled. l Services Configuration Components: ACE Service Configurator supports application configuration, which is dynamically assembled when installing and / or runtime. l Layered flow components: The ACE STREAM component simplifies the development of communication software applications composed of hierarchical services such as user-level protocol stacks. l ORB Adapter Components: ACE can be seamlessly integrated with single thread and multi-thread CORBA through the ORB adapter. The ACE architecture can facilitate the development of communication software, which can be updated and extended without modifying, recompiling, linked, or frequently restarting applications in the run. In ACE, such flexibility is obtained by binding to the following elements: (1) C language characteristics, such as template, inheritance, and dynamic binding, (2) design patterns, such as abstract factories, policies, and service configuresters, and (3) OS mechanism, such as explicit dynamic links and multi-threaded. 7. Distributed services and components In addition to the OS adapter layer, C packaging appearance and architecture, ACE also provides a standard distributed service library packaged to be self-contained. Although these service components are not strict components of the ACE architecture, they play two roles in ACE: 1. Decompose "building blocks" that can be reused distributed applications: These service components provide universal distributed application tasks. Recover, such as name service, event route, log, time synchronization, and network lock.