image

由於明天要向老師報告微軟最近吵得相當火熱的技術:Silverlight,今天晚上便臨時抱佛腳找了點資料準備明天報告。(不過事實上這門課我很認真的,只不過最近專題、工作、練功等諸事纏身,不得已只好最後一天犧牲睡眠來做事orz)

首先要說明的是,Silverlight是個「純client端」的技術,你可以把他想像成跟Flash的.swf一樣,放在任何的Web Server上讓使用者取得後,才依賴client端的Runtime Component render出畫面來。

初次接觸Silverlight,除了我的小黑上已經裝有.NET Framework 3.0之外,我還另外裝了Expression Blend 2 Preview(Blend不支援Silverlight開發,必須是Blend2才有)。

稍微翻了點資料之後,目前大概看到Silverlight有以下幾點特色:

  • 以XAML為基礎,動態render畫面(向量文字、2D圖形或影音畫面等)
  • 畫面中的文字是可選取、可被搜尋引擎辨識的 (for SEO purpose :D)
  • 具備強大的影音播放能力,號稱擁有高畫質,且畫面縮放不會影響解析度
  • Silverlight Object Model(Silverlight DOM),可使用JavaScript直接操控Silverlight現有元素的屬性或是動態新增元素(這點是讓我覺得最酷的)

之前曾經有短短幾天使用Flex開發Web Application的經驗,當時發現要使用JavaScript來跟Flash互動並不難,透過External Interface似乎就可以讓ActionScript與JavaScript溝通,但是我們當時好像光看到這樣的運作機制就懶得繼續寫下去了XD

沒想到現在Silverlight居然可以讓developer直接使用JavaScript去操控元素,換句話說使用JavaScript就可以同時操控HTML本身的DOM結構,也可以操控Silverlight的DOM,實在是太酷啦!尤其是可以動態新增元素,這一點對開發Silverlight的彈性來說還滿棒的!試想,透過Ajax的機制,從後端動態產生"我想在Silverlight上出現的畫面",傳回來其實是一串XML(應該說XAML比較精確:P),但他卻會變成在Silverlight上精美的畫面,光想到這樣的運作方式就覺得很興奮,再加上Silverlight是純Client端的技術,改天應該來玩玩看Silverlight on Rails (言下之意是我可能要放棄Flex on Rails了orz)。

不過目前所看到的,如果要在Silverlight畫面上呈現大量資料,好像沒有現成的DataGrid?Third-party開發的應該是有,不過就不像Flex Builder裡面內建一堆可用的controls。Anyway,過幾天有空再以實例來分享使用JavaScript操控Silverlight的程式。

註:目前我都只有看到從Silverlight主動呼叫某個js function的範例,要是可以直接從js去抓到silverlight的element就更有趣了:D是我手殘,雙向互動完全是沒有問題的。