Figure 1-2. Once COM connects client and object, the client
and object communicate directly without added overhead.
In other words, COM, like a traditional system service API, provides the
operations through which a client of some service can connect to multiple
providers of that service in a polymorphic fashion. But once a connection is
established, COM drops out of the picture. COM serves to connect a client
and an object, but once that connection is established, the client and object
communicate directly without having to suffer overhead of being forced through a
central piece of API code as illustrated in Figure 1-2.
COM is not a prescribed way to structure an application; rather, it is a
set of technologies for building robust groups of services in both systems and
applications such that the services and the clients of those services can evolve
over time. In this way, COM is a technology that makes the programming, use, and
uncoordinated/independent evolution of binary objects possible. COM is
not a technology designed primarily for making programming necessarily
easy; indeed, some of the difficult requirements that COM accepts and
meets necessarily involve some degree of complexity.1. However, COM provides a ready base for extensions
oriented towards increased ease-of-use, as well as a great basis for powerful,
easy development environments, language-specific improvements to provide better
language integration, and pre-packaged functionality within the context of
application frameworks.
This is a fundamental strength of COM over other proposed object models:
COM solves the "deployment problem," the versioning and evolution problem where
it is necessary that the functionality of objects can incrementally evolve or
change without the need to simultaneously and in lockstep evolve or change all
existing the clients of the object. Objects and services can easily continue to
support the interfaces through which they communicated with older clients as
well as provide new and better interfaces through which they communicate with
newer clients.
To solve the versioning problems as well providing connection services
without undue overhead, the Component Object Model builds a foundation that:
Send feedback on this article. Find support options.
© 2001 Microsoft Corporation. All rights reserved. Terms of use.