通用 Windows 平台是 Windows 8 和 Windows Phone 应用程序的 WinRT 的替代品吗?
Posted
技术标签:
【中文标题】通用 Windows 平台是 Windows 8 和 Windows Phone 应用程序的 WinRT 的替代品吗?【英文标题】:Is Universal Windows Platform the replacement of WinRT of Windows 8 and Windows Phone apps? 【发布时间】:2015-11-06 00:11:57 【问题描述】:我的意思是,有一个专门为 Windows 8 开发 Metro 应用程序的 WinRT 平台。现在,它被 UWP 取代了,不是吗?
【问题讨论】:
这是完全相同的东西,只是一个不同的标签。鉴于其巨大的成功,有点必要。他们总是需要 3 个版本才能做到正确。 【参考方案1】:没错,UWP 是未来所有 Windows 设备(Win 10+)的新平台。然而,WinRT 并没有被 UWP 取代,而是在它之上的一个扩展,使 UWP 成为一组更广泛的 API,可以在更多设备上使用。正如微软自己所说:
随着这种演变,以 UWP 为目标的应用不仅可以调用所有设备通用的 WinRT API,还可以调用特定于运行应用的设备系列的 API(包括 Win32 和 .NET API)。
UWP 平台支持“通用设备系列”类 API,然后所有 Windows 平台(Xbox、Phone、桌面等)都支持该 API。您可以使用一些扩展系列来限制应用的覆盖范围,例如“移动设备系列”。
但是,可以在运行时优雅地检查和使用这些特定的设备系列 API。例如,您可以在手机上使用 GPS 显示自己的位置,但不能在 Xbox 上启用该功能。
希望这个答案对您有所帮助,如果您对此有任何疑问,我建议您阅读这篇关于 UWP 平台的文章:
来源:https://msdn.microsoft.com/library/windows/apps/dn894631.aspx
祝你有美好的一天!
【讨论】:
我相信 Windows 运行时 (WinRT) 仍然是 UWP 的一部分。但是 UWP 在其之上引入了很多 API。 好点@JonStødle!我已经根据该反馈编辑了答案:) 谢谢。 所有 Windows 设备...小脚注:“所有”不包括绝大多数 Windows 设备(运行 Windows XP、Vista、7、8 或 8.1 的设备) . 谢谢@Heinzi!根据您的脚注更新了答案:)【参考方案2】:这有点令人困惑,因为在 Windows 8.x 中,“Windows 运行时”实际上用于指代一些不同的事物:
一种用于定义和使用 Windows API 的新模式(以及支持代码/OS 组件),旨在在大多数情况下在很大程度上取代新 API 的“Win32”(即平面 C 样式)和经典 COM。这实际上是/实际上是关于语言互操作:允许 Windows 团队(可能还有其他人)在 C++ 中创建组件,这些组件公开不依赖于 GC 或像 CLR 之类的运行时的 API,但仍然感觉从 C# 或使用起来相对自然javascript 无需手动编写包装器。
遵循上述模式的一组 Windows API。
用于构建和运行新型 Windows 应用程序的新平台/环境,旨在具有移动和 Web 应用程序的一些特征,从而减少系统安全性、可靠性、性能方面的潜在问题、电池寿命等。这是随着 Windows 10 演变成 UWP 的。
在 Windows 8 时代,这些应用在 8.0 的公共预览期的大部分时间里都被称为“Metro 风格的应用”,而在 RTM 之前,这些应用被正式称为“Windows 应用商店应用”。这些应用程序的平台/环境......官方并没有真正的名称(除了“Metro 风格应用程序平台”)。非正式地,人们(包括微软)有时将其称为“Metro”(本身就是一整罐蠕虫)或......“WinRT”。
那么 WinRT“正确”(定义 1 和 2)与非官方 WinRT 定义 (3) 又名 UWP 又名以前无名的“Metro 风格应用程序平台”之间的关系是什么?好吧,由于 WinRT 和新的应用程序平台都是在 Windows 8 中引入的,所以当时的大多数 WinRT API 都是特定于新平台的。当时的应用程序平台(和商店政策)对于允许在应用程序中使用哪些旧版 Win32 API 也有更多限制 - 在大多数情况下,这与任何技术限制无关,而更多地与希望使用新应用程序的团队有关作为清理臃肿的 Win32 API 表面的借口。但从技术上讲,WinRT 是一般新 Windows API 的通用模式,无论是否用于 UWA,“UWA 与经典应用程序”和“WinRT 与 Win32”大多是独立的;随着时间的推移,他们逐渐启用了更多在 UWA 之外使用的 WinRT API,并放宽了在应用程序中使用大量旧版 Win32 API 的政策(并且还继续为某些用例引入新的平面 C 风格 API)。
因此,总而言之,说“UWP 取代了 WinRT”在技术上并不准确,尽管可以理解,因为这东西相当混乱。 UWP取代了无名的app平台(3);本质上,它只是一个已移植到其他设备类型并与经典桌面 UI 集成的更新版本。 WinRT,在其正确的定义 (1) 中,仍然是用于 UWA 甚至外部的新 Windows API 的基础。
【讨论】:
说清楚,我是 Stopbyte 文章的作者。【参考方案3】:Windows 通用平台是面向运行 Windows 的设备的开发平台。以前,台式机和平板电脑与手机的开发是分开的。使用 UWP,您现在可以定位任何运行 Windows 10 的设备,可以是手机、台式机、平板电脑、Xbox。美妙之处在于,您现在可以将一个二进制文件用于所有这些平台,让我们更接近真正的通用 Windows 应用程序。
所以,回答您的问题,是的,UWP 是适用于任何运行 Windows 10 的设备的平台
【讨论】:
以上是关于通用 Windows 平台是 Windows 8 和 Windows Phone 应用程序的 WinRT 的替代品吗?的主要内容,如果未能解决你的问题,请参考以下文章
用于跨平台开发的 Windows Phone 8 PCL 库
Android 逆向Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )
详解 UWP (通用 Windows 平台) 中的两种 HttpClient API
网络共享路径上的 sqliteconnection(通用 Windows 平台)
Android 逆向Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )