WHY COM?

2007-06-01 13:03

[c++, google]

为何很多大型程序都使用了COM?

COM 对程序有什么价值?

使用了COM作为框架的程序:

  • Firefox, 搜索idl能找到很多文件,并且实现了跨平台的XPCOM,非常优秀的程序。
  • IE, 自然使用了Window平台内置的COM

我的机器上安装了一些Google的程序,我查看了一下:

有必要说明的是很多程序为了和IE,Shell交互必须使用COM实现一些接口,如 Google Toolbar,但是有些程序为了暴露API給开发者也使用了COM,如GoolgeTalk, RealPlayerSDK,MSN等。

编写小程序的确不应该用COM,依赖注册表,还有TypeLibrary等问题,的确不划算。但是有复杂进程通讯,复杂界面和逻辑交互的程序使用COM的确有不少好处:

  • 几乎能在任何需要的地方方便的得到任何需要的对象。避免使用可耻的全局变量。
  • 不用担心对象生存期和泄露问题,COM内置的引用计数解决了这个问题,当然接口泄露也会开始折磨程序员。
  • 接口定义是强制性的了。

我个人倾向于使用COM,但是应该避免使用注册表,复杂的ConnectionPoint等技术。