.NET 组件和 COM 组件有什么区别?我们有时会在项目中使用 .NET 组件,有时又会包含 COM 引用。这背后的原理是什么?
.NET 组件是托管代码(内存回收由系统自动完成)
COM 是软件组件的接口标准。COM 组件是非托管代码(内存处理通过引用计数实现)。
从这里得知:
COM 和 .NET 有什么关系?
COM 和 .NET 是互补的开发技术。.NET 公共语言运行时提供与 COM 的双向透明集成。这意味着 COM 和 .NET 应用程序和组件可以使用彼此的功能。这保护了您在 COM 应用程序中的现有投资,同时使您能够以受控的速度利用 .NET。COM 和 .NET 可以实现类似的结果。.NET 框架为开发人员提供了许多好处,包括更强大、基于证据的安全模型、自动内存管理和本地 Web 服务支持。对于新开发,Microsoft 建议使用 .NET 作为首选技术,因为它具有强大的托管运行时环境和服务。
.NET组件运行在CLR中,而COM组件本质上是本地的Windows DLL。
.NET组件还公开了比COM组件更多的元数据。这种重新设计部分是为了使组件更具互操作性。特别是,.NET组件不会对数据布局和调用约定进行平台特定的假设。
请参见Don Box。