公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2008年8月11日 星期一

Silverlight 2 講堂 -15:Silverlight 外傳(WPF篇)

今天在上WF的課,講解到.NET 3.5 以後的分散式應用程式的開發技巧,剛好有談到Silverlight的歷史,順便在講堂中跟各位分享一下。

Silverlight原本是叫做WPF/E,E表示Everywhere的意思。但是應該已經沒有多少人知道,事實上在一開始,WPF的設計目標,就是希望透過一個統一的展示模型架構,將來開發人員只需要建立一套UI,就可以在所有的裝置中使用(Design once,show anywhere ?)。但是後來進行了沒多久,就發現了這是一個不可能的任務,所以WPF就分成了所謂的Window模式與Page模式兩種開發與執行環境,其中:

    1. Window模式:開發完成之後直接封裝成一般的可執行檔,然後在.NET用戶端機器中執行。
    2. Page模式:開發完成之後封裝成可裝載到支援XAML的.NET用戶端瀏覽器(IE6、IE7)當中執行。

因此在VS 2008的專案範本中,你會看到有兩種WPF的專案範本:

快照1

其中,"WPF應用程式"就是Window模式,"WPF瀏覽器應用程式"就是Page模式。雖然在區分成兩種環境之後,雖然WPF透過Page模式變成"有希望"可以到處執行了,但是實際上,因為Page模式還是需要在有.NET Framework的環境中執行,再者網際網路是一個開放式的平台,其他的瀏覽器廠商以及使用者(特別是其他作業系統的使用者),不見得希望以及需要這些東西。所以WPF雖然分成了兩種模式,但是實務上離"Everywhere"似乎還有一大段距離.......

眼看著WF、WCF的開發技術陸續final,WPF進度一直卡在這裡也不是辦法,因此有了WPF/E的新架構模式出現 -- 放棄了透過WPF一統天下的想法,轉而朝瀏覽器嵌入式元件的方式來發展WPF的技術,以符合網際網路的跨平台技術架構(Flash、Applet....)。但在剛從WPF/E發展出來的Silverlight 1.0當中,我個人是認為因為當初開發團隊仍想延續WPF透過XAML一統天下的精神,因此在Silverlight 1.0的環境當中,才會採用了JavaScript+DOM+XAML的架構 -- 但這是註定不會紅的架構! 因為目前在瀏覽器中透過DHTML(JavaScript+DOM)就已經可以完成許多動態的效果,Silverlight 1.0雖然有3D與多媒體效果的加持,但是JavaScript天生不易與Server端直接整合的特性(不是不能,但是很麻煩),加上多媒體部分與Flash的功能重疊,以及嵌入式裝置的瀏覽器也不一定支援JavaScript(支援的物件模型也不盡相同),因此推出不久之後,微軟應該就發現到這是一個死胡同。

於是乎,在Silverlight 2.0當中,採用了綜合ASP.NET與Java Applet的做法:設計時像ASP.NET表單一樣,將UI的部分透過XAML Designer設計(Expression Blend)之後,在透過VS 2008加上程式;執行之前再編譯成組件,載入到Browser當中執行。你可以參考下圖的比較:

簡報1

當然,為了適應瀏覽器的執行環境,所以在Silverlight 2.0的用戶端安裝程式中,安裝到瀏覽器中的.NET Framework只是一個"精簡版",但是已經足夠應付大部分用戶端執行的需求了! 因為在Silverlight 2.0的執行環境當中,提供了對於WCF服務的支援,因此讓瀏覽器中執行的Silverlight 2.0應用程式,可以隨時在需要時動態的與Server端的服務結合,獲得需要的資源。如此一來,你就可以不需要在每一台用戶端機器上安裝完整的.NET Framework,就可以透過用戶端的瀏覽器執行在Server端以服務方式執行的軟體功能(Software as a Service)! 雖然不是真正的透過WPF統一所有平台的展示層技術,但是卻換得了在更多異質平台中執行.NET應用程式的可能性,也算是"塞翁失馬,焉知非福"啊!!

"外行的看熱鬧,內行的看門道",如此一來,各位"開發人員"應該知道,Silverlight 2.0應用程式技術的重點,絕對不是甚麼動畫效果、多媒體效果那些東西,在網路行事曆、網路Email、網路相簿,網路文書編輯器、網路磁碟機(SkyDrive)等等新型態網路服務技術出現之後,作業系統的功能慢慢的可以被網路平台取代,以Silverlight 2.0技術結合Server端的這些服務,未來要發展"Windows as a Service",相信也是不無可能的。

1 則留言:

RojarSmith 提到...

如果微軟願意在開發工具上多給一些利多爭取市場的話,SL2仗著地利優勢應該是相當有吸引力的。不過工具真的要先到位阿~~

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)