我想知道为WinRT设计的应用程序是在虚拟机中运行还是在字节码中编译,以便编译一次并按照口号说明随处运行。
答案 0 :(得分:1)
口号不是这样的。 WinRT应用程序依赖COM进行运行时跨环境调用,使用元数据格式(winmd)来描述类型。
WinRT应用程序可以是完全原生的(就像大多数/所有框架甚至是XAML引擎一样)。
单个DLL或应用程序本身可以用.NET语言编写,并且由于添加到CLR的扩展互操作代码,它几乎可以与WinRT的其余部分无缝地互连。在引擎盖下,它通常是像往常一样的COM互操作,但添加了"投影"选择的WinRT类型。这就是使WinRT IVector看起来像.NET中的IList的原因。他们只是自动包裹。
WinRT的优势是调用COM和元数据系统的抽象的二元方法(没有它,语言"投影"将不存在)。但它绝对是原生的,就像COM一样,如果你愿意的话,你可以保持C ++而不用加速.NET CLR。