【发布时间】:2010-10-15 20:45:33
【问题描述】:
.NET 组件和 COM 组件有什么区别,有时我们使用 .NET 组件包含在我们的项目中,有时我们包含 COM 引用。背后的想法是什么?
【问题讨论】:
.NET 组件和 COM 组件有什么区别,有时我们使用 .NET 组件包含在我们的项目中,有时我们包含 COM 引用。背后的想法是什么?
【问题讨论】:
.NET 组件是托管代码(内存处理已为您完成)
COM 是软件组件的接口标准。 COM 组件是非托管代码(使用引用计数执行内存处理)。
来自here:
COM 和 .NET 有什么关系?
COM 和 .NET 是互补的发展 技术。 .NET 通用语言 运行时提供双向、 与 COM 的透明集成。这 意味着 COM 和 .NET 应用程序 和组件可以使用功能 从每个系统。这可以保护您的 对 COM 的现有投资 应用程序,同时允许您 在受控的情况下利用 .NET 步伐。 COM 和 .NET 可以实现类似的 结果。 .NET 框架提供 拥有大量开发人员 的好处,包括更强大, 基于证据的安全模型, 自动内存管理和原生 网络服务支持。对于新 开发,微软推荐.NET 作为首选技术,因为 其强大的托管运行时 环境和服务。
【讨论】:
.NET 组件在 CLR 中运行,而 COM 组件本质上是原生 Windows DLL。
.NET 组件也比 COM 组件公开更多的元数据。进行这种重新设计的部分原因是为了使组件更具互操作性。特别是,.NET 组件不会对数据布局和调用约定做出特定于平台的假设。
见Don Box。
【讨论】:
COM 组件是非托管 C++ 代码组件,旨在使软件在二进制级别可重用。 NET 组件虽然相似 1) 它们可以在 CLR 语言上创建,而 COM 组件只能用 C++ 构建 2) 它们旨在在托管运行时下运行。我认为这些是基本的区别。
编辑:
C++ 是 COM 中最“自然”的语言,但 COM 组件可以用多种语言创建。感谢 cmets 人。
【讨论】: