The ADAPTIVE Service Executive: An Object-Oriented Architecture for Configuring Concurrent Distributed Communication Systems Douglas C. Schmidt and Tatsuya Suda schmidt@ics.uci.edu and suda@ics.uci.edu Department of Information and Computer Science University of California, Irvine, CA 92717, (714) 856-4105 1 An earlier version of this paper appeared in the proceed- ings of the 8 IFIP International Working Conference on Upper Layer Protocols, Architectures, and Applications in Barcelona, Spain, June 1994. Abstract The ADAPTIVE Service eXecutive (ASX) is an object- oriented framework that enhance the development of dis- tributed applications across a range of operating system platforms. The components in ASX were developed using object-oriented design techniques and C++ language fea- tures in order to simplify the use of OS mechanisms that pro- vide interprocess communication, communication port de- multiplexing, explicit dynamic linking, and concurrency. In addition, the ASX components automate many system con- figuration and reconfiguration steps by dynamically linking network services into applicationsat run-time and arranging to execute these services on one or more processes or threads. This paper describes the structure and functionality of ASX and presents several examples illustrating key ASX features. 1 Introduction Developing communication systems that effectively utilize multi-processing and network services is a promising tech- nique for increasing system performance, scalability, and cost effectiveness. However, complex distributed communi- cation systems (such as on-line transaction processing sys- tems, manufacturing process controllers, distributed object managers, and global mobile communication systems) typ- ically exhibit reliability, functionality, efficiency, and porta- bility requirements that are challenging to satisfy simultane- ously. To meet these challenges, developers must address many topics that are not relevant or are less problematic for stand-alone applications, including (1) local and remote interprocess communication (IPC) facilities, (2) system con- figuration management techniques that permit the flexible 1 This material is based upon work supported by the National Science Foundation under Grant No. NCR-8907909. This research is also supported in part by grants from the University of California MICRO program, Nippon Steel Information and Communication Systems Inc. (ENICOM), Hitachi Ltd., Hitachi America, and Tokyo Electric Power Company. insertion, modification, and removal of services from appli- cations at installation-time and during run-time, (3) process and thread creation, synchronization, communication, and termination mechanisms, and (4) debugging and monitoring support for tracking application behavior. Object-oriented design and implementation techniques of- fer a variety of principles, methods, and tools that help to alleviate complexity related to developing distributed com- munication systems. This complexity emanates from factors such as non-type-secure, non-portable, and non-extensibleli- brary and system call interfaces, as well as a lack of efficient higher-level network programming abstractions that leverage off the increasing availability of advanced OS mechanisms such as explicit dynamic linking and multi-threading. To illustrate how object-oriented techniques are being success- fully applied in several commercial and research projects, this paper examines the structure and functionality of the ADAP- TIVE Service eXecutive (ASX) framework. This framework facilitates the development, configuration, and experimenta- tion with concurrent, multi-service distributed communica- tion systems composed of singleton and/or hierarchically- related services [1]. The ASX framework leverages off a collection of C++ components that (1) support dynamic configuration of application services, (2) consolidate com- mon distributed application activities (such as connection management, external data conversion, reliable data trans- fer, I/O-based and timer-based event demultiplexing, service dispatching, content-based message routing, status logging, and inter-connection of hierarchically-related communica- tion services) within reusable C++ classes and frameworks, and (3) take advantage of available OS multi-threading and multi-processing mechanisms in a flexible manner. This paper is organized as follows: Section 2 reviews relevant background material; Section 3 describes the pri- mary features and object-oriented architecture of the ASX framework; Section 4 outlines several research projects and commercial communication systems that utilize components in the ASX framework; and Section 5 presents concluding remarks. 1