当前位置:  开发笔记 > 编程语言 > 正文

.NET组件和COM组件之间有什么区别

如何解决《.NET组件和COM组件之间有什么区别》经验,为你挑选了3个好方法。

.NET组件和COM组件之间有什么区别,有时我们使用.NET组件包含在我们的项目中,有时我们包含COM引用.背后的想法是什么?提前致谢.



1> Mitch Wheat..:

.NET组件是托管代码(内存处理已完成)

COM是软件组件的接口标准.COM组件是非托管代码(使用引用计数执行内存处理).

从这里:

COM和.NET如何相关?

COM和.NET是互补的开发技术..NET公共语言运行时提供与COM的双向,透明集成.这意味着COM和.NET应用程序和组件可以使用每个系统的功能.这可以保护您在COM应用程序中的现有投资,同时允许您以受控的速度利用.NET.COM和.NET可以实现类似的结果..NET Framework为开发人员提供了大量优势,包括更强大,基于证据的安全模型,自动内存管理和本机Web服务支持.对于新开发,Microsoft建议使用.NET作为首选技术,因为它具有强大的托管运行时环境和服务.


托管与未托管完全没有区别。您也可以使用.NET语言创建COM组件。这样的问题并不正确,因为.NET组件和COM组件不是互补的。
您可以使用regasm来使用COM中的任何.NET组件; 它仍然是一个.NET组件,但......
@米奇:我认为你应该纠正你的答案。还有许多COM组件是用VB6编写的,它使用引用计数自动处理内存。这就是为什么您的观点COM == unmanaged与.NET == managed不正确。

2> Hernán..:

COM组件是非托管C++代码组件,旨在使软件在二进制级别可重用..NET组件类似,1)它们可以在CLR语言上创建,而COM组件只能用C++构建2)它们是在托管运行时下运行的.我认为这些是本质区别.

编辑:

C++是COM中最"自然"的语言,但COM组件可以用多种语言创建.感谢大家的评论.


这不是真的.COM组件可以用许多不同的语言创建,其中包括C++,VB和.NET语言,如C#或VB.Net

3> harpo..:

.NET组件在CLR中运行,而COM组件本质上是本机Windows DLL.

.NET组件还暴露出比COM组件更多的元数据.重新设计的部分原因是为了使组件更具互操作性.特别是,.NET组件不会针对数据布局和调用约定做出特定于平台的假设.

见唐盒子.


CLR真的是用COM编写的吗?我知道很多框架库是现有COM库的包装器,但实际的运行时本身是否使用COM库?
推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有