Our ORB implementation reflects these beliefs as follows, Remote object invocation is merely another style of component interaction to be chosen by the programmer when it suits the task at hand. The IDL compiler is therefore relegated to a factory of object-based interactions. Our implementation is more efficient than at least one commercial implementation, validating our belief in lightweight protocols. Furthermore the framework, in which our implementation is rooted, facilitates construction and modification of lightweight intra-ORB protocols allowing the QoS aspects of a binding to be monitored and varied on demand. This allows use of alien name-servers while not penalising it.
Clients construct proxy objects to manage the binding on their behalf.
This contrasts with the inherently first-party approach of getting an invocation handle only after binding. IDL interface types are treated as passive object references, not as bound proxies. This improves code for programs that handle references, but don't use the objects referenced. Code generated by the IDL compiler is compact, in a single include file. Where the underlying protocol supports it, there is no penalty for large interfaces.