WPF的由來


本篇將從三個方面來看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的比較少見。即使硬件要求高,但是頂配的硬件,加上高用戶體驗的軟件,不也是很好的選擇嗎?

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM