Component Object Model

More commonly referred to by its acronym: COM

MicroSoft vendor-specific defacto binary standard for objects/components.
  See also: ComPlus

COM is a framework for creating and using objects. COM, the Component Object Model delivers on the long promised benefits of object technology: code reuse and off the shelf components. How does it do this? By providing a standard way to create and use components with a wide choice of tools, languages and applications. What is the most direct way to measure the success of COM? It provided the only currently viable component marketplace, a market currently sized at $410 million dollars just for third party components. This number excludes Microsoft built components and is projected to grow at 65 percent a year, to approximately 3 billion dollars by 2001.

COM services are provided in a standard way, whether those services are required within a single running process, within two different processes on the same machine, or on two different processes across a network using DCOM. COM is about choice; it provides the choice of the highest volume languages and tools available, as well as the largest base of applications. COM also provides choice in the area of security, as it provides a common interface (SSPI) where various security providers can be plugged in. COM also provides choice of network transport.

The COM specification has been complete since the end of 1992. Since then additions have been made, such as DCOM, but applications that worked then still work now. Unlike CORBA, COM provides the major elements necessary for a technology to succeed:
  1. a solid specification,
  2. a single reference implementation which has been ported to multiple platforms.
COM is ubiquitous; it is found on millions of systems worldwide and is a key part of most Microsoft software. Now that major systems Vendors such as HP, DEC and SNI have announced plans to ship COM on their systems within the year, COM will be used to create and use three-tier applications in many environments.

Also, ComponentObjectModel is:

And ComIsLove!
The differences between ComProgramming? and standard ObjectOrientedProgramming, as quoted from the foreword by CharlieKindel? in EssentialCom by DonBox:

ObjectOrientedProgramming = Polymorphism + (Some) Late Binding + (Some) Encapsulation + Inheritance

ComponentOrientedProgramming = Polymorphism + (Really) Late Binding + (Real, Enforced) Encapsulation + Interface Inheritance + Binary Reuse

The best short paper I've seen on COM is

How does it relate to the CommonObjectRequestBrokerArchitecture (a.k.a CORBA)?

They compete (see ComVsCorba) but can talk to each other. COM <-> CORBA bridging is defined by an OMG standard (partially written by Microsoft).

It helped inspire CrossPlatformLightweightComponents, along with XpCom. -- PierrePhaneuf

And going, going, ...

If you think COM stinks too, check out WhyAnotherComponentTechnology.

CategoryComponentObjectModel CategoryComponents

EditText of this page (last edited December 2, 2009) or FindPage with title or text search