从Windows 10(或者8)开始,既可以用UWP开发APP,又可以用WPF开发APP,选那种好呢?

UWP和WPF有许多相似之处,比如两者都可以使用XAML来描述界面。但是如果要论历史的话,肯定是WPF来的长。WPF基于.Net,建立在传统的Win32 API之上,最早出现于2006 (.NET Framework 3.0)(参考UWP vs. WPF)。而UWP则出现于2015 (Windows 10)(如果不提更早的Window 8的话)。

从技术栈上看,WPF只是使用.NET的CLR对Win32 API进行封装,然后可以使用C#(以及其他.NET)语言来简化APP开发。在WPF之前,使用对象化的方法开发图形应用的话需要(WTL,MFC)这种C++框架,或者使用不支持XAML的另一款.NET框架Windows Forms(参考[Windows Forms vs. WPF [closed]])。

[WPF vs. Windows Forms] 有Windows Forms和WPF的对比,这两者的最大的区别当属Windows Forms的渲染采用的是Pixel graphic UI based on GDI+,而WPF采用的是Vector graphic UI based on DirectX。由于采用了基于Vector graphic的方式,WPF有更好的灵活性,很容易应用样式,并且支持[MVVM][Model View ViewModel Pattern]。

而UWP则是借鉴了WPF这种对象化,并且XAML化的图形化组件模式,但是把这些功能通过类似COM的方式嵌入进Windows系统之中,这样的话可以支持除了.NET之外的语言,比如C++,JavaScript等等。

更多关于如何区分这些应用平台,可以阅读Choose your app platform以及Features and technologies for Windows apps

其他参考

[Windows Forms vs. WPF [closed]]: https://stackoverflow.com/questions/31154338/windows-forms-vs-wpf [WPF vs. Windows Forms]: https://github.com/jbe2277/waf/wiki/WPF-vs.-Windows-Forms [Model View ViewModel Pattern]: https://github.com/jbe2277/waf/wiki/Model-View-ViewModel-Pattern