本篇將從三個方面來看WPF的由來:
1,WPF是什么?
2,GUI開發簡介
3,WPF優缺點
一,WPF是什么
WPF(Windows Presentation Foundation) , 從名字來看,Microsoft想把WPF技術作為Windows程序外觀(表現層)的基礎。我們知道,現在開發一套系統,一般都會采用分層架構,最基本的層次會包含表現層,邏輯層,和數據層,總之如果是GUI程序,就需要有表現層。WPF技術就是用來實現表現層的技術,在實際開發中就是做界面,做UI,它可以讓界面做的非常酷,而且實現這些酷的效果並不太費力。當然了,目前WPF只能應用的window平台上,因為它是在.net framework的基礎上實現的,而基於Windows平台的軟件也分為桌面應用和Web應用,WPF技術被廣泛應用在桌面應用的開發上,對於Web應用,微軟推出了Silverlight技術,它把WPF程序嵌入到瀏覽器里運行,同時Silverlight技術也可以用來開發Windows Phone應用程序,對於Silverlight技術,將來可能會被HTML5取代,這里就不多說了。一句話總結:WPF是在Windows平台上用來開發GUI程序的表現層的技術
二,GUI開發簡介
如下圖,在Windows平台GUI開發大概經歷了這幾個階段:
1、Windows API + C語言最早的開發Windows GUI程序的思路。用C語言直接調用Windows操作系統提供的API函數來開發,程序員處理Windows消息。經歷過這段開發時期的程序員一般對底層比較清楚,要了解Windows操作系統的工作原理。2、MFC + C++Microsoft Foundation Class(MFC),微軟用C++封裝了Win32 API, C++程序員通過使用MFC類庫來開發。面向對象的編程方法。3、WinForm + C#微軟推出.net平台后,Winform程序是.net平台中的技術,它把Win API封裝成了控件。4、WPF + C#當然也是基於.net平台的技術,從.net framwork3.0開始推出WPF技術。WPF的特點是數據驅動,而以上三者是消息驅動或事件驅動的開發模式。從圖像系統角度看,WPF對圖形的展示是直接使用directX技術,而其他三者是基於GDI/GDI+技術,因此WPF在圖形圖像處理方面很優越,提高了用戶體驗。其他還有一些VB+ActiveX控件,Java Swing,Delphi等開發模式,這些不太熟悉,就不多說了。我們知道,目前的應用程序很注重用戶體驗,而且程序的規模也越來越大,上述的技術演變剛好可以看出這點,從面向過程編程方法演變到面向對象方法,再演變到組件化方法,這都是為了提供開發效率,而WPF的出現,使應用程序在用戶體驗上,界面的展現效果更佳。
三,WPF優缺點
從2007年開始WPF作為.net framework3.0中的一項重要技術發布,版本號也跟隨.net framework叫WPF3.0,隨后發布了WPF3.5,WPF3.5SP1,WPF4.0, WPF4.5。隨着版本的不斷更新,WPF的能力也越來越強,其應用也越來越多。開發微軟最新推出的平台應用,如: windows8, surface, windows phone8等程序,基本都要用到WPF技術。其優缺點:優點:1、使用DirectX技術,圖形圖像處理能力強。相對於Winform或更早的技術,WPF實現的界面效果優越很多。
2、代碼后置(Code-Behind)更徹底,設計師可以用Xaml語言來設計UI,同時程序員可以開發后台交互邏輯,最后很容易集成到一起,如果需要更換界面,更換Xaml文件的設計即可。相比於之前的Winform程序,在開發流程上一定的並行化,換膚更簡單。不過目前看來Blend比不上PhotoShop。所以很多設計師還是用Photoshop來實現效果圖。而程序員要想做好WPF程序,也需要學習好Xaml,實現界面效果。
3、最重要的一點是,WPF是數據驅動UI的模式,相比Winform或之前的技術,它們都是通過UI來驅動數據的改變。數據驅動UI也就是說,UI控件的樣子不是固定的,UI控件只是對數據的展示,而以什么樣的形態來展示給用戶,完全取決於控件的模板和樣式,也就是說按鈕不一定是一個矩形的,你可以讓它變成圓形。隨着學習,慢慢會體會到WPF的強大。
缺點:性能不好,對硬件要求高。
現在如果新開發的windows桌面應用程序,基本上都會考慮使用WPF, 選WinForm的比較少見。即使硬件要求高,但是頂配的硬件,加上高用戶體驗的軟件,不也是很好的選擇嗎?