WPF、Windows Forms和Silverlight間的聯絡和區別
收到了一封學生的郵件:
===========================
金老師您好:
最近在學C#.NET,基本文法學習的差不多了,接下來準備學習圖形介面設計部分。但是我目前對於.NET的WinForm、wpf、silverlight這三者的關係弄的不是很清楚,一般書中很少介紹wpf和silverlight,網上搜了一下關於WinForm和wpf的區別,有的說WinForm是wpf的子集,有的說WinForm和wpf是共存關係,弄的很亂。想請教一下您這三者之間到底有什麼樣的關係呢?
您的學生===========================以下是我對這三者間關係的理解,如果不對,請業界朋友指正。在Windows中,諸如表單繪製等功能由GDI實現,放在作業系統核心中。Windows
Forms在底層使用的是GDI+。GDI+是GDI的“物件導向封裝”,使用C++實現。.NET Windows
Forms應用程式中使用的GDI+其實是在C++實現的Unmanaged 程式碼之上又包了一層,從而讓我們能使用C#這樣的託管程式設計語言調用GDI+功能繪圖。 WPF底層使用的是DirectX,就是通常用來開發遊戲的那個DirectX。WPF與Windows
Forms這兩者並沒有什麼關係。按照微軟的意圖,WPF是用來取代Windows Form的,所以最新的Visual
Studio就使用了WPF開發介面,這是一個很明確的訊號。當然,出於相容目的,Windows Forms與WPF將長期並存,可以把它們看成是兩套獨立的介面技術。 Silverlight在API層可以看成是WPF的子集,但事實上除了這點之外,Silverlight與WPF並沒有任何聯絡。因為Silverlight應用程式不依賴於.NET
Framework,只要使用者電腦(或手機)安裝有Silverlight運行環境(比如使用者通過互連網給瀏覽器添加了Silverlight外掛程式),就可以跑Silverlight應用程式,並不要求使用者安裝龐大的.NET
Framework。Silverlight運行時環境在API層面也可以看成是標準.NET Framework的功能子集,但它完全是重新寫過的,獨立於標準的.NET
Framework,雖然為了方便應用程式開發,微軟努力保持兩者在API層面的一致性,但並不排除Silverlight運行時環境日後會擁有全新的為.NET標準環境所不具備的功能。 Windows
Forms/WPF/Silverlight這三者其實是獨立發展的三個技術領域,只不過微軟出於方便開發的目的,有意讓Silverlight與WPF在應用程式層面開發體驗(甚至包括大部分應用程式層代碼)高度一致罷了。從開發角度來看,Windows Forms已有多年的曆史,高度成熟,擁有大量的第三方控制項等各種資源,如果開發“標準”與“通用”介面類型的Windows應用程式,使用它可以獲得較高的開發效率和不錯的運行效能。WPF的長處在於它可以開發非常“個人化”的Windows應用程式,你可以不受任何限制地實現你所能“夢想”到的各種使用者介面,而且在動畫等多媒體方面,WPF優於Windows Forms,另外,WPF的資料繫結機制也比Windows Forms要強大和靈活。WPF的短處在於它對電腦硬體的要求較高,對於硬體設定較低的電腦,其運行效能不如Windows Forms版本。就目前來看,WPF的最佳平台是Windows 7。Windows Forms和WPF主要用於開發傳統型應用程式,Silverlight主要戰場是互連網,通常用它來開發RIA的互連網應用程式,或者是跑在手機等智能行動裝置上的應用程式。可以這樣說,會WPF,不費太多力氣,就可以轉去開發Silverlight應用程式,兩者實在是太相似了,特別是介面層代碼,由雩都使用XAML,這使我們可以比較容易地為某一應用程式同時開發“案頭版”、“手機版”和“瀏覽器版”三種版本,而這三種版本其使用者介面都可以擁有一致的外觀和使用者使用體驗。