COM和.NET有什么区别?

5
5个回答

6
有很多不同之处,.NET绝对不是COM的掩护。
一些主要的区别如下:
- 尽管COM和.NET都编译为DLL文件,但.NET DLL(称为程序集)使用公共语言运行时运行,这是一个虚拟机,在代码运行时负责管理某些事项,例如内存管理、线程、垃圾回收和安全性。 - .NET程序集不一定需要“注册”,而COM DLL需要在计算机的注册表中注册。 - .NET带有一个完整的对象框架,可以构建、使用或扩展以完成各种任务。该框架比旧版Visual Studio软件包附带的COM库更加全面。
我相信还有很多可以说的...你甚至可以将.NET视为在Windows之上运行的额外操作系统层——它是如此广泛。阅读.NET Framework的维基百科条目可能是一个好的开始。

2

完全不同的...

.NET提供了一个共同运行时的整套语言(更不用说JIT编译和MSIL了)。

COM真正提供了一种通过软件上方的层次来注册共享程序集和重复使用代码的方法。


2

.NET 提供了一个虚拟机、一个广泛的代码库和类似 Java 的字节码(中间语言),可以将您的程序编译成其中的字节码。

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

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


1
正如蒙提·派森所说,这是完全不同的东西。例如,.NET允许您选择“注册”(GAC)或不注册(本地目录)。但并没有一个确切的区别。

3
确实,回答这个问题需要写一本书... - Dirk Vollmar

0

.NET被引入作为COM之后的下一步,以克服COM问题。只是提一些优点:

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

微软自90年代以来一直在使用COM技术:OLE、ActiveX、DirectX等。这些技术仍然在使用COM进行开发。然而,新的现代技术正在使用.NET:Windows Presentation Foundation(WPF)、Windows Communication Foundation(WCF)、大量研究项目等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接