Universal Windows Platform 是 Windows 8 和 Windows Phone 应用程序的 WinRT 替代品吗?

Is Universal Windows Platform the replacement of WinRT of Windows 8 and Windows Phone apps?

Universal Windows Platform 是 Windows 8 和 Windows Phone 应用程序的 WinRT 替代品吗? 我的意思是,有一个专门为 Windows 8 开发 Metro 应用程序的 WinRT 平台。现在,它被 UWP 取代了,不是吗?

没错,UWP 是面向所有 Windows 设备的新平台(Win 10+)。然而,WinRT 并未被 UWP 取代,而是在其之上的扩展,使 UWP 成为更广泛的 API 集,可以在更多设备上使用。正如微软自己所说:

With this evolution, apps that target the UWP can call not only the WinRT APIs that are common to all devices, but also APIs (including Win32 and .NET APIs) that are specific to the device family the app is running on.

UWP 平台支持 "Universal Device Family" class API,所有 windows 平台(Xbox、Phone、桌面等)均支持这些 API。您可以使用一些扩展系列来限制应用程序的范围,例如 "Mobile Device Family".

但是,可以在运行时优雅地检查和使用这些特定的设备系列 API。例如,您可以在 phone 上使用 GPS 显示您自己的位置,但在 Xbox 上不启用该功能。

希望这个回答对您有所帮助,如果您对此有任何疑问,我建议您阅读这篇关于 UWP 平台的文章:

来源:https://msdn.microsoft.com/library/windows/apps/dn894631.aspx

祝你有美好的一天!

Windows 通用平台是面向设备 运行 Windows 的开发平台。以前,台式机和平板电脑与手机的开发是分开的。使用 UWP,您现在可以针对任何设备 运行 Windows 10,可以是 phone、台式机、平板电脑、xbox。美妙之处在于,您现在可以为所有这些平台使用一个二进制文件,这让我们离真正的通用 Windows 应用程序更近了一步。

所以,为了回答您的问题,是的,UWP 是任何运行 Windows10

的设备的未来平台

这有点令人困惑,因为在 Windows 8.x 中,"Windows Runtime" 实际上用来指代几个不同的事物:

  1. 用于定义和使用 WindowsAPI 的新模式(并支持 code/OS 组件),旨在很大程度上取代 "Win32"(即, flat C-style) 和经典的 COM for new APIs 在大多数情况下。这 was/is 实际上是关于语言互操作性的:允许 Windows 团队(以及可能的其他团队)在 C++ 中创建组件,这些组件公开不依赖于 GC 或运行时(如 CLR)的 APIs ,但在 C# 或 JavaScript 中使用仍然感觉相对自然,无需手动编写包装器。

  2. 遵循上述模式的WindowsAPI集合。

  3. 用于构建的新 platform/environment 和 运行 一种新型 Windows 应用程序,旨在具有移动和网络应用程序的一些特征在减少系统安全性、可靠性、性能、电池寿命等方面的潜在问题方面。 是 Windows 10.

    [ 演变为 UWP 的原因=30=]

在 Windows 8 天里,这些应用程序在 8.0 的大部分 public 预览期间被称为 "Metro style apps",并在 RTM 之前被正式命名为 "Windows Store apps"。这些应用程序的 platform/environment ……官方没有真正的名称(除了 "platform for Metro style apps")。非正式地,人们(包括在 Microsoft 的)有时将其称为 "Metro"(本身就是一整罐蠕虫)或... "WinRT".

那么 WinRT "proper"(定义 1 和 2)与非官方 WinRT 定义 (3) 又名 UWP 又名前无名 "platform for Metro style apps" 之间有什么关系?嗯,由于 WinRT 和新的应用程序平台都是在 Windows8 引入的,所以当时的大多数 WinRT API 都是新平台特有的。当时的应用程序平台(和商店政策)对于允许在应用程序中使用哪些遗留 Win32 APIs 也有更多的限制 - 在大多数情况下,这与任何技术限制无关,更多的是团队希望以新应用程序为借口清理臃肿的 Win32 API 表面。但从技术上讲,无论是否在 UWA 中使用,WinRT 通常都是新 Windows API 的通用模式,而 "UWA vs. classic app" 和 "WinRT vs. Win32" 大多是独立的;随着时间的推移,他们逐渐启用了更多 WinRT APIs 以在 UWA 之外使用,并且放宽了在应用程序中使用大量遗留 Win32 APIs 的政策(并且还继续引入新的平面 C-某些用例的样式 APIs)。

总而言之,"UWP replaced WinRT" 的说法在技术上并不准确,但可以理解,因为这些内容非常令人困惑。 UWP 取代无名应用平台(3);本质上,它只是一个已移植到其他设备类型并与经典桌面集成的更新版本 UI。 WinRT,在其正确的定义 (1) 中,仍然是新 Windows API 用于 UWA 甚至外部的基础。