Component Object Model (COM) is a binary-interface standard for software components introduced by Microsoft in 1993. It is used to enable inter-process communication and dynamic object creation in a large range of programming languages.

The essence of COM is a language-neutral way of implementing objects that can be used in environments different from the one in which they were created, even across machine boundaries. For well-authored components, COM allows reuse of objects with no knowledge of their internal implementation, as it forces component implementers to provide well-defined interfaces that are separated from the implementation.

The COM programming was very recommended by Microsoft until the release of DotNet. Indeed, between 1995 and 2002 many books and web resources talk about COM, COM+ and DCOM. But Microsoft decided to make C# its prefered language and many of their evangelists changed the Cap. The message was very clear “C# is the best”.

For example if you search in the Amazon web site for COM books, most of them were published in 2000, only very few were released after this date.

However, it is an irony that when the COM was in the top of its using, Microsoft decided to let it down and focus more on its new technology DotNet. And the countdown of the COM began in 2000.

But even if after 2000, Micorosft stopped the buzz arround this technology, many projects chose to use it, and maybe the release of C#2 in 2005 was the KO of COM.

Here’s from google trend the interest over time of the “Component Object model”.

As we can observe the COM is almost dead.

But in 2011 Microsoft created a surprise when it announced that WinRT is based on COM with some modifications. And during this year we talked about the renaissance of C++ which became the first class language for this new framework.

Finally COM is not dead, it was in a resuscitation room and it was succesufully resuscitated.

Why Microsoft decided to chose reusing COM ?

The renaissance of COM is more due to the renaissance of C++. When Microsoft Chose to come back to C++ as a “first-class citizen” of the WinRT-platform, they needs a technology to define components and use them from the DotNet languages. Why reinvent the wheel? The COM technology was already used and validated by the Microsoft developement team for many years. It’s true that COM has many disadvantages in the past, but Microsoft tried to resolve most of its problems in WinRT.

Why Microsoft chose to come back to C++?

Only Microsoft could tell us exactly why this choice. Maybe the fact they decided to target many plateforms ( PC, Tablet and phone) with the same technology influenced their decision. Tablets and phones have less resources than PC, and chose C++ as base language of the WinRT framework is more suitable for these targets.

The story continue…

It’s not the end of the story. Next year could bring other changes, DotNet framework was open sourced, OmniSharp and a collaboration with the mono community to make Dotnet woks in major plateforms (PC, Mac, Android,…) was annouced. Which could bring many changes in the near future.