再論 Silverlight 終將勝出

先前朋友回覆 http://byronhu.spaces.live.com/blog/cns!BF14192BD27975CB!1445.entry 這篇 blog,都覺得 Silverlight 要很久才會流行,這我非常贊同。
畢竟開發的生態系是滾雪球般慢慢變大,一旦大過臨界點後,才風起雲湧。雖然微軟拼命加快 Silverlight 的研發腳步,讓其成為微軟有史以來進展最快的技術,但要開發團隊上手,還早。如同 2000 年開始推 ASP.NET,2002 年正式面市,至今我參與顧問案的諸多大企業與政府部門,仍停在 ASP。而新的案子才正要以 ASP.NET + Ajax 開發,小的有四、五個人,大至五、六十人的開發團隊在 ASP 與 ASP.NET 交替中,才剛磨合。技術評估才過,User、PM、SA…等非技術專精人員才剛對技術的可行性有些認知,美術和 Developer 的合作、Service 和 UI 的 Developer 才剛嘗試分工、團隊的測試、版控、部署…才規畫好,底層的 base classes、framework、template、code generator…等 building blocks 才剛完成、Ajax 的 component 才剛買、Open Source 的 library 才剛熟悉、網管才了解 Ajax 的存取特色,安控還沒想到弱點防護…。 換 Silverlight…咬牙切齒,要讓 PM 在 deadline 時自殺嗎!?這會讓整個團隊翻掉… 我知。
的確,自己參與的案子皆非1、2人,1、2 個月可完成的,我深切體認任一個技術都非說換就可以換。大樓蓋一半時,不可以重做地下室是自己一再告知業主的。
 
但,我想強調的是 Silverlight 的架構比 Ajax 好,這需要早點注意、學習,讓大家在做下一個案子,或下下個案子時,可以抉擇而非被迫。
 
我同樣知道另一種苦,用 Ajax 的苦。
HTML 以文件共享出發,至今演化到 DHTML + Ajax,但它作為撰寫應用程式的基礎不好。
1.結構化不足,語法不夠強制、嚴謹。實不利多人開發,協同合作,版本維護。DHTML 以 Script 將 UI、Business rule、data access 全混在一起,這種土壤很難長出易學易用的 library。
2.太倚靠Brower 的 DOM, 而 Browser 的版本太多,光是 IE 的 6、7、8 版,政府標案要求所有的網頁要同時適用 IE 和 Firefox…等,就讓人頭大,我們還在慶幸標案沒要求同時適用所有其他 Browser,例如 Apple 的 Safari 不要告訴別人 。一般 Open Source 或外購的 Script Library 其原始碼都又大又亂,而 DHTML Debug 本來就難,一遇到跨 Browser 的要求,若還要求豐富的使用者操作,真苦。但…未來是 Device 的世界,看來是 18 層地獄又下一層了。
3.Ajax 本身雖不太耗資源,但若用了些漂亮又功能強大的 control,其 script library 和往返的 tag + script + data 既佔網路頻寬,又耗 brower 去解析。
4.DHTML + HTTP 很難做雙向溝通,反向呼叫。對於需要事件觸發、 Push 或是嚴格要求物件生命週期控管的商業需求,都不易完成。
5.混合太多技術,Server 端的 .NET、Client 端的 JavaScript、HTML tag、CSS,太多平台,太多輔助程式,單就 UI 端耗的研發成本大過 Business 和 Data 端,僅因 UI 對拍板重要(因為決策者只看得懂 UI 好用與否),但長遠不重要(因為 UI 換得最快,RDBMS 活了快 40 年,隨便一套 ERP 都要活過 10 年,但 Console Prompt、Windows Form、HTML、ASP、ASP.NET、AJAX 等技術一直更迭,小則版本更新,加入新的 framework,大則取代,沒有一個技術活得長久。Data 和商用服務要延用,UI 可以換掉),其投資比例失衡。
 
就個人感覺,Siverlight 是專為 SOA 和 Rich Client 打造的解決方案,微軟再度展現以一項技術滿足多項需求的開發平台。它是真正的全方位 .NET,而非困在 HTML 中,藏在遠端的.NET。它終將勝出,但漫漫長路。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: