XAML与WPF与商店应用与电话应用与UWA的区别

22

我知道XAML与Blend一起用于设计UI。但是我对很多术语感到困惑,比如XAML在WPF、Store App、Phone App或UWA中的作用。此外,WPF、Store App、Phone App和UWA之间有什么区别?这是否意味着旧的桌面项目将不再使用,而是被WPF、Store App或UWA所取代?


5
历史是这样的:WPF最初使用XAML,然后WINRT出现了,使得微软彻底颠覆并分离了他们所称的仅适用于商店应用程序的XAML。手机应用程序也可以使用XAML,但它是自己的平台,有点像Silverlight。为了填补这些差距,UWA应运而生,但现在已经不再重要了,因为微软用Windows 8搞砸了一切,而且试图将它们全部重新整合起来,但他们正在失败。顺便说一下,你根本不需要Blend。 - JWP
1
你可能会发现我的维基文章有用:UWP vs. WPF - jbe
2个回答

56

在约2000年发布.NET时,您可以使用WinForms为Windows创建桌面应用程序。它通过将Windows API包装在托管代码中提供对“本机”控件的访问(即,在WinForms中制作的按钮实际上是来自user32.dll的Windows按钮控件)。这些可以在安装了适当的.NET框架版本的任何Windows版本中运行,包括Windows 10。

在2006年发布了WPF,这是WinForms的替代品。 WPF使用基于XML的语言XAML声明用户界面元素。在简单的WPF应用程序中,.xaml文件描述GUI,代码后文件描述逻辑。 DirectX用于将.xaml中描述的内容绘制到窗口中。

与Winforms一样,使用WPF制作的程序可以在安装了适当的.NET框架版本的任何Windows版本中运行,包括Windows 10。请注意,使用XAML完全是可选的。您使用XAML描述的任何用户界面元素也可以使用您的.NET语言C#或VisualBasic.NET制作。但是,使用XAML通常更简单。请参见To XAML or not to XAML (MSDN博客)

来自XAML(维基百科)

由于XAML仅基于XML,因此开发人员和设计师可以在彼此之间自由共享和编辑内容,无需进行编译。

从大约2012年开始,随着Windows 8一起,可以制作一种名为Metro / Modern / Windows 8 / Windows Store应用程序的新应用程序类型。这些应用与WPF类似,因为它们使用XAML描述GUI。这些应用只能在Windows 8、8.1和Windows 10中运行。Windows 8.1增加了一些改进和功能,但基本保持不变。同样的技术被用来制作Windows Phone应用。

随着Windows 10的发布,微软推出了UWP(通用Windows平台),您可以使用相同的代码库来针对不同类型的设备(桌面/移动/xbox/IoT/全息)进行开发。这些为UWP开发的应用程序类似于早期的Windows 8 / 8.1应用程序。与以前一样,XAML用于描述GUI。

仅适用于Windows商店应用程序,不存在向后兼容性。时间线为 Windows 8 -> Windows 8.1 -> Windows 10/UWP 。在UWP中制作的应用程序能运行在Windows 10上,而在Windows 8.1中制作的应用程序无法在Windows 8上运行。


1
谢谢您的回答。这意味着,如果我想在Windows 8.1的各种设备(PC /平板电脑/手机)上运行我的应用程序,我必须选择Windows 8.1的通用项目模板。而对于Windows 10,则必须选择UWP项目模板,是吗? - Yeasin Abedin
2
是的,没错。需要注意的是,Windows 8.1并不像UWP那样“通用”,因为它只能在Windows 8.1桌面和Windows 8.1手机之间共享资源。而在UWP中,相同的代码库可用于所有形态因素。 - Arctic Vowel
2
请纠正我如果我错了,但我认为在WinRT中的XAML与WPF中的不同。 - Michel Feinstein
4
@Dinei Rockenbach - 是的,如果需要支持Windows 7,WPF将是唯一的选择,因为UWP应用程序所需的最早操作系统是Windows 8。 - Bob Bryan
1
XAML对于UWP也是可选的,https://learn.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp ,甚至C#只是UWP支持的众多编程语言之一。 - Lex Li
显示剩余2条评论

1

我强烈建议参考Stopbyte中的这个讨论串,它有更多关于WPF、UWP和WinRT背后概念的解释

至于WinForms,根据我的经验,它已经成为历史了。已经被WPF所取代(尽管像@Jazimov所说,它仍然有主流支持)。 我注意到微软已经停止改进Windows Forms,并且可能也已经停止维护它。


1
Winforms绝对不是“历史”。它得到了许多第三方供应商(DevExpress、Syncfusion、Telerik、Infragistics、ComponentOne、Dart等)的主流支持,并且仍然拥有蓬勃发展的论坛。而且,没有冒犯的意思,但那些非权威性的“我相信”类型的事实对于寻找答案的人来说几乎没有任何相关性。 - Jazimov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接