概述: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.

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

  1. LINQ是死是活?——很奇怪为什么会有这样的话题?

    LINQ是死是活??? 如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊.所以我觉得"LINQ是死是活"的说法也很奇怪? ...

  2. 要么忙着活,要么忙着死

    1.不管你有多不开心,我们都有责任先吃好一顿饭,睡好一个觉,打扮好自己.很多烦恼,其实都没什么大不了,只是你在那个情境下,在那种心情里,庸人自扰罢了.所以无论发生什么,先善待自己,时间一过,自然会变好 ...

  3. 腾讯“微视”,还没活就被“美拍”拍死了?

    腾讯"微视",还没活就被"美拍"拍死了? http://mp.weixin.qq.com/s?__biz=MzA4ODc5MTgzNw==&mid=20 ...

  4. java冒泡排序(由简到繁,由死到活)

    如:int []arr= {25,69,80,57,13,}; 冒泡排序的基本思路(由小到大):a[0]与a[1]开始比较,如果前者大于后者,则前后进行交换,否则不做任何操作,这一步过后,较大的一个值 ...

  5. 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...

    ‍‍ 电脑出现死机是很常见的一种故障,造成的原因也有很多种.而最近有些用户的电脑经常死机,开机几分钟就死机,有时还会出现蓝屏,这到底是怎么回事呢?电脑经常死机是什么原因呢?下面小编结合自己的实际情况来 ...

  6. 死链提交为什么不能提交 html文件,百度死链提交的方法,百度死链提交的的作用...

    百度死链提交的的作用 博主先说说为什么要做百度死链提交?因为网站存在大量死链,将影响网站的站点评级,建议存在大量死链内容网站,使用百度死链提交.作用嘛,当然是对网站seo有好处的 百度死链接提交方式 ...

  7. rust石头高墙要维护吗_那些害死Haskell的,也会害死Rust

    原标题:那些害死Haskell的,也会害死Rust 作者 | Alexander Granin 译者 | 无明 0编者按 本文作者的中心思想不是唱衰 Rust 语言,正相反,他非常看重 Rust 语言 ...

  8. 电脑死机原因、和预防电脑死机技巧!!

    1.电脑死机原因? 2.如何预防电脑死机? (1)先介绍电脑死机原因! 无法启动系统,画面"定格"无反应,鼠标.键盘无法输入,软件运行非正常中断等.尽管造成死机的原因是多方面的,但 ...

  9. 计算机死机造成桌面数据丢失,导致电脑死机的原因以及数据恢复的方法总结

    导致电脑死机的原因以及数据恢复的方法总结 一,前言:电脑在使用的过程中,难免会有意外情况发生.比如是突然断电.意外关机.出现死机等情况,这些情况往往是难以预料以及避免的.而发生这些情况,不仅会对电脑造 ...

最新文章

  1. 10年读4个博士学位的“神之子”创办「莆田系」AI顶会,骗欧美学术精英,收报名费3688元...
  2. 2021年全球十大工程成就,中国有几个? | 科技袁人
  3. 华为路由器配置默认路由为什么配偶的下一跳不可达也可以_静态路由特性
  4. Hbase总结(三)-Hbase与Hive的区别与联系
  5. P2463-[SDOI2008]Sandy的卡片【SA,二分答案】
  6. oracle手注,oracle手注
  7. mysql支持多语言_多种语言连接MySQL-Go语言中文社区
  8. SAP License:一句话让你明白FICO
  9. C++库研究笔记——Linux下是否需要使用memory pool?
  10. 性能测试之LoardRunner 手动关联二
  11. 【Java后台】从零开始的Java后台开发(一)
  12. Wireshark详细使用教程
  13. 由PPP项目总结的几点项目经验
  14. activity 工作流引擎-流程表介绍
  15. java如何重命名class_java – 如何重命名XStream列表元素?
  16. android短信接收器的实现,可以实现自动填写短信验证码功能
  17. 8×8二维载荷谱编制
  18. 手机下载神器批量下载图片教程
  19. 从头开始学Redisson--------限流器
  20. Unity Shader - Planar Shadow - 平面阴影

热门文章

  1. mvp的全称_MVP、VIP……这些常见的英文缩写你知道它的全称吗?
  2. 4、SysTick定时器的理解
  3. 开发板udhcpc获取不到广电网络数字电视机顶盒ip问题解决
  4. d3.js实现股权穿透图(vue+d3.js)
  5. 哈夫曼树的构造(手写图解)
  6. 小米超神服务器响应超时,小米超神:玩家难以忍受的现象盘点,都经历过才知道什么是绝望...
  7. selenium.模拟键盘操作(Keys)
  8. SV 类的虚方法 多态
  9. vue plus.webview 实现 类似微信右上角 关闭小程序
  10. 利用anaconda的库使用jupyter生成圆角图形