选择com的原因

时间:2009-12-05 10:48:57

标签: c++ com

我想知道为什么会选择Com作为他的软件开发“技术”

我的第一个是机器/编程_语言独立性

你的是什么?

4 个答案:

答案 0 :(得分:9)

COM是Windows上自动化和IPC的事实上的标准(尽管.Net已经开始转移焦点),因此有些领域你根本没有(或者没有)选择:

  • Shell扩展
  • 在COM上构建ActiveX
  • Internet Explorer扩展程序
  • 扩展MS Office应用程序
  • 使用一个二进制文件的JScript,VBScript,...的可编写性

在.Net事件发生之前,几乎所有MS应用程序的自动化都是通过COM进行的,而且一些公司也开始使用该列车。

如果您愿意将自己限制在Windows中,DCOM也是一种可靠且经过验证的分布式组件技术。

答案 1 :(得分:2)

COM的主要优势在于它是一种广泛适用的互操作技术。

  • Windows在Windows上得到了很好的支持,无需安装任何东西。
  • 它为托管/非托管应用程序和不同语言的应用程序的各种组合提供了丰富的互操作功能 - 客户端不关心服务器的工作方式,反之亦然。
  • 如果您已经拥有一个非常大的非托管代码库(例如我们有数百万行C ++代码)并希望以各种语言向客户端公开它的功能COM绝对是您的选择 - ATL使得创建COM服务器非常容易并且客户可以毫不费力地使用。
  • 不要忘记COM +,如果你有一个32位非托管进程内COM服务器并希望将它暴露给64位客户端,那就太好了 - 很多时候你只需要点击几下鼠标就不需要了编码任何新的东西。
  • COM支持线程模型(有关详细信息,请参阅this article),可让您确定COM组件需要多少可伸缩性以及您愿意支付多少费用,并且任何客户端都无法滥用您的COM组件组件并因并发访问数据而受到伤害。

答案 2 :(得分:0)

正如gf所说,人们用它来实现自动化。此外,Windows的大部分只能作为COM对象访问。 DirectX就是一个例子。

答案 3 :(得分:0)

我的第一个想法是 - 不要!如果你可以远离COM / DCOM。

当然,如果您需要与遗留应用程序集成,您将别无选择,但即使这样,也只能使用COM来跨越托管/非托管边界。

如果旧版兼容性不是问题 - 请保持管理。 .NET拥有COM可以提供的所有功能。并且.NET代码的复杂性和稳定性无法与等效的COM代码进行比较。

我一直在使用Visual Studio集成。最初它是所有COM,但MS慢慢地将其中的各个部分转换为托管。基于MEF的新编辑器框架将所需代码的数量减少了几个数量级。而且没有搞乱注册表。这样的解脱。