选择com的理由
Posted
技术标签:
【中文标题】选择com的理由【英文标题】:reasons for choosing com 【发布时间】:2009-12-05 10:48:57 【问题描述】:我想知道为什么有人会选择 Com 作为他的软件开发“技术”
我的第一个想法是机器/编程_语言独立
你的是什么?
【问题讨论】:
我认为现在使用 COM 的唯一正当理由是使用遗留的东西。如果我错了,请纠正我,但 .NET 不能取代 COM? 曾经尝试在本地应用程序中使用 .Net? ;) 【参考方案1】:COM 是 Windows 上自动化和 IPC 的事实标准(尽管 .Net 已经开始转移焦点),因此有些领域您根本没有(或没有)选择:
外壳扩展 ActiveX 基于 COM 构建 Internet Explorer 扩展程序 扩展 MS Office 应用程序 JScript、VBScript 等的脚本编写能力,一个二进制文件在 .Net 事件之前,几乎所有 MS 应用程序的自动化都是通过 COM 实现的,而且相当多的公司也搭上了这列火车。
如果您愿意将自己限制在 Windows 上,DCOM 也是一种可靠且经过验证的分布式组件技术。
【讨论】:
【参考方案2】:COM 的主要优势在于它是一种广泛适用的互操作技术。
COM 在 Windows 上得到很好的支持,无需安装任何东西。 它为托管/非托管应用程序和不同语言的应用程序的各种组合提供丰富的互操作功能 - 客户端不关心服务器的工作方式,反之亦然。 如果您已经有一个大型非托管代码库(例如,我们有数百万行 C++ 代码)并希望以各种语言向客户端公开其功能 COM 绝对是您的选择 - ATL 使创建 COM 服务器变得非常容易客户无需额外努力即可使用。 不要忘记 COM+,如果您有一个 32 位非托管 in-proc COM 服务器并希望将其公开给 64 位客户端,这将是非常棒的 - 很多时候您只需要点击几下鼠标就不需要编写任何新的代码。 COM 支持线程模型(有关详细信息,请参阅 this article),它可以让您决定您需要从 COM 组件获得多少可扩展性以及您愿意为此支付多少费用,并且没有客户端能够滥用您的组件和因并发访问数据而受伤。【讨论】:
【参考方案3】:正如 gf 所说,人们将其用于自动化。此外,Windows 的大部分内容只能作为 COM 对象访问。 DirectX 就是一个例子。
【讨论】:
【参考方案4】:我的第一个想法是——不要!!!如果你能远离 COM/DCOM。
当然,如果您需要与旧版应用程序集成,您将别无选择,但即便如此,也只能使用 COM 来跨越托管/非托管边界。
如果旧版兼容性不是问题 - 保持管理。 .NET 拥有 COM 可以提供的一切,还有一些。 .NET 代码的复杂性和稳定性是等效的 COM 代码无法比拟的。
我使用 Visual Studio 集成已经有一段时间了。最初它都是 COM,但 MS 慢慢将它的各个部分转换为托管。基于 MEF 的新编辑器框架将必要的代码量减少了几个数量级。并且没有弄乱注册表。这样的解脱。
【讨论】:
以上是关于选择com的理由的主要内容,如果未能解决你的问题,请参考以下文章
选择 Prometheus 的理由,Prometheus 使用 Golang