A network service acquisition mechanism for the client/service model.
Rong Chang · Deep Blue (University of Michigan) · 1990
Three of the most important issues in exploiting network servers in existing heterogeneous systems are the problems of service specification, fault tolerance, and system integration. The service specification issue concerns how to specify services so that service-server bindings can be changed dynamically without disturbing clients. The fault tolerance issue concerns how to make clients resilient to network or server failure. The system integration issue concerns how to accommodate server protocol heterogeneity to provide a single system view to the clients. This thesis proposes a service acquisition mechanism to solve these issues. This mechanism is designed under a new computational model called the client/service model. This model extends the client/server model with a new abstract entity to make the notion of service a first-class concept. This new abstract entity appears to the client as a service provider, and to the server as a service requester. This mechanism is evaluated through the design and implementation of a prototype heterogeneous distributed system called Cygnus. While different servers in this system may support different access mechanisms, their interface operations are abstracted as services and specified by an attribute-based naming scheme. They need not be modified to make them accessible to Cygnus clients. We have also designed and implemented a programming language called CygnusC to demonstrate how a typed procedural language like ANSI C can be extended to support the proposed mechanism, though the mechanism can be used within a C program through a set of library routines. The service abstraction facilities provided by CygnusC in the Cygnus distributed system (1) allow programs to specify and access network services based upon their properties, (2) enable the compiler to type check the operations on attribute values, to incorporate users' code for validating service specifications, and to type check every service access operation, and (3) permit the service acquisition runtime to change service-server bindings whenever necessary without disrupting the services in use. Our preliminary results show that it is useful and feasible to embed the Cygnus service acquisition mechanism into a typed procedural language for accessing network services in a large heterogeneous distributed system.