2008年7月6日 星期日

從Silverlight 2.0的新功能,遙想Web的未來


  Silverlight 2.0比起1.0令人驚艷不少,在1.0當中幾個過去被談到缺少的機制,在2.0大幅度補齊,其中與開發資料庫應用程式有關的,莫過於Data Binding技術以及IsolatedStorage機制。

  透過Silverlight 2.0當中的Data binding技術以及IsolatedStorage機制,我們可以很輕鬆的建立出類似左邊這樣的用戶端資料處理介面(按這裡試用看看),不僅程式碼相當簡單(不到百行吧),而且在UI上更勝ASP.NET與傳統的WinForm程式一籌。

  除此之外,程式碼的撰寫以及維護和除錯,都比ASP.NET要容易不少,過去很多台灣和大陸地區的開發人員對於在Silverlight 1.0當中的中文字顯示和輸入問題的疑惑,相信在看到這個2.0的範例後這些疑慮你可以一掃而空。
  透過IsolatedStorage機制,讓開發人員可以大方的把需要保存的資料存放在用戶端,不需要在意它的存放位置。若您不喜歡這樣的方式,你也可以透過WCF從伺服器端將需要的數據下載,暫存在用戶端的記憶體或是HD當中,透過程式碼來操作。
  除了UI絢麗性與親和度大幅超過ASP.NET之外,我個人比較喜歡的原因是靈活性和自由度,有點讓我回想起從前開發WinForm的隨心所欲的日子.....
  說真的,HTML給ASP.NET Developer的限制,以及為了模擬WinForm或是提高Web開發環境中的UI的效能而硬生生所加入的AJAX技術,已經讓原本應該要 "簡單輕巧" 的Web應用程式變的龐大而複雜不已,面對這樣的問題,有兩派不同的路線正在彼此較勁。

  如果你觀察ASP.NET這幾年來的演變以及ASP.NET 3.5 extensions的出現,你會發現這一派儼然已經透過種種疊床架屋的技巧,把原本簡單的ASP.NET演變成可以開發大型應用程式的技術平台。本來ASP.NET在2.0前的訴求就真的比較適用於開發小巧的網頁或是輕量級的企業入口網站或是portal應用(OK,也因為這樣很多case被JSP搶去了),但是現在在3.5 extensions當中加上了LinqToSQL(以及ADO.NET Entity framework),加上了Data Services、加上了Dynamic Control、加上了MVC,一切就會不一樣了...

  這一派的人讓 ASP.NET搖身一變成為具有高延展性和彈性的開發架構,你可以設計出給兩萬個User使用的Web Application、你可以透過Dynamic Control或是MVC將敏捷開發以及多層式架構的開發觀念帶入微軟的Web開發領域、你可以透過這些機制、認真的、放心的建構大型(真的是大型的,不是那種同時使用的User只有幾十個人的)應用程式。到了這一步,ASP.NET才真的可以抬頭挺胸的登堂入室。

  另一派,則根本放棄了HTML這個煩人的架構,釜底抽薪了換成了WPF for Web或是Silverlight,這一派的人認為,Web上的RIA才是未來理想的Web應用程式解決方案,其他的只是緣木求魚。

  這派的人認為,因為我們已經跟ASP.NET奮戰了很久,從一開始HTML就不是讓人寫程式用的(那幹嘛用的?其實很多人忘了,HTML是文件的格式,本來就不是用來呈現UI的介面),從CGI、ASP、一路到ASP.NET,現在你開發一個WebForm應用程式,少不了要接觸幾種幾乎不同的技術,ASP.NET、AJAX、HTML(與CSS),這還只是展現層的部分,如果你需要開發出比較有 "層次感" 的應用程式,那VB或C#的OO觀念恐怕是必修的課程,除此之外,你可能會硬生生的把SQL崁入完全無關的ASP.NET Code behind程式碼中,然而這對於過去習慣開發n-tier架構甚至client-server架構的程式設計師來說,根本是近乎荒謬的程式寫法。

  但是...天知道有多少ASP.NET開發人員是這樣幹的,是,我承認,包含我在內的幾乎每一本坊間書籍都是這樣寫的,原因很簡單,這與過去ASP時代的背景有關,在過去我們希望透過簡單的script來解決問題,而到今天我依舊認為,ASP.NET非常適合用來開發輕量級的Web Application,讓開發人員相當容易的就上手,反而JSP則包袱太多,要寫一個像樣的應用程式,少不了要在架構上下足功夫,相對的初期產能就低(高產能要在過了一定程度陡峭的曲線之後才慢慢出現)。但是優點也是缺點,對於開發高延展性需求的web應用程式,可能ASP.NET在3.5 之前都是不及格的。

  當年發展ASP的團隊,恐怕打從心底沒想過ASP會搞得那麼的偉大吧,拜internet之賜,WebForm某種程度的變成主流。但是要當主流不容易,UI要夠精緻,AJAX技術非上手不可,偶而為了讓網頁有畫龍點睛的神來之筆,還得崁入一個Flash(現在我們就用Silverlight),大哉Web開發技術!#%@!$!#%*!*$&

  也因此,從這一派的角度來說,把HTML根本性的拋棄可能是釜底抽薪的好方法,在WPF for Web或是Silverlight上重新開始一個嶄新世界,恐怕會更令人期待。

  這兩條路線,我們現在看到是同時並行的,最主要的原因是,市場不會一夕之間改變,而微軟有的是能量同時經營這兩條路線,在某些專案當中,兩種技術並用也是一個很好的選擇,而未來呢? 很多人都有自己的想法,我也有,只是畢竟我是凡人,不是那種會一眼看到未來的能人異士,連明天會發生什麼事情我都不知道,也無法控制,未來,在我的腦袋裡恐怕有的也只有一些些無關緊要的推測了...

沒有留言: