【问题标题】:COM vs. native DLLCOM 与本机 DLL
【发布时间】:2012-01-10 06:20:08
【问题描述】:

与来自 .NET 的本机 DLL 相比,使用 COM 库有哪些优势。

我看到的一个原因是我不需要为 COM 库定义方法签名(与 P/Invoke 的 DllImport 相比)。还有其他的吗?

【问题讨论】:

  • 通常是因为它们已经存在。
  • 我不会将托管 .NET 程序集称为“本机”
  • @MitchWheat,我也一样

标签: .net dll com


【解决方案1】:

您可以在 COM 中创建对象模型,这是 pinvoke 无法实现的。与支持方法、属性和事件的 .NET 类非常相似。一个很好的例子是 Office 互操作命名空间(如 Microsoft.Office.Interop.Excel),在 Office 端以纯 COM 实现。

请注意,像这样高度可用的 COM 库使用 COM 自动化,它是 COM 的一个子集,旨在使不同语言之间的互操作变得非常容易。但它对您可以在方法声明中使用的类型类型施加了严格的限制。

用 C++ 编写 COM 代码并不是特别容易,尽管 ATL 和内置的 Visual Studio 向导可以提供很多帮助。请考虑改用 C++/CLI 语言。由于语言中内置的互操作支持,因此更容易上手。

【讨论】:

    【解决方案2】:

    如果您的意思是从互操作的角度来看 COM DLL 和本机(非托管)DLL 的区别,我会说 COM 服务器 (DLL/EXE) 更自然地映射到 .Net 代码样式(我的意思是,它们看起来像.Net 世界中的对象)。

    从开发人员的角度来看(需要决定何时使用 COM 或原生“原始”dll),我会说 COM 允许您拥有更好的功能分组(接口)(当然 COM 有更多报价 - 例如,属性、事件等。

    只是我的 0,02 ;)

    最好的

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2012-09-22
      • 1970-01-01
      • 2011-08-13
      • 2014-12-05
      • 2016-12-19
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多