Main Page | See live article | Alphabetical index

Component object model

Component Object Model (COM) is a Microsoft technology for software components, also known as ActiveX. It is used to enable cross-software communication. Although it has been implemented on several platforms, it is primarily used with Microsoft Windows. Its precursor was object linking and embedding (OLE), and it is to be replaced with the Microsoft .NET framework.

Table of contents
1 History of COM
2 COM+
3 Replacement of COM with .NET
4 Technical details
5 See also
6 External links

History of COM

One of the notable thinkers involved in creating the COM architecture was Anthony Williams, who embraced the concept of software components in his papers Object Architecture: Dealing With the Unknown - or - Type Safety in a Dynamically Extensible Class, 1988 and On Inheritance: What It Means and How To Use It, 1990.

COM began as the object linking and embedding (OLE) technology for compound documents, built on top of dynamic data exchange (DDE), and the VBX (Visual Basic eXtension) controls from Visual Basic 1.0, released in 1991. In 1992, Windows 3.1 was introduced and with it came OLE (or OLE 1).

In 1993, Microsoft released OLE 2, and in 1994 OCX or OLE controls were introduced as the successor to the VBX controls, at the same time stating that OLE was no longer an acronym, but a name for all of the company's component technologies.

In early 1996 Microsoft renamed some parts of OLE relating to the Internet ActiveX, and then gradually renamed what was once OLE (all component technologies) into ActiveX, while OLE took back the role as a compound document technology, as used in Microsoft Office. Later that year, DCOM was introduced as an answer to CORBA.

In September 1997, at the Microsoft Professional Developers Conference, the entire component framework was once again renamed into COM, the Component Object Model.


With the introduction of Windows 2000, COM was renamed COM+, to signify that substantial changes had been made to the component model. At the same time, DCOM was dropped conceptually.

The main new feature of COM+ was that it could be run in "component farms", managed with the built-in Microsoft Transaction Server. A component, if coded properly, could be reused by new calls to its initializing routine without unloading it from memory. Components could also be distributed (called from another machine) as was previously only possible with DCOM.

Replacement of COM with .NET

The COM technology has been strategically replaced by the Microsoft .NET initiative. There exists a limited backward compatibility in that a COM object may be used in .NET by implementing a runtime callable wrapper (RCW), and .NET may use COM objects by calling a COM callable wrapper, but for new systems COM is to be dropped entirely in favor of .NET.

Technical details

The interfaces of COM objects are distinguished from one another using a Globally Unique Identifier (GUID).

See also

External links