Previous | Table of Contents | Next |
CORBA provides a multiple inheritance model for aggregating and extending object interfaces. Resulting CORBA interfaces are,
essentially, statically defined either in OMG IDL files or in the Interface Repository. Run-time interface evolution is possible
by deriving new interfaces from existing ones. Any given CORBA object reference refers to a CORBA object that exposes, at
any point in time, a single most-derived interface in which all ancestral interfaces are joined. The CORBA object model does
not support objects with multiple, disjoint interfaces.1
In contrast, COM objects expose aggregated interfaces by providing a uniform mechanism for navigating among the interfaces
that a single object supports (that is, the QueryInterface method). In addition, COM anticipates that the set of interfaces
that an object supports will vary at run-time. The only way to know if an object supports an interface at a particular instant
is to ask the object.
Automation objects typically provide all Automation operations in a single “flattened? IDispatch interface. While an analogous
mechanism to QueryInterface could be supported in Automation as a standard method, it is not the current use model for OLE
Automation services.2