杆死根活的COM:逝者不死,必将再起,其势更猛

jopen 10年前

        英文原文:COM is dead, Long live COM.

        COM 全称为 Component Object Model,即组件对象模型,是微软在 1993 年推出的用于软件组件的二进制接口标准,它被用于在大范围的编程语言类型中启动进程间的通信(inter-process communication)以及动态对象的创建。

        COM 的本质是以语言无关的方式实现对象,这种方式能够用于不同的创建环境中,甚至可以跨越机器的限制。对于创作良好的组件,COM 允许在不知道内部如何实现的情况下进行对象重用,它促使组件实施者提供与实现相分离的定义良好的接口。

        在 .Net 出现之前,微软对 COM 编程非常推崇。从 1995 年到 2002 年,有许多的书籍和网络资源都在谈论 COM,COM+ 和 DCOM。但是,自从微软决定确立 C# 为其推荐语言后,许多微软的追随者们便放弃了 COM,他们表达出一种讯息:“C#才是最好的。”

        举个例子,如果你在亚马逊网站上搜索 COM 书籍,其中绝大多数是来自于 2000 年,只有极少数晚于这个时间。

杆死根活的COM:逝者不死,必将再起,其势更猛

        然而,具有讽刺意味的是,当 COM 如日中天的时候,微软决定使用新技术 .Net 来取代 COM,而这个时间就开始于 2000 年。

        但即使是 2000 年以后,在微软彻底放弃 COM 之后,仍然有许多的项目选择使用它。大约到 2005 年,C#2 问世的时候,COM 的日子就算到头了。

        下图是来自于 google trend 上关于“组件对象模型”感兴趣度随时间推移变化的图表:

杆死根活的COM:逝者不死,必将再起,其势更猛

        我们可以看到 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…) 等消息的宣布,不久的将来会产生很多的变化。

        转载请注明“文章转载自:慧都控件网”和原文地址 http://www.evget.com/article/2014/12/2/21886.html