COM 和 WinRT 之间的关系

DDa*_*Dan 2 .net c# com windows-runtime

我没有清楚地了解COM(组件对象模型)和WinRT(Windows 运行时)之间的相似/差异或关系本身。

根据我的理解,它们都是为了提供“运行时引擎”来使组件能够进行通信......这是 CLR(公共语言运行时)吗?

WinRT 随 Windows 8 一起出现,为多种语言提供了一个通用平台。

我不明白的是,WinRT 是否取代了 COM?它们是一样的吗?

Sim*_*ier 5

COM“只是”软件组件的二进制接口标准(来自维基百科)。没有运行时,没有一组基/实用类(嗯,有一些,比如跨线程/进程封送、注册表、COM+,但没有它你也可以做 COM)。

COM 在 Windows 中绝对无处不在,用于客户端和服务器,因为从本质上讲,它“只是”一个vtable 绑定契约

WinRT 是一个基于 COM 的完整 API(同样,没有引擎)。因此,它带有一组基类。它事实上非常面向 UI 应用程序(Windows 应用商店)。WinRT 还附带一组服务(元数据、类型系统、部署/存储等)。此处提供了有用的 WinRT 介绍:WinRT 揭秘

CLR是为 .NET程序提供支持的执行引擎。它可以在客户端和服务器上使用。例如,垃圾收集器就是在那里实现的。事实上,近年来它已作为开源项目移植到 Windows 以外的其他平台:CoreCLR Windows CLR 仅将 COM 用于其部分工作,主要用于与 Windows 平台进行通信。WinRT 不使用 CLR。