摘要:Silverlight
【原文位址】Silverlight
【原文發表日期】 Monday, May 07, 2007 2:49 PM
上個星期一,我在拉斯維加斯的MIX大會上做了一個主題演講,討論了過去的一年裡花費了我大部分時間的一個新專案:Silverlight。
Silverlight是個跨平台,跨瀏覽器的.NET外掛,允許設計師和開發人員在瀏覽器中建造豐富的媒體體驗和RIA應用。這個星期我們發佈的預覽版目前在Mac和Windows上支援Firefox, Safari 和 IE瀏覽器。
想感受一下使用Silverlight你都能建造哪類富瀏覽器應用的話,觀看一下Metaliq的這個7分鐘的「頂級香蕉(Top Banana)」影片編輯範例程式的錄影:
「頂級香蕉(Top Banana)」應用是用C#開發的,可以在任何安裝了Silverlight的系統上跨平台執行。整個應用的下載大小(意即在用戶輸入該網站的位址時,所有的XAML和編譯過的程式碼的大小)只有50KB左右。我們將在今夏晚些時候作為範例程式發佈這個應用的原始碼版本。
我的主題演講
你可以在這裡觀看我的整個主題演講(註:目前這個錄影只顯示了講義和Demo,一個星期內他們將更新推出一個更完整的錄影版本)。
我非常幸運有一些很重要的客戶在台上和我一起展示用Silverlight開發的一些非常豐富的體驗,他們包括,Netflix(展示了一個很棒的「按需電影(movie on demand)」錄影服務,同時支援社會網路), CBS (展示了用戶產生的錄影支援), Metaliq (展示了上面這個影片編輯應用) 和MLB.com (展示了他們精妙的棒球大聯盟的新線上體驗)。
在主題演講中,我們還展示了你可以使用一些新的Expression Studio產品(包括Design, Blend 和Media Encoder產品)來建造可交互的影片播放器體驗。我還做了一些開發Demo,包括使用Visual Studio建造一個新的Silverlight專案,以及使用 .NET中的新Ruby支援在一個動態語言控制台裡迭代開發一個Silverlight應用(該控制台是完全使用IronPython開發的,是在Mac的Safari瀏覽器中Silverlight裡執行的)。
Silverlight 1.0
這個夏天我們將推出Silverlight的第一個版本。它著重於促成豐富的媒體場景,下載大小在1.2MB左右。它包括下面一些特性:
- 內建的codec支援,能在瀏覽器裡播放VC-1和WMV影片, MP3和WMA音頻。尤其是VC-1 codec, 在把媒體融入web體驗方面是個很大的一步,因為它支援播放高達720p(高清晰度)的高品質影片。這個codec格式跟所有的HD-DVD和藍光DVD播放器支援的格式是一樣的,為數於億計的移動設備,XBOX 360,Windows Media Center和Windows Media Player所支援,這允許 一個人把內容編碼一次,在所有這些設備+Silverlight中毫無修改即可使用。這允許你使用龐大的現有影片內容和豐富的編輯工具來生成可用於Silverlight的影片內容。
- Silverlight支援漸進下載的功能,以及從任何web伺服器播放媒體內容的能力。你可以將Silverlight指向任何含有影片/音頻內容的URL,它就會下載這些內容,允許你在瀏覽器裡播放這些內容。不需要特別的伺服器軟體,Silverlight可以與任何web伺服器相合作(包括Linux上的Apache)。我們也將發佈一些IIS模組,提供你可以在你的伺服器上免費啟用的有用的媒體控制和頻寬控制特性。
-
Silverlight也可支援內建的媒體流廣播(media streaming)。這允許你在後端使用一個象Windows Media Server這樣的流廣播伺服器(streaming server),做影片/音頻流廣播(註:Windows Media Server是執行在Windows Server上的的免費產品)。流廣播(Streaming)帶來一些非常大的好處: 1) 它可以在用戶在一個大的影片流裡搜尋時改進用戶的體驗,2) 它可以極大地降低頻寬的成本(大部分用戶並不觀看整個錄影,所以在使用漸進下載時如果他們在影片結束之前離開的話,你就浪費了頻寬)。
-
Silverlight允許你創造豐富的UI和動畫效果,把矢量圖像與HTML混合起來創造出引人入勝的內容體驗。它支援一個Javascript程式設計模型來開發這些效果。一個好處是,它極大地簡化了把這些體驗整合進AJAX網頁(因為你可以編寫Javascript同時來更新HTML和XAML元素)。
-
Silverlight使得建造豐富的影片播放器交互體驗極其容易。你可以把它的媒體能力與矢量圖像支援混合起來創造你想要的任何型別的媒體播放體驗。Silverlight包含了全螢幕的功能來創造一個完全沉浸的體驗,以及直接在正播放的影片內容之上覆蓋選單/內容/控制項/文字的能力(允許你促成DVD一樣的體驗)。Silverlight還提供了動態改變正在播放的影片的長寬的功能,而不要求影片流中止或重啟。
你可以使用任何標準的文字編輯器來開發Silverlight應用,而不用特別的工具。微軟也將通過Expression Studio配套產品發佈針對Silverlight 1.0應用的支援,包括內容管理和影片編碼的豐富的工具支援。你今天就可以在這裡下載支援Silverlight的Expression Blend 和 Expression Media Encoder CTP預覽版。
想進一步瞭解Silverlight 1.0的特性,以及如何開始開發針對Silverlight 1.0的體驗的話,我強烈推薦你在這裡觀看最近發佈到新www.silverlight.net社區網站上的一些精彩「How do I?」錄影。
我也推薦你觀看這些免費的MIX大會的分會場講座,它們討論了Silverlight 1.0和媒體場景:
- Building Rich Web Experiences using Silverlight and Javascript for Developers
- Deep Dive on Silverlight Media Integration
- Developing ASP.NET AJAX Controls with Silverlight
- Creating and Delivering Rich Media and Video on the Web with Silverlight, Expression Studio, and Windows Server
Silverlight 1.1
在MIX上我們推出Silverlight 1.0的beta版本(這個夏天將推出1.0的最終版本)的同時,還推出了Silverlight 1.1的alpha版本。
Silverlight 1.1包括了.NET框架的跨平台版本,來促成在瀏覽器中的豐富的.NET開發體驗。Silverlight 1.1安裝檔(包括所有的Silverlight 1.0的特性+CLR+WPF和.NET FX庫API的一個子集+動態語言支援)的整個下載大小為4M左右,只需花少於20秒的時間即可在安裝在一個機器上。
Silverlight V1.1包括下面一些特性:
-
一個內建的CLR引擎,給瀏覽器提供了超高性能的執行環境。Silverlight使用和今天我們發佈的完整.NET框架一樣的核心CLR引擎(是從同一個原始碼樹編譯出來的)。它提供了你今天的
.NET程式碼使用的同樣的型別系統,垃圾回收器,和JIT程式碼生成引擎。這意味著你編寫出的.NET程式碼可以在Silverlight,ASP.NET,和 WinForms/WPF Windows應用中執行。它也意味著,你現在可以在瀏覽器裡執行快於解釋的 Javascript 250倍的程式碼。
- Silverlight包含了一個豐富內建型別的框架庫,你可以用來開發基於瀏覽器的應用。這個框架庫是你今天使用的完整的.NET框架類別庫的子集,允許你很輕鬆地重用你現有的技能和知識。它包括對集合,泛型,IO,執行緒,全球化,網路和LINQ的支援。
- Silverlight包含對WPF UI程式設計模型的支援。Silverlight 1.1 Alpha版本允許你使用托管程式碼/事件處理器來對你的UI程式設計,支援定義和使用封裝的UI控制項(由任何托管.NET語言開發的)的能力。第一個Silverlight Alpha還沒有豐富的內建UI控制項 — 因為我們一直在先忙於建造核心的UI基礎設施。但不用擔心,將來版本一定會包括豐富的高層次的控制項在內的,與此同時,你可以在這裡下載一些很棒的控制項範例程式。Silverlight的WPF最終也會發佈對像佈局管理器和資料繫結這樣的核心WPF構造,這些特性在目前的alpha版本裡還沒有實現,但就要來了。
- Silverlight提供了一個托管的HTML DOM API,允許你用任何.NET語言對瀏覽器裡的HTML進行程式設計,這意味著你現在可以使用C#或VB對一個HTML按鈕連接一個事件處理器。Silverlight也提供支援,能讓HTML頁面裡的Javascript叫用你的Silverlight控制項/應用向外呈示的.NET方法。Silverlight包含了一個JSON序列器,支援.NET資料型別與Javascript之間的轉換,意味著你可以在Silverlight裡使用標準的瀏覽器Javascript程式碼叫用C#方法,然後讓C#傳回一個.NET集合,被Silverlight序列化為Javascript集合,為你的瀏覽器裡的Javascript所用。
- Silverlight不要求後端的web伺服器一定要使用ASP.NET,意味著如果你想要的話,你可以把Silverlight與Linux上的PHP一起使用。但是,我們自然會添加一些非常好的特性,允許你輕鬆地把客戶端的Silverlight和伺服端的ASP.NET整合使用。Silverlight 可以使用標準的ASP.NET應用服務(成員,角色,用戶信息等等),可以叫用ASP.NET提供的WCF或ASMX web服務。這個星期,我們也會發佈新的ASP.NET服務控制項,方便在ASP.NET頁面裡使用Silverlight控制項。
下面是我錄製的一個22分鐘的錄影,示範如何使用Visual Studio和Expression Blend從頭開始建造一個Silverlight應用(點擊這裡下載我使用的UI控制項):
你可以點擊下面這個圖案下載一個非常好的海報,該海報對目前 Silverlight 1.1 alpha版本支援的一些主要的.NET命名空間和特性做了一個概述:
我還做了一個Channel9採訪,你可以觀看一下,進一步瞭解托管程式設計模型在Silverlight裡的工作細節,以及我們是如何添加CLR支援的:
我也推薦你觀看MIX大會的這些免費的分會場講座,它們討論了在Silverlight 1.1中使用.NET的場景:
- Building Silverlight Applications using .NET (Part 1)
- Building Silverlight Applications using .NET (Part 2)
- Extending the Browser Programming Model with Silverlight
你可以在Nick這裡的網站上下載Part1/Part2講座裡範例程式的原始碼。
動態語言支援
在MIX上,我們還宣佈發佈了我們稱之為「動態語言執行時期函式庫(Dynamic Language Runtime)」(簡稱為DLR)的新.NET庫的第一個版本。
我們為使.NET和CLR成為第一流的動態語言環境投資甚巨,一年多以前,我們在我的團隊裡組成了一個專門的開發組,專注於對動態語言建造更棒的CLR執行時支援,以及對流行的動態語言提供.NET上的優異實現。
新的動態語言執行時(DLR)往CLR裡添加了一些為動態語言場景特別設計的服務。這些服務包括共享的動態型別系統,語言宿主模型和對方便生成快速的動態程式碼的支援。有了這些額外的特性,在.NET上建造高品質的動態語言實現就非常容易了。
非常重要的是,使用新的DLR支援建造的動態語言實現不是解釋的。而是,我們使用在CLR 2.0里添加的輕量級的程式碼生成特性建立在記憶體裡的IL,然後在執行時JIT到機器程式碼,而不用保存任何東西到硬碟上。這導致比解釋程式碼好得多的執行時性能,輕量級的程式碼生成特性確保了一旦我們使用完了JIT過的程式碼,我們可以垃圾回收,以避免記憶體洩漏。這促成了非常精妙和強有力的動態語言程式設計環境,允許開發人員輕鬆地使用動態語言來對整個.NET API程式設計。
DLR以及建立在其之上的所有的動態語言,可用於瀏覽器裡的跨平台Silverlight應用,伺服端的ASP.NET 2.0應用,和桌面上的WPF/WinForms應用中,即,基本上就是所有啟用了CLR的地方。
在MIX上,我們宣佈了微軟將發佈我們自己在.NET上實現的4門動態語言:
- Python
- Ruby (新)
- Javascript
- Dynamic VB (新)
我們將在CodePlex上發佈我們的Python和Ruby實現的程式碼,以及底層的DLR庫的程式碼,所有的原始碼都將在可完全修改的許可下發佈。你現在可以在IronPython codeplex網站上下載DLR以及Python實現 (IronPython)。Ruby實現(我們將稱之為IronRuby)的程式碼,將在幾個星期內在CodePlex上發佈,等它有所進展之後。
想進一步瞭解我們的動態語言支援的話,我強烈建議你觀看一下 John Lam 的這個15分鐘的錄影,他展示了一個用IronPython開發的動態語言控制台,在Mac上Silverlight裡執行。它允許開發人員在瀏覽器裡使用Ruby, Python, Javascript和VB交互性開發Silverlight應用(帶有intellisense 支援!):
我也建議你觀看MIX大會上這個免費的分會場講座,它討論了Silverlight1.1和動態語言:
Jim Hugunin,DLR的首席架構師,著有一個關於.NET中動態語言的精彩的部落格,我建議你訂閱這個部落格,如果想理解DLR是如何工作的,你都能用它來做什麼的話。
www.Silverlight.net
上個星期我們推出了我們最新的線上社群網站:http://www.silverlight.net
就像 www.asp.net 和 www.iis.net 一樣,我們將使用這個新的Silverlight網站有規律地發佈範例程式和「How-do-I?」錄影。它也提供了一個論壇系統,你可以在上面得到Silverlight方面問題的幫助。
點擊這裡訂閱我們在將來的幾個月裡將在這個網站上發表的新內容的RSS feed。
結語
Silverlight開創了無窮多的機會,來建造可以跨平台和跨瀏覽器執行的極其豐富的客戶端體驗。
對.NET開發人員來說,這意味著你現在可以在瀏覽器裡(使用Silverlight),在web伺服端(使用ASP.NET),在桌面應用裡,在移動設備裡,使用任何開發語言(VB, C#, Javascript, Python, Ruby等等)來編寫.NET 程式碼。你能夠使用強大的Visual Studio開發人員工具和Expression Studio設計師工具來產生這些體驗。
不用說,我對Silverlight的前景感到無比的興奮。我們還有工作要做,缺陷要修補,高層次的UI控制項/特性要添加,但我們上個星期發佈的核心圖像/媒體/執行時引擎是極其強有力的,為我們將來要建造的東西提供了一個非常穩固的可擴充的基礎。
在將來的幾個月內,我將在部落格裡發表更多關於Silverlight以及如何使用它的的文章。
希望本文對你有所幫助,
- Scott
附註:上個星期我度假去了,所以主題演講之後沒有及時發佈文章。這個星期的其他時間我將去蘇格蘭度假,所以請原諒我不能對評議做及時答覆,可能會晚幾天才會答覆。