[轉]Windows8的WPF技術與HTML5的比較


Windows8風格程序支持使用WPF和HTML兩種方式進行編程。本人之前曾使用WPF開發過 概念版QQ,現在又在使用HTML5。兩種技術都略懂,略懂。所以將兩者做了個比較。雖然WPF的命運多舛,應用不太廣泛,但技術本身還是有很多亮點的。值得我們學習一下,開闊眼界。
 
嚴格說WPF與Silverlight都屬於.Net技術體系下新一代的界面技術,都使用標記語言XAML搭建界面,程序語可以選擇C#等.Net體系的語言。
 
本文為了方面將WPF與Silverlight統一稱作WPF,用XAML專門表示標記語言。用HTML5表示技術、HTML表示語言。
 
 

1. XAML與HTML

 

     都是標記語言,客戶端在運行時進行渲染。
 
     XAML的程序雖然需要編譯,但是XAML的處理是從文本格式轉換為二進制格式,節省空間。
     HTML一般在服務器端進行壓縮,如GZIP,在瀏覽器解壓縮。目的也是節省空間。
 

2. 頁面布局

     XAML提供的布局類型較多,有Table布局,有橫向或縱向的堆棧式,wrap的流式布局,絕對位,還有windows特有的dock和anchor。
 
     HTML5中,大量用Div,布局方式有絕對的,float的,inline,chrome等瀏覽器對DIV的display方式進行了擴展,可以實現橫向或縱向的順序排列。Table方式就不用說了。HTML5中的多列方式是獨有的。
 
     兩者都可以在運行時動態修改界面元素。WPF還有原生的控件模版和數據綁定模版Template,但是HTML5的innerHTML更靈活更方便。
 
 

3. 渲染邏輯

     兩者類似,都有邏輯樹、視覺樹(顯示樹)的概念。同樣也有reflow和redraw的概念。同樣reflow也是最耗資源的。
 

4. 圖形繪制

     位圖方面兩者都支持很多圖片格式。不過瀏覽器可以天然支持GIF,WPF不行,但可以自行實現。微軟好像一直和GIF有仇。
 
     矢量圖方面,WPF支持的形狀種類更豐富。不過HTML5可以利用DIV的boader、圓角的設置實現很多基本圖形。兩者都支持Path。都支持Canvas.
 
     漸變色,兩者都支持,不過WPF一開始就很完善看,HTML5在逐漸完善,畢竟瀏覽器不是一家的。
 

5. 樣式

     HTML5的style,CCS3什么的到家都很熟悉了。不多說了。
     WPF中也有style,style可以有內建、外鏈和元素內的,外鏈的方式引用一個資源文件和CSS類似。不過CSS的選擇器做得比較好,可以通過id、class、元素類型、偽類、還有各種組合方式。畢竟HTML用的人更多,CSS有機會發展的更完善。
     WPF中對於資源可以實現完全的編程控制,HTML5中可以用變成控制內聯的CSS,外聯的就不行了。
 

6. 事件

     元素的事件都支持事件前的捕獲與事件后的冒泡。
     都可以自定義事件。兩者沒有太大差別。
 
     WPF有一個特有的機制叫觸發器trigger。trigger與CSS3的hover偽類有些類似,但功能要多得多。trigger的實現是基於事件模式的,只不過是將常用的場景進行了包裝,從而達到了不用寫C#代碼就可以處理簡單事件邏輯的功能。
 
 

7. 數據綁定

     WPF所獨有的。與觸發器配合,可以打打減少編碼量,很多功能不需要用C#,只需要XAML就可以實現。
 
 

8. 3D支持

     WPF可以支持3D。HTML5標准中支持,但是目前支持的還不完善處於實驗狀態。WPF中操作3D的編程界面比較友好,有高級API。WebGL提供的是底層API,難度較高,不過也有很多JS類庫進行了封裝。
 
 

9. Transform

     WPF只支持2D的translate,rotate,skew,scale。HTML5可以支持3D的rotate和translate。但正如第八點提到的,WPF有專門的3DAPI,操作也不復雜。
 

10. 編程語言

     WPF支持C#、C++、VB等多種.Net語言。HTML5支持JavaScript。個人感覺.Net的功能更強大,畢竟是客戶端,幾乎無所不能。但是腳本語言更靈活,可以在運行動態添加修改代碼。
 

11. 數據

     WPF中可以將數據作作為資源以文本形式放在XAML內。
 

12. 多媒體

     視頻、聲音理論上兩者都支持。WPF支持更好,畢竟是客戶端可以支持自己編寫視頻解碼。HTML5這方面比較慢。視頻方面由於H264的專利問題幾大瀏覽器互相博弈。聲音方面更是緩慢,沒有一種音頻格式能夠通吃所有瀏覽器,在聲音播放時還有諸多問題。不過前景是光明的,只是時間問題。
 
 

13. WPF中的特色

     依賴對象(DependcyObject )一套非常強大、霸氣的面向對象模型。初期接觸會覺得很暈,用熟了非常方便、非常爽。
 
 

14. HTML5的特色

     MathML算是一個特色。
 

15. 其他

     地理信息呀、WebWorker呀、WebSockets呀什么的可比較性不強。這里就不說。
 
 
 
                                           --------轉自 alloyteam


免責聲明!

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



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