1. In a computer system having a processor, a memory, and a device connected to the computer system via a communication medium, an interface reference framework for providing system services for the device to a client application executing on the computer system, while insulating the client application from the details of how the device is connected to the computer system and how the system services, which access the device, are created, the interface reference framework comprising: (a) a plurality of service class definitions, each service class defining a service object having means for communicating according to a predefined interface; (b) a plurality of service maker class definitions in the memory, each service maker class defining a service maker object having means for creating in the memory a corresponding service object from one of the service class definitions; and (c) means for providing to the client application an interface reference object corresponding to the device, wherein the interface reference object includes means for receiving from the client application a top interface for defining a protocol for the system services for the device; means for creating a stack description in the memory, identifying a bottom service for communicating with the device, a top service for communicating with the client application according to the top interface, and an intermediate service for communicating with the top and bottom services over the communication medium according to their predefined interfaces; means for making from the stack definition a service stack in the memory and for returning a reference to the service stack to the client application so that the client application can use the service stack to communicate with the device according to the service protocol defined by the top interface, the means for making the service stack including means for iterating through the stack description and creating a corresponding service maker object in the memory from one of the service maker class definitions for each of the services identified in the stack definition; means for polymorphically activating the service maker objects to create a corresponding service object from one of the service class definitions to create the service stack having a top service object communicating with an intermediate service object, which, in turn, communicates with a bottom service object.