Windows GUI:WPF或WinRT(2015+)
Windows GUI:WPF或WinRT(2015+)
我正在尝试了解在Windows世界构建GUI时使用的不同技术的概况。
为了背景,我正在构建一个小型2D平台多人游戏。 (只是为了学习目的...)
我的老师说,他认为WPF是正确的选择,但似乎他只是将其与Windows Forms进行比较。
我的理解是,到了2015年,Windows Forms已经彻底过时了吗?
在这些其他的StackOverflow问题中,他们说WinRT + XAML用于Metro GUI构建(Window 8平铺)。似乎WPF仅用于Window 7/8桌面,与Silverlight有密切关系..
Windows 8 Runtime(WinRT / Windows Store应用程序/ Windows 10通用应用程序)与Silverlight和WPF相比如何?
- 桌面上是旧应用程序(即WFP)。
- 新的应用程序类,Metro应用程序可以用多种方式构建,
包括VB.NET、C#或C++。这三种语言选项可以使用
XAML构建UI。另一种选择是使用
JavaScript / HTML5 / CSS开发UI和应用程序代码。
我的真正问题是:
在Window世界中,难道没有一种良好的构建GUI的方法吗?
如果没有,那么应该在Window 7、Window 8(桌面和Metro)、Window Phone(以及Windows 10!)和甚至x-box上使用哪些技术..
它们是不同的技术,不能这样比较吗?
您认为投入时间的正确方法是什么?
这是一个相当古老的帖子,但是在我通过google(出于兴趣)发现它之后,也许其他人也可以到达这里。这是一个新程序员不断提出的问题。因此,既然Windows 10已经正式发布,我也想回答一些东西。
首先,现在不应该再从Windows Forms开始。它是目前最成熟的技术,但是Windows Forms不会再有任何进一步的开发,它现在只处于维护阶段。WPF正在积极开发(我上次读到的)。但是现在,Windows通用应用程序(WinRT)不再需要全屏使用,并且可以在窗口模式下使用,就像其他桌面应用程序(WPF和WinForms)。这大大提高了它们在非平板电脑上的可用性。我相信这也将是桌面应用程序的未来。虽然,WPF软件是传统的桌面应用程序(没有权限问题,仅在UAC中)。无论学习WPF还是WinRT(使用.Net)开发,您最终都会学习两者。它们都是XAML + C#(或其他某种.Net语言)。当WinRT在Windows 8中发布时,我正在学习WPF。我感到很舒适,只有一些小变化,您很快就会习惯。
不确定WinRT中的MVVM场景(数据绑定)。我仍在自己学习WPF的这个方面。
Windows 10刚刚推出。Windows 8/8.1的成功不及Windows 7。因此,如果您想构建具有更广泛受众的应用程序,现在应该选择WPF。但在不久的将来,WinRT将是前进的道路。
对于您的问题,“应该在Window 7、Window 8(桌面和Metro)、Window Phone、(还有Windows 10!)以及x-box上使用哪些技术”,单个答案是Windows通用应用程序。这正是开发此框架的确切原因。一种技术用于为所有设备开发应用程序。桌面,平板电脑,手机(包括使用集成Visual Studio 2015的Xamarin的Android),Xbox和物联网(IoT)。
这里有很多内容,但是我来说一下:
- Windows Forms (Winforms) 已经停止更新了吗?没有,在积极支持中,但是在使用上很糟糕(至少一旦你了解了 WPF 的魔力之后)。
- 如果你想要构建一个外观精美、设计良好的桌面应用程序(经典的,而不是 Metro 风格),WPF 是纯 .NET 方面的答案。你可以使用 WinRT API(例如他们的 socket 类),但是你不能在 Windows 8 以前的操作系统上运行它们。UI 仍然是 WPF。
- WinRT 应用程序是为 Windows 8 商店(它们也可在 Windows 10 商店中使用)开发的。你不能在这里使用 WPF,或者在桌面上使用 WinRT,所以你的部署决定了你要使用什么。你对可用的语言/技术的理解是正确的。
- Windows Phone 8(现已停用)使用了修改过的 WinRT 运行时(在 Windows 10 中已更改)。对于 Win8/WP8,你可以使用“通用”应用程序在标准 WinRT 应用程序和 Windows Phone 应用程序之间共享大部分代码。
- Windows 10 使用通用 Windows 平台(UWP),它基于 WinRT。在 Windows 10 上开发的代码也可以在 Xbox One、Windows 10 移动版和 HoloLens 上使用。WPF 仍然适用于“标准”桌面应用程序。
- Xbox 是一个棘手的问题。XNA 已经消失了,并且微软似乎正在抛弃平台上的社区创建内容。话虽如此,Unity3D 可以部署到 Xbox,并且我相信标准的 DirectX(C++)开发也可以支持。通用 Windows 平台应用程序也可以部署在 Xbox One 上,这似乎是微软未来的战略。
- 截至 2021 年,WinUI 3 是一个新的 UI 框架,它将 UWP 的 UI 框架带到了“桌面”应用程序中。这项技术将允许你在 Windows 10 和 11 上部署应用程序。现有的 XAML UWP 应用程序通常可以通过更改新命名空间轻松地移植到 WinUI 3。如果你现在开始一个应用程序,我会认真考虑走这条路。它是 Windows 应用 SDK 的一部分。
至于要花多少时间,这取决于你的目标 :)。学习 WPF/UWP + XAML 将为你带来很多好处,如果你想要在 .NET GUI 开发中保持“当前”,那就是你应该去做的。WPF 拥有最多的功能,所以从那里开始,你只需要在 UWP(或任何其他基于 XAML 的技术)中找到缺失的功能的解决办法。
如果你这么做了,请确保学习 MVVM(Model-View-ViewModel)模式。它在基于 XAML 的技术中非常有效,并允许你在 WPF 和 UWP 应用程序之间共享大量逻辑。如果你最终开发 iOS/Android 等应用程序,这些相同的逻辑也可以使用。
请注意,对于真正的游戏开发,你需要一个真正的游戏框架(如 Unity3D 或甚至 XNA)。你可以在 WPF 中做,这比 Winforms 更好,但是两者都不是真正的游戏框架。