class="fontYH" style="padding: 10px 20px; margin: 0px 0px 20px; border-left-width: 5px; border-left-color: #eeeeee;"> 概述:COM全称为Component Object Model,即组件对象模型,是微软在1993年推出的用于软件组件的二进制接口标准。在上个世界90年代末COM异常风光,可是到新世纪后,COM曾一度被微软抛弃并濒临死亡,随着WinRT的出现和现代C++的复兴,COM将再度复苏。
COM全称为Component Object Model,即组件对象模型,是微软在1993年推出的用于软件组件的二进制接口标准,它被用于在大范围的编程语言类型中启动进程间的通信(inter-process communication)以及动态对象的创建。
COM的本质是以语言无关的方式实现对象,这种方式能够用于不同的创建环境中,甚至可以跨越机器的限制。对于创作良好的组件,COM允许在不知道内部如何实现的情况下进行对象重用,它促使组件实施者提供与实现相分离的定义良好的接口。
在.Net出现之前,微软对COM编程非常推崇。从1995年到2002年,有许多的书籍和网络资源都在谈论COM,COM+和DCOM。但是,自从微软决定确立C#为其推荐语言后,许多微软的追随者们便放弃了COM,他们表达出一种讯息:“C#才是最好的。”
举个例子,如果你在亚马逊网站上搜索COM书籍,其中绝大多数是来自于2000年,只有极少数晚于这个时间。
然而,具有讽刺意味的是,当COM如日中天的时候,微软决定使用新技术.Net来取代COM,而这个时间就开始于2000年。
但即使是2000年以后,在微软彻底放弃COM之后,仍然有许多的项目选择使用它。大约到2005年,C#2问世的时候,COM的日子就算到头了。
下图是来自于google trend上关于“组件对象模型”感兴趣度随时间推移变化的图表:
我们可以看到COM目前已经几近死亡。
转机出现在2011年,微软宣布基于COM的WinRT将会作出一些修改。然后在这一年里,我们开始讨论C++的复兴,而新的C++就是这个框架内最好的语言。
最终,COM没有彻底的死去,它在进入一个复苏的阶段,而这会是一次成功的复苏。
为什么微软会决定重新启用COM?
COM的复兴更多是来自于C++的复兴。当微软选择将回归到C++,并将其作为WinRT平台“最好的住户”时,他们需要一门技术来定义来自于.Net语言的组件并使用它们。为什么微软会选择重新启用COM?那是因为COM技术在多年以前就已经由微软的开发团队使用和验证了,虽然COM过去有很多的缺点,但是微软已经决定在WinRT上解决其中的大部分问题。
为什么微软会选择回归到C++?
这个问题的答案只有微软自己才能解答。或许是因为他们决定使用由他们自己主导的相同技术来发展多个平台(个人电脑、平板电脑和手机)。在开发资源上,平板电脑和手机相比个人电脑来说更少,因此选择C++作为WinRT框架的基本语言是最佳的选择。
故事还在继续…
这不是故事的结局,随着.Net框架的开源、OmniSharp和mono社区合作确定将.Net运用于主要平台(PC, Mac, Android…) 等消息的宣布,不久的将来会产生很多的变化。
?
本文翻译自COM is dead, Long live COM.