COM和.NET有什么区别?

时间:2009-05-13 20:48:24

标签: .net com

复制

  

What is the difference between net components and com components

COM和.NET之间的确切区别是什么? .NET是一个简单的COM外壳还是完整的东西 不同?

5 个答案:

答案 0 :(得分:5)

有很多不同之处,.NET绝对不是COM的外衣。

一些主要的区别是:

  • 虽然COM和.NET都编译为DLL文件,但.NET DLL(称为Assemblies)是使用Common Language Runtime运行的,.NET Framework是一个虚拟机,可以处理某些事情,如内存管理,线程,垃圾代码运行时的集合和安全性。

  • .NET程序集不一定需要“注册”,因为COM DLL需要在计算机的注册表中注册。

  • .NET附带了一个完整的对象框架,可以构建,使用或扩展它们以实现各种任务。该框架比旧的Visual Studio软件包附带的COM库更全面。

我确信还有更多可以说的......你可以几乎认为.NET是一个在Windows上运行的额外操作系统层 - 它非常广泛。 {{3}}的维基百科条目可能是开始阅读的好地方。

答案 1 :(得分:2)

完全不同......

.NET在公共运行时之上提供了一整套语言(更不用说JIT编译和MSIL)。

COM确实提供了一种注册共享程序集并通过软件上方的层重用代码的方法。

答案 2 :(得分:2)

.NET提供了一个虚拟机,一个扩展的代码库和一个类似Java的字节码(中间语言),您的程序将被编译到其中。

COM只是一个二进制互操作性标准,用于创建对象并允许它们相互交互。

.NET支持COM通信,以及许多其他互操作模型。它本身比COM本身要大得多。

答案 3 :(得分:1)

正如Monty Python所说,它是完全不同的东西。 .NET for one允许您选择“注册”(GAC)或不选择(本地目录)。但没有一个确切的区别。

答案 4 :(得分:0)

在COM之后,已经引入了.NET来克服COM问题。只是提一些优点:

  • .NET是一个运行时环境(CLR),它具有垃圾收集(不仅仅是引用计数),Commom类型系统(CTS),代码访问安全性(CAS),基类库(BCL),富框架等
  • .NET语言编译器不会创建Win32代码,而是生成中间语言(IL)代码。
  • 严格地说COM只是一个接口规范。

Microsoft使用COM来实现90年代的技术:OLE,ActiveX,DirectX等。这些技术仍在使用COM开发。然而,新的现代技术正在使用.NET:Windows Presentation Foundation(WPF),Windows Communitation Foundation(WCF),许多研究项目......