1. 程式人生 > >Winform、WPF和silverlight的區別

Winform、WPF和silverlight的區別


在Windows中,諸如窗體繪製等功能由GDI實現,放在作業系統核心中。Windows Forms在底層使用的是GDI+。GDI+是GDI的“面向物件包裝”,使用C++實現。.NET Windows Forms應用程式中使用的GDI+其實是在C++實現的非託管程式碼之上又包了一層,從而讓我們能使用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,這使我們可以比較容易地為某一應用程式同時開發“桌面版”、“手機版”和“瀏覽器版”三種版本,而這三種版本其使用者介面都可以擁有一致的外觀和使用者使用體驗。 6.http://bbs.csdn.net/topics/360224171(csdn論壇轉) 7.轉:http://shanyou.blog
.51cto.com/363653/74313/ 由於名稱的關係, WPF與WPF/E一直被認為是類似的東西.其實兩者除了呈現UI的部分使用的是共同語言XAML之外,兩者在本質上有很大的不同. 甚至,XAML對WPF與Silverlight有不同的意義,也不能算是兩者間"共同的語言". XAML對WPF來說,是一種把.NET程式語言改用XML來描述的方式.換句話說,XAML用在WPF上,像是另外一種程式語言.與C#, VB ,IronPython相似.所以XAML能做的, C# , VB一樣都可以做到. 但是反過來, C# ,VB 能做的,XAML不一定能做到,因為XAML是為了配合開發工具,特別設計出來的一種語言,本身有它的侷限性,所以還是得配合正規的程式語言,才能完成一個真正有用的程式. 但是以目前XAML所具備的能力,不靠C# , VB而做到平常簡單Flash可以做到的,應該是沒啥問題.因此, Application = Code + Markup的作者Petzold才會把這本書的結構寫成先用以C#來寫WPF程式,後半部才介紹XAML. 避免大家誤解 WPF = XAML. XAML還可以用在WF上,所以並不侷限於WPF. 如果用了XAML,以為這就是WPF的全部,就大錯特錯囉! 然而,XAML對Silverlight來說,本質比較貼近SVG. XAML用來描述構成畫面的結構樹,然後配合Javascript去操作這顆表示UI的樹,以達到互動的效果. 所以對Silverlight來說, XAML像是用來擴充HTML/CSS原本不足的一組Tag. 就像Firefox之中,一樣可以用Javascript去操作SVG所描述的畫面,達到表現多媒體的效果.