Clients issue requests for services on objects and the server performs the requested service.
The clients are isolated from the object implementation through commonly defined interfaces which specify the makeup and operations associated with each object and how the operations on the object are provided. Clients seamlessly access the object implementation wherever that object implementation may reside, i.e., in a library on the same host as the client, in another process on the same host as the client, or on a different host from the client where the two hosts are connected by a network. IDL is the language used for defining interfaces. IDL is programming language independent. When IDL is compiled, the output is programming language source code.