.NET Framework提供的解决方案"改变了所有的东西"。.NET Framework是一个完全不同的新的模型,用于在Windows系列操作系统和其他如Mac OS X或UNIX/Linux等非微软的操作系统中创建系统。下面快速浏览一下.NET Framework的一些核心功能。
对已有代码具有完全的互操作性:这(当然)是一件很好的事情。已有的COM二进制组件可以和更新的.NET二进制组件共存,反之亦然。而且平台调用(PInvoke)服务允许在.NET的代码里调用基于C的库(包括操作系统的底层API)。
完全的语言集成:.NET支持跨语言继承、跨语言异常处理和跨语言的调试。
所有支持.NET的语言共享的公共运行时引擎:这个引擎的一个特点是具有一组明确定义的类型,而每一种支持.NET的语言都能"明白"这些类型。
全面的基类库:这个库除隐藏了原始API调用的复杂性外,还提供了被所有支持.NET的语言所使用的一致的对象模型。
不关注COM底层操作:IClassFactory、IUnknown、IDispatch、IDL代码和讨厌的与变量兼容的数据类型(BSTR、SAFEARRAY等)不会出现在.NET二进制代码中。
真正简化的部署模型:在.NET环境下,不需要将二进制单元注册到系统注册表了。另外,.NET允许同一个*.dll的不同版本存在于同一台机器上。
你很有可能会从前面几点总结出,.NET平台与COM完全没有关系(除了一个事实:两者的框架都起源于微软公司)。事实上,唯一使.NET和COM类型进行交互的方式是使用互操作性层。