154 IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS, VOL. 5, NO. 2, FEBRUARY 1994 A Service Acquisition Mechanism for Server-Based Heterogeneous Distributed Systems Rong N. Chang, Member, IEEE, and Chinya V. Ravishankar, Member, IEEE Abstract-This paper presents a mechanism that facilitates and enhances the use of independently administered remote network servers in the presence of server interface heterogeneity. The mechanism is designed under the client-service model, which extends the client-server model with an abstraction of service to decouple abstract server capabilities from concrete server inter- face specifics such as server interface binding protocols and the interface operation invocation protocols. The mechanism selects servers, accommodates server interface heterogeneity, and han- dles server access failures as per the abstract server capabilities desired by the client. It could return the identity of the server used for each service access invocation to facilitate billing, refining service specifications, and reporting server-specific errors. This paper also illustrates a C library interface to this mecha- nism, and describes a language veneer over the C programming language demonstrating how a typed procedural language could be extended by a few language constructs to support the mech- anism under the client-service model. In this language, server capabilities are referenced by abstract data type (ADT) objects, and are accessed by invoking the objects’ interface operations using a call-by-value-result paradigm. This language veneer also makes it easier to port the client software across to systems that use different service specification schemes. Our work suggests that this mechanism facilitates the develop- ment, use, and maintenance of client and server software in large heterogeneous distributed systems comprising many autonomous servers. It also shows that the overhead of invoking remote server operations via the mechanism can be quite low. Index Terms-Heterogeneous distributed systems, client-server model, client-service model, service acquisition mechanism, attribute-based naming, remote procedure call, server interface directory service, agent process, fault tolerance, object-oriented programming, language veneer. I. INTRODUCTION HIS paper presents the design and implementation of a T mechanism that facilitates and enhances the use of inde- pendently created and administered remote network servers in the presence of server interface heterogeneity. This mechanism [5] is designed under an extended client-server model called the client-service model. In this model, an abstraction of service is introduced to decouple abstract server capabilities from concrete server interface specifics such as server interface binding protocols and the interface operation invocation pro- Manuscript received November 12, 1991; revised December 15, 1992. This work was supported in part by a grant from Bell Northem Research, Inc. R.N. Chang was with the Department of Electrical Engineering and Computer Science, University of Michigan, Ann Arbor, MI 48109 and Bell Communications Research, Morristown, NJ 07962. He is now with IBM, White Plains, NY 10605. C.V. Ravishankar is with the Department of Electrical Engineering and Computer Science, University of Michigan, Ann Arbor, MI 48109. IEEE Log Number 92 14465. tocols. The mechanism selects servers, accommodates server interface heterogeneity, and handles server access failures as per the abstract server capabilities desired by the client. It could return the identity of the server used for each ser- vice access invocation to facilitate billing, refining service specifications, and reporting server-specific errors. This paper also illustrates a C library interface to this mecha- nism, and describes a language veneer over the C programming language [4] demonstrating how a typed procedural language may be extended by a few language constructs to support the mechanism under the extended client-server model. In this language, server capabilities are referenced by Abstract Dura Type (ADT) objects, and are accessed by invoking the objects’ interface operations using a call-by-value-result paradigm, independent of the interfaces exported by the servers in use. This language veneer also facilitates the development of ADT-like libraries to model available network services. Such libraries would greatly simplify the task of specifying services abstractly. Parametrized objects from the libraries may simply be included in the client software, making it easier to port the client software across to systems that use different service specification schemes. Our work suggests that this mechanism facilitate the devel- opment, use, and maintenance of client and server software in large heterogeneous distributed systems comprising many au- tonomous servers. It also shows that the overhead of invoking remote server operations via the mechanism can be quite low. A. Client-Server Computing Issues Before distributed computing came into vogue, resource management functions were provided solely by monolithic operating system kernels [16]. When many of these func- tions migrated out of the kernels into user-level processes to improve system maintainability, extensibility, scalability, and cost-performance ratios, user-level resource managers became known as servers and the service notion arose as a convenient abstraction of server capability [25], [26]. As centralized computing models became obsolete, the service notion evolved into a major abstraction for managing and using networked resources. The client-server model, which many current distributed computing systems use [22], represents the prevalent implementation of this approach. When the number of servers grows, however, the client- server model gives rise to an unsatisfactory paradigm for client applications to acquire server capabilities or compu- tational services. Since server capabilities cannot be cleanly decoupled from server interfaces in the client-server model, 1045-9219/94$04.00 0 1994 IEEE -