
{"id":950,"date":"2014-11-30T22:11:46","date_gmt":"2014-11-30T22:11:46","guid":{"rendered":"http:\/\/www.codergears.com\/Blog\/?p=950"},"modified":"2014-11-30T22:53:02","modified_gmt":"2014-11-30T22:53:02","slug":"com-is-dead-long-live-com","status":"publish","type":"post","link":"https:\/\/codergears.com\/Blog\/?p=950","title":{"rendered":"COM is dead, Long live COM."},"content":{"rendered":"<p>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.<!--more--><\/p>\n<p>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.<\/p>\n<p>The COM programming was very\u00a0recommended\u00a0by 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\u00a0language and many of\u00a0their evangelists changed the Cap. The message was very clear &#8220;C# is the best&#8221;.<\/p>\n<p>For example if you search in the Amazon web site \u00a0for COM books, most of them were published in 2000, only very few were released after this date.<\/p>\n<p><a href=\"http:\/\/www.codergears.com\/Blog\/wp-content\/uploads\/comm3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1089\" src=\"http:\/\/www.codergears.com\/Blog\/wp-content\/uploads\/comm3.png\" alt=\"comm3\" width=\"838\" height=\"525\" \/><\/a><\/p>\n<p>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\u00a0DotNet. And the countdown of the COM began in 2000.<\/p>\n<p>But even if after 2000, Micorosft stopped the\u00a0buzz arround\u00a0this technology, many projects chose to use it, and maybe the release of C#2 in 2005 was the KO of COM.<\/p>\n<p>Here&#8217;s from\u00a0<a href=\"http:\/\/www.google.com\/trends\/explore#q=component%20object%20model\">google trend<\/a> the interest over time of \u00a0the &#8220;Component Object model&#8221;.<\/p>\n<p><a href=\"http:\/\/www.codergears.com\/Blog\/wp-content\/uploads\/com.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1088\" src=\"http:\/\/www.codergears.com\/Blog\/wp-content\/uploads\/com.png\" alt=\"com\" width=\"808\" height=\"293\" \/><\/a><\/p>\n<p>As we can observe the COM is almost dead.<\/p>\n<p>But in 2011 Microsoft created a surprise when it\u00a0announced that WinRT is based on COM with some modifications. \u00a0And during this year we talked about the renaissance of C++ which became the first class\u00a0language\u00a0for this new framework.<\/p>\n<p>Finally COM is not dead, it was in a resuscitation room and it was succesufully resuscitated.<\/p>\n<p><strong>Why Microsoft decided to chose reusing COM ?<\/strong><\/p>\n<p>The renaissance of COM is more due to the renaissance of C++. When Microsoft Chose to come back to C++ as a &#8220;first-class citizen&#8221; of the WinRT-platform, they\u00a0needs 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&#8217;s true that COM has many disadvantages in the past, but Microsoft tried to resolve most of its problems in WinRT.<\/p>\n<p><strong>Why Microsoft chose to come back to C++?<\/strong><\/p>\n<p>Only Microsoft could tell us exactly why this choice. Maybe the fact\u00a0they\u00a0decided to target many plateforms ( PC, Tablet and phone) with the same technology influenced their decision. Tablets and phones have\u00a0less resources than PC, and chose C++ as base language of the WinRT framework is\u00a0more suitable for these targets.<\/p>\n<p><strong>The story continue&#8230;<\/strong><\/p>\n<p>It&#8217;s not the end of the story. Next year could bring other changes, DotNet framework was open sourced, \u00a0<a href=\"http:\/\/www.hanselman.com\/blog\/OmniSharpMakingCrossplatformNETARealityAndAPleasure.aspx\">OmniSharp<\/a> \u00a0and a collaboration with the mono community to make Dotnet woks in major plateforms (PC, Mac, \u00a0Android,&#8230;) \u00a0was annouced. Which could bring\u00a0many changes in the near future.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-950","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/posts\/950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=950"}],"version-history":[{"count":10,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/posts\/950\/revisions"}],"predecessor-version":[{"id":1099,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=\/wp\/v2\/posts\/950\/revisions\/1099"}],"wp:attachment":[{"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codergears.com\/Blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}