winform:優點是簡單易學,缺點是界面做不好看,界面適應能力很差。
wpf:微軟結合了顯卡渲染技術推出的界面設計方式,模仿html推出了自己的xaml,winform能實現的wpf都能實現,因為wpf有一個WindowsFormsHost控件,他是為托管winform控件做准備的,比如wpf沒有chart控件,可以直接托管一個winform下面chart。比如:
需要引用System.Windows.Forms.DataVisualization
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:FormChar="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:Char="clr-namespace:System.Windows.Forms.DataVisualization.Charting;assembly=System.Windows.Forms.DataVisualization" xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid Name="AAA"> <WindowsFormsHost x:Name="myFormsChart" FontSize="8"> <Char:Chart x:Name="chart1" > </Char:Chart> </WindowsFormsHost> </Grid> </Window>
wpf可以做出自適應布局,做出更炫的動畫,所以wpf是很值得學習的,完全可以替代winform,實際上我已經很久不碰winform了。winform和wpf之間轉換是相當容易的,因為.net框架是一樣的,變化不大,唯一阻礙就是xaml,但wpf同樣可以托控件來排班,還能說什么呢?
uwp:uwp是wpf的進化也是wpf的退化,為什么這么說?先說說uwp的優點吧,uwp的優點就是跨平台(這里所謂的平台僅僅是微軟自己的平台,wp和pc for win),這可以說是進化,退化就是很多wpf的功能被uwp扔掉了,而且編譯出的程序只能在windows應用商店發布,也就是說uwp非常封閉。wpf使用的是傳統的.net框架,做出來的是exe程序,uwp使用的是新的.net core框架,做出來的是appx,這個appx只能運行在win10手機和pc系統中。
熟悉.net的都知道messagebox和openfiledialog吧,新的.net core框架在uwp使用openfilepicker和contentdialog等替代來實現同樣的功能。微軟為什么要這么做?!因為為了適配手機,.net原來的東西根本就沒考慮過要運行在手機上,所以微軟進行了重寫,所以如果你很熟悉wpf,很熟悉xaml,那么恭喜你你很容易做出uwp的界面,但是僅此而已,因為你熟悉的很多.net框架里面的東西都被換掉了,還有各種權限問題,屏幕適配問題等等。
以前做wpf我很喜歡用messagebox來debug,做uwp就老老實實用debug.writeline(),這些是天然的鴻溝阻礙你從wpf轉向uwp,還有就是uwp令人詬病的封閉問題,編譯出的程序只能提交到應用商店才能發布,想在qq官網下載qq for uwp?抱歉,你需要跳轉到微軟商店來下載。可能小一點的軟件大家覺得也沒什么,但是考慮到中國的牆技術,微軟商店下載的速度從來就沒快過,還經常癱瘓,下一點大的軟件那真是因垂死聽啊!
話題轉回來,.net技術過時了嗎?從微軟的技術路線來看,正在進行.net和.net core框架的合並,從目前的情況來看,.net的功能是強於.net core的,就目前windows桌面程序而言,.net 的能力碾壓.net core技術。所以wpf仍然是未來桌面程序開發的主流發展方向(前提是使用.net語言),至於uwp?以我目前的觀點,只適合發布一些小型程序。什么時候微軟能用uwp發布自己的vs和office套件,並且達到一樣的功能的時候再說吧!