一.WPF和Silverlight概念
- WPF和Silverlight 淵源
WPF與上一代的WinForm相比 其優勢在於更加容易地創建漂亮的應用程序界面,其它方面倒沒多少變化。WinForm是基於GDI+的界面技術,UI最終都是調用GDI+函數繪制而成的,無論是窗體 自定義控件都使用GDI+。而WPF則不再依賴於GDI+,它從GDI+脫離出來,UI的呈現都基於Direct3D,界面的繪制工作都是由D3D完成的。因此,在WPF的類庫中,封裝了很多Direct3D的操作,通過使用這些類 不僅可以方便的繪制平面圖形,也能很方便地繪制3D界面,也容易創建動畫效果。最終用戶界面將得到很大的改善甚至是變革.
SilverLight作為WPF的一個輕量級的版本,比WPF削減了很多功能, 如,WPF支持直接在XAML中綁定觸發來觸發動畫,而SilverLight就只能通過托管代碼或者Javascript來進行。
另外,WPF直接支持3D效果和3D鏡頭變換,但是SilverLight就不支持這個了。
Silverlight原名WPF/E 就是WPF Everywhere 只是WPF的一個子集。WPF在多媒體編程領域擁有SilverLight所不能的優勢。WPF不能讀取SilverLight的Xaml文件,但SilverLight可以讀取WPF的Xaml可以看出WPF和SilverLight的Xaml不是完全兼容的。
SilverLight是基於瀏覽器插件的,在瀏覽器中運行,服務器端不需要部署任何環境,客戶端只需要安裝Runtime瀏覽器插件,無須安裝.net Framework 3.0。所以,SilverLight的運行環境不受操作系統和瀏覽器的種類限制(更准確的說,是受到較少的限制)。
WPF可以編寫Web程序或者桌面應用程序,可以直接編譯為獨立運行的.Exe文件。WPF運行時必須安裝.net Framework 3.0。這就要求WPF目前運行的操作系統必須是Windows Vista或者Windows XP SP2
- WPF和Silverlight定義
WPF(Windows Presentation Foundation)是微軟推出的基於Windows Vista的用戶界面框架,屬於.NET Framework 3.0的一部分。它提供了統一的編程模型、語言和框架,真正做到了分離界面設計人員與開發人員的工作;同時它提供了全新的多媒體交互用戶圖形界面。
Silverlight最初稱為WPF/E(E來自於Everywhere的首字母),是面向運行在瀏覽器中的Web應用程序的一個WPF子集。
WPF Silverlight都是新一代的界面呈現技術,他們都統一地使用XAML語言來描述界面 在XAML語言中描述UI元素。
二.WPF和Silverlight的優缺點
- 從業務應用的角度
從公司業務的角度來看,選擇WPF或者Silverlight 根本的決定因素是我們系統客戶端需要做哪些工作,或者說客戶端是否需要承載簡單運算或驗證之外的一些東西,如果客戶端應用程序主要是為了展現后端數據的前端界面的話——選擇Silverlight 4已經完全足夠。不過,如果你的客戶端應用程序需要更緊密地和客戶端機器集成,並且其他一些東西(如支持對第三方程序的對接)也要放在客戶端的話,使用SL4的信任提升OOB模式也可能勝任,但是這樣會給開發帶來更多的挑戰,也可能需要犧牲開發效率或功能來達成開發目標。這樣則需要切切實實地做好前端需求分析,如果應用程序和客戶端機器資源有大量的交互的,WPF仍舊是最好的選擇,能讓你的開發工作事半功倍。
再從公司各個部門的主要職責和目前系統的問題來看,客服相關可能需要提升用戶滿意度,全面提升系統的易用性並伴隨完善各種信息數據的查詢,SL4已經可以滿足需要,針對財務或后道社保等部門,主要職責就是對大批量數據的集中處理,數據監管,自定義查詢,這樣來說WPF可能更合適。
- 從技術開發的角度
個人認為從技術應用層面來說,微軟應該推動WPF成為富桌面應用程序的“核心”平台。但微軟此時正推進Silverlight成為這樣的平台。導致某些人則認為WPF就快消亡了,不過從微軟內部技術傾向來說,至少在未來幾年不會出現這種情況。
以下幾個方面強調了WPF和Silverlight之間的一些重要不同點:
一方面,Silverlight是完成面向跨平台RIA的最好方式,基於瀏覽器的前端展示,。一方面,WPF是編寫用於Windows 桌面的托管代碼應用程序的最好方式,但WPF相對Silverlight更高的資源消耗和緩慢的開發進度也是我們需要考慮的問題。
另外在系統部署上WPF 需安裝.net 3.5的famework,大概200多M,Silverlight則安裝瀏覽器插件即可,大概不超過8M。
Silverlight不支持IO相關的類,不支持Office之類的類,不支持DCOM,對文件讀寫等處理支持不如WCF。
- 未來的架構趨勢角度
從未來的架構趨勢角度來看,應用程序的WCF化已經成為主流,WCF作為一個通信架構,不負眾望的成為新的主流同性應用,而WPF由於同Silverlight定位沖突,慢慢已經被邊緣化,雖然vs2010和office2010都是WPF開發。WPF的應用領域已經縮減到一些對多媒體處理應用要求較高的領域,從微軟的產品定位上來看,一是讓位Silverlight,二是不排除WPF同Silverlight進行整合的可能。
對於目前WPF和Silverlight的Xaml不兼容等等一系列問題,明顯看出就是Framework和Silverlight發展不同步,
Silverlight還在發展時期,版本更新很快,WPF基數成熟,相對比較穩定。
三.WPF和Silverlight 對比總結
總結以上3個大方面,列出WPF同Silverlight的優缺點:
功能對比 |
WPF |
Silverlight |
安裝部署 |
Famework3.0以上,200M左右 |
瀏覽器插件,8M左右 |
資源消耗(內存) |
中 |
低 |
應用方向 |
跨桌面和瀏覽器多媒體處理,富文本支持,桌面應用可包含復雜邏輯處理,通信、文件處理接口豐富,支持客戶端硬件加速 |
跨平台瀏覽應用(包括手機,蘋果等),配合js處理UI應用,相對WPF缺少文件操作(Office)、Windows API、3D控件、視頻加速等功能擴展 |
系統要求 |
Win7,winXP |
無要求 |
|
|
|
|
|
|
四.JQuery、Extjs的區別和聯系
- JQuery是一個優秀的Javascrīpt框架,輕量級的js庫(壓縮后只有21k),兼容CSS3,還兼容各種瀏覽器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用戶能更方便地處理HTML documents、events、實現動態效果,方便地為網站提供AJAX交互。jQuery還有一個比較大的優勢是,它的文檔說明很全,而且各種應用也說得很詳細,開發資源豐富,同時還有許多成熟的插件可供選擇。jQuery能夠使用戶的html頁保持代碼和html內容分離,
- ExtJS是一種主要用於創建前端用戶界面,是一個與后台技術無關的前端ajax框架。功能豐富,界面美觀以及ext的表格控件都高居榜首,主要思想就是獨立於后台技術的前端ajax框架。
- extjs是基於組件級的,而jquery主要是簡化Dom操作,extjs可以省下你大量做界面的時間,而且幾乎不用怎么寫代碼,使用ext大部分時間都是學習怎么使用它的api,但是如果你想要修改ext的代碼或者實現,基本上比較困難。
jquery則不太相同,它很精巧,核心+插件式的開發應用.你不需要去動核心,你需要的功能,你可以通過插件來完成,如果你沒有現成的插件,自己也寫一個插件,相對ext簡單得多.比較列表如下:
jQuery
設計思想
簡潔的思想:幾乎所有操作都是以選擇DOM元素(有強大的Selector)開始,然后是對其的操作(Chaining等特性)。
優點
小,壓縮后代碼只有20多k(無壓縮代碼94k)。
Selector和DOM操作的方便
Chaining:總是返回一個jQuery對象,可以連續操作。
文檔的完整,易用性(每個API都有完整的例子,這是其它框架現在不能比的),而且網上還有很多其它的文檔,書籍。
應用的廣泛,包括google code也使用了jQuery。
缺點
由於設計思想是追求高效和簡潔,沒有面向對象的擴展。設計思路和Mootools不一樣。
CSS Selector的速度稍微有些慢
Ext JS
設計思想
組件化,推進RIA(Rich Internet Application)的應用。
優點
強大的UI,而且性能不錯,這是其最大的優點。
速度快,管是UI還是其它模塊。
100%面向對象和組件化的思想,一致的語法,全局的命名空間。
文檔的完整,規范,方便。
活躍的社區,迅速增加的用戶量。
模塊化實現,可擴展性強。
所有的組件(widgets)都可直接使用,而無需進行設置(當然,用戶可以選擇重新配置)。
缺點
稍復雜。
為重量級的框架(包含大量UI),體積大。如果導入ext-all.js,壓縮后也有近500k。
ExtJs與jQuery比較
1.EXT體積大,jQuery更專注於簡化最基礎的開發工作.所以使用起來,也就感覺更像是使用原始的js進行開發一樣
2.EXT界面美觀,jQuery一般
3.EXT代碼復用性強
4.EXT兼容性還是有點小問題,jQuery兼容性良好
5.EXT不易調試,不易修改
6.Ext使頁面是只留下body,搜索引擎無法收錄。(內部系統無所謂)
7.jQuery的事件綁定更強
結論,Ext簡化了很多工作,讓開發更簡潔,更方便,但也帶來了很多麻煩,給我們留下了更小的選擇空間,局域網里面我們可以使用EXT,但是在互聯網上優先jQuery
五.Silverlight同傳統BS系統的對比的優勢
- 開發效率
較高,一整套的SDK及控件(不斷豐富中),方便實用,開發資源豐富,相對於Jquery等成熟的js框架,調試,優化更方便。目前SL已經有100多個獨立控件處理輸入輸出,排版以及視覺效果。從系統后台數據綁定的角度來說,Silverlight 提供了查詢數據元的三種內置LINQ選項(LINQ到對象,LINQ到XML,LINQ到JSON)。把數據和UI綁定時,Silverlight提供了單次(one-time),單向(one-way)和雙向(two-way)綁定支持。
注:LINQ,語言集成查詢(Language INtegrated Query)是一組用於c#和Visual Basic語言的擴展。它允許編寫C#或者Visual Basic代碼以查詢數據庫相同的方式操作內存數據。
2. 客戶體驗
SL的推出就是為了提高客戶體驗來的,界面展現元素豐富,學習資源多。提供了豐富互動的應用程序(RIA),提升了人機交互易用性水平。
3. 安全性
MD5,HASH,對稱加密都已經在SL中實現,故,有了算法上的保證,就是自己創建SSL通道,以及使用數字證書技術,都還算比較容易。
即使是代碼級的安全,用傳統方式實現也可以。
4. 后期維護性
這點現在也是我存在顧慮的一點,Silverlight發展很快,伴隨着版本的不斷更新,新的功能和控件不斷發布出來,如Silverlight1到2到3也就幾個月的時間,這對系統的穩定性帶來一定的影響,好在微軟在Silverlight的立場上是鑒定和長期的,而且在官方也開放了一些實用的資源例子,在各個方面推動Silverlight的應用,這也多少打消了我的一點顧慮。
結論:
以上通過這次對extjs、JQuery、WPF、Silverlight的調研,分別了解了各個UI框架的優缺點及各自的聯系,再結合本公司實際業務系統的應用環境,應用場景來看外網建議選擇Silverlight,內部系統,應用WPF。
對於現在即將開發的新系統來說,使用WPF /Silverlight的原因如下:
- 之前有一定的技術積累,上手相對容易。
- 在微軟的這個大背景下,發展前景較好,支持資源豐富。
- 最新的前沿技術應用,界面友好,展現方式新穎,接受程度高,支持多媒體、豐富格式的文檔、3D、觸摸控制等,在短時間內開發出先進的應用程序,尤其是報表展現方面。
- Xaml語法簡單,可配合Silverlight工具動態生成,將UI設計同后台編碼有機的分離,並且集成vs環境,運行和調試比較方便。
- Silverlight客戶端無需安裝幾百兆的Framework,只需安裝客戶端插件即可(8M)
- WPF /Silverlight service直通訪問,支持多線程、客戶端緩存、硬件加速等體現RIA端到端的優勢
- Silverlight跨平台和瀏覽器,支持手機等多媒體應用。
- WPF同Silverlight的界面語言均為XAML,可以很快將WPF的界面設計應用到Silverlight中,二者后台都是調用WCF處理邏輯運算和操作數據庫,但兩者的開發庫不一樣,合並使用需考慮2種解決方案。
- WPF的交互性更強,相對於Web的ajax技術,從開發精力、交互性能保持領先,同時WPF支持客戶端同網絡斷開的邏輯處理,同時WPF可以直接操作xml作為數據源。