.net 框架的引入是否使 COM 和 DCOM 中的原始编程变得多余?
(除了使用一些 COM+ 服务,例如通过 System.EnterpriseServices 命名空间进行事务管理)
还没有,因为操作系统仍然不受管理。
如果 MS 最终做到了他们实验室多年来一直在谈论的事情并生产出一个完全托管的操作系统,那么它会的。
该操作系统不会向后兼容。他们必须首先生产 Office、IE 等的托管版本。他们将不得不生产一个虚拟机来运行非托管应用程序。
这种痛苦类似于从 Mac OS9 迁移到 OSX。
COM 是 MS 实际采用的最后一项主要技术。MS 正在继续构建依赖于 COM 的新 API;例如,Vista 的新媒体基础(DirectShow 的一种继承者,也是基于 COM 的)是一个 COM API。Direct3D10 也是如此(我假设 D3D11)。我认为它不会很快消失,而且对于许多 Windows 编程任务来说,它一点也不多余。
还没有,但我想说从长远来看,它的目标是。显然,较低级别总会有一席之地,但根据我对微软战略的理解,此举是尽可能多地用托管代码替换。
我想这取决于你所说的“原始”是什么意思。我仍然发现有时需要从 .Net 类库中公开 COM API。使从某些平台迁移到 .Net 的过程变得更加容易,因为我可以通过 COM 替换小块。
.NET 被刻意设计为替换 COM(因此,DLL Hell),因此虽然 .NET 应用程序仍然可以访问 COM 组件,但鼓励所有新开发迁移到 .NET,除非您有充分的理由坚持使用 COM .