深度體驗SilverLight
原文地址:http://www.riaexpert.cn/2007/08/30/%e4%bd%93%e9%aa%8csilverlight10rc/
雖說silverlight各種嘗鮮版已經出了N多,可是一直沒有時間好好體驗一下這個M$為RIA界帶來的巨大驚喜。曾經沉浸在Ajax中無法自拔,期盼著WPF這個呼之欲出的RIA救世主;漫長的等待中,陰差陽錯的結識了Flex,才發現原來Flash也有爭奪RIA霸主地位的實力。
今天實際使用silverlight開發了一個像素畫的」Hello World」,可以在右邊按鈕選擇畫筆的顏色。源代碼採用javascript編寫(1.0RC也只支持這個了);詳細的內容請看DEMO,截圖如下:
使用過後,發現silverlight如果要作為真正的RIA開發平台,比起flex還說還是有不短的路要走:
1.在1.0RC中,還沒有行程完成的xaml->object,或是object->xaml的機制,也就是說在你的 business logic code中還不能自由的以Class instance的方式來初始化對像;而是使用簡陋的plug.content.createFromXaml(xamlString)來創建一個 UIElement;與我們常用的new Class的實例化方式有較大區別。
2.雖然可以使用vs2005做一些基於IDE的開發,但是這種vs的支持僅限於intellisense功能;而不支持WYSIWYG的開發方式,無法發揮IDE的真正作用,當然這也是目前silverlight framework中缺少對於繼承於UIElement的控件的支持相關的,下面會說到。
3.最不理解的就是,在silverlight發佈之後,M$並沒有緊跟著推出一個基於silverlight的control library,也就是說,如果你要開發一個RIA應用的話,你首先得自己構建一套統一樣式的client control library,你得從按鈕,下拉列表框開始開發;這個對於RIA應用的開發是不可理喻的缺點,也是致命的弱點,雖然這個特性對於很多「大牛」來說,不屑一顧。
4.缺少對於流行RIA應用特性的支持;雖然現在silverlight支持播放流媒體,可是這樣的流媒體僅僅是單向的;silverlight依賴於windows media server的流媒體能力,並不能實現Flash Media Server一樣,client同server端的雙向流媒體通信;同時缺少對於服務器客戶端通信方面的支持,在這個RIA的年代REST和 Webservice顯然是對於多媒體應用無能為力的。
5.目前來說,開發方法非常怪異;與flex和flash中開發方法對比強烈不同,silverlight中混雜了客戶端應用程序與動畫的不同開發方法,讓人無法適從。不過可能未來M$指望用不同的IDE把不同的開發者分開;動畫開發者使用Expression Blend,應用開發者使用VS.net;可是至少在缺少IDE的情況下,真的很怪……
雖然silverlight標榜自己支持multi language,但是如果指望昔日的frontend engineer會使用ruby,python,甚至c#和vb來開發RIA的話,真是天方夜譚,雖然JScript也被CLI支持,但是這個從來就不被看好的孩子,已經面目全非,形同雞肋了;實際上silverlight的多開發語言,並不能取悅開發者;但在這樣的情況下,微軟非但不在 silverlight中強化javascript的作用,反而將其弱化到了silverlight與browser的粘合劑的地步,這點絕對會引來 RIA最大的潛在開發者–ajax developer的唾棄。
再看flex,雖然使用actionscript3,但是這是與javascript同根生的親兄弟,兩者的差別近乎為0;節省了開發者轉向 flex的時間。同時flex有完備的ide,有完備的UI library,可以快速的構建RIA應用;加上易用的Flash Media Server,也就是說一個普通的ajax developer可以很容易的在flex平台上面實現當初在html+javascript平台上無法實現的很多夢想;
綜上,我們也該看到,雖然silverlight有這樣那樣的缺點,但是以M$操作系統的佔有率,silverlight在部署及性能方面佔有極大的優勢,而以M$的開發經驗,完善silverlight的開發環境及體驗也不是很難的事情;這點,大家可以觀察.net如何在java佔領制高點的情況下奪回中小企業用戶市場的案例,很有啟發。
可憐了開發者的我們,還是只能做牆頭草,把兩個平台都摸清,才能有備無患。