1. 程式人生 > >關於微軟Silverlight,你應該知道的10件事

關於微軟Silverlight,你應該知道的10件事

對於任何成長中的企業來說,設計一個合適的網站是一件非常重要的事情,但是如何讓你的網站具有富網際網路應用程式(Rich Internet Applications,RIA)的體驗卻不是那麼簡單。為了在這方面為開發者減輕負擔,微軟最近推出了Silverlight——這是一個針對Web開發者而推出的跨平臺、跨瀏覽器的外掛。這個目前以“候選版”形式提供的外掛可以支援具有豐富使用者體驗的應用程式開發,其中包括多媒體、互動性和動畫等。Silverlight外掛目前可以支援Windows平臺上的IE和Firefox瀏覽器,以及在Mac OS X平臺上的Firefox和Safari瀏覽器。
    筆者使用Silverlight的時間比較長,一直在研究這個微軟號稱“Flash殺手”的工具。根據幾個月的第一手體驗,對它的技術方面的精華進行了總結。 
    隨著Siverlight公眾版的釋出時間的日益接近,現在是時候來熟悉Silverlight以及其如何影響你的Web應用程式了。然而,關於Silverlight的資訊如此眾多,一時之間讓人難以分辨哪些是重要的內容,哪些只是廣告宣傳。下面我將盡我的最大努力來總結出關於Silverlight你應該知道的十件事情。
1、Silverlight消除了跨瀏覽器/作業系統的問題


    對於大多數開發團隊來說,開發一個可以同時支援當今比較流行的瀏覽器(包括IE、Firefox、Safari和Opera)的網站並不是一件容易的事情。問題不僅僅在於要編寫更多的程式碼,還包括由此帶來的呈指數級別增加的測試工作。隨著開發者為不同作業系統的不同版本的瀏覽器開發應用程式,測試的工作量會變得非常巨大。 
    通常情況下有兩種方式可以讓開發人員解決這個問題:只支援一部分瀏覽器,或者增加質量保證人員的數量來應對大的工作量。 
    相比之下,這個Silverlight外掛則不管使用者的作業系統和瀏覽器,而提供了一個統一的開發模型。目前,Silverlight支援兩種作業系統和三種瀏覽器。微軟承諾將在以後增加對Windows和Mac平臺上的Opera瀏覽器的支援。此外,Mono專案(.NET“開源版”專案)已經在它的Moonlight專案中取得了巨大的進步,通過該專案可以使Siverlight外掛支援Linux平臺。
2、Silverlight 1.1更值得期待 

    最近釋出的Silverlight 1.0讓許多機構開始考慮他們是否要開始使用Silverlight。雖然Silverlight 1.0具有很多重要的和有趣的功能,實際上大多數對Siverlight的採用要等到其1.1版的釋出。 
    目前還處於Alpha預覽階段的Silverlight 1.1版將首次全方面支援.NET平臺。這包含基本的.NET語言、C#和Visual Basic。此外,根據微軟表示,Silverlight 1.1還將為動態語言提供.NET支援,諸如Ruby、Python、動態Visual Basic和受控JScript。 
    在我看來,Siverlight所支援的的重要語言是C#和Visual Basic,因為它們允許目前的.NET開發者來建立有意思的Silverlight應用程式。在Silverlight 1.1版中,任何.NET語言都將被支援,因為真正提交給瀏覽器的實際上是.NET assembly。 
    相比之下,Silverlight 1.0只支援在客戶端解釋的ECMA語言。Silverlight 1.0非常適合於那些已經在使用客戶端指令碼語言程式設計的現有Web開發者。 
    Silverlight 1.1還支援一個豐富的客戶定製模型,這對確保一個綜合性的開發體驗是非常重要的。Silverlight 1.0的體驗還比較不成熟,不太可能讓第三方團體對其管理開發感興趣。
3、Silverlight使用了開發者已經瞭解的技術

    Silverlight是由已經存在的微軟技術組合而來的:一個混合的類似Windows展現框架的XAML(XML應用程式標記語言)、JavaScript和.NET技術。 
    如果開發者已經比較熟悉微軟的.NET和Web技術,他們就能夠使用他們已有的知識來建立Silverlight應用程式。即使開發者沒有這些技能,掌握了這些技術也不僅僅對某個單獨的產品或專案有用,它可以被應用到Silverlight應用程式以外的開發中,這與其他解決方案的情況不完全一樣,例如Adobe Flash的ActionScript。 
    至於選擇哪個Silverlight版本來應用到一個新專案中,這取決於你的開發團隊的技能情況。如果你的開發團隊主要是進行一個ASP.NET伺服器端開發工作(大多數情況下是C#和VB.NET),你應該等到Silverlight 1.1版推出。如果你的團隊比較熟悉客戶端指令碼語言,例如JavaScript,Silverlight 1.0是一個值得介紹的偉大平臺。
4、Silverlight使用者介面僅僅是標記語言
    XAML是Silverlight用於進行使用者介面設計的混合語言。你可能已經對另一種流行的標記語言已經非常熟悉,即HTML。HTML檔案是簡單的文字,它包含的資訊可以告訴Web瀏覽器如何展現一個頁面的外觀和給使用者的感覺。XAML也做相同的事情。但是,與瀏覽器解釋關於如何表現這個檔案的指令不同的是,由Silverlight執行時來完成展現工作。 
    XAML作為標記是很重要的,因為它可以被動態的建立。無論你的開發者使用什麼工具來進行伺服器端的Web開發,你都可以建立動態HTML來建立頁面。這個技術非常引人注目,因為你可以建立在站點中重用的HMTL程式碼。一個很好的例子是大多數網站的主頁設計在通常情況下,頁面頭部和底部在整個頁面中是要被重複使用的。 
    因為XAML僅僅是標記,你能夠使用伺服器端的技術來動態的建立XAML,就如同你的開發團隊以前使用HTML的方式一樣。這是一個不同的標記語言,但是技術是相同的。
5、Silverlight和Ajax技術是互補的 

    網頁技術正在不斷的發展。回到1990年,當Web技術最初被引入的時候,每一個人都在警告開發者應該儘可能快的轉移到伺服器端進行程式設計,這樣應用程式才能提升高度。雖然這種做法從技術上講是對的,但是它降低了使用者體驗。現在Ajax技術風行一時。簡單的來說,Ajax直接在瀏覽器中編寫程式碼,可支援更好的使用者互動。其典型的例子就是Google地圖服務、微軟的Live地圖。 
    Silverlight遵循了這個模式,它在瀏覽器中帶來了更具表現力的使用者介面。使用Ajax技術來在伺服器端和客戶端進行資料交換可以讓Silverlight應用程式更加強大。將Silverlight的豐富的使用者介面模型應用到Ajax的強大的資料傳輸模型中,可以得到令人難以置信的互動體驗,無需強迫使用者等待頁面重新整理時間。

6、Silverlight讓開發者和設計者一起工作
    Web正在強迫開發團隊來更多的思考設計和美工工作。除非特殊情況,響應使用者的體驗和美觀的介面已經變成了一個必須要考慮的方面。通常情況下,這就要求在應用程式開發中運用美工技巧和使用者介面設計技巧。今天,一般通過僱用美工開完成網站的設計工作。 
    但是,美工所使用和實現的資源通常與開發者使用的工具是不相同的。通常情況下,美工將圖片檔案(例如Photoshop或.jpg檔案)或HTML線框提供給開發者,然後由其來綜合到一個專案中。無論你使用的技術是什麼,這些設計必須被整合到Web應用程式程式碼中。隨著設計的變化,這種整合工作被一遍又一遍的重複做著。Silverlight提出了一種更好的開發過程。微軟的Silverlight工具集包括了傳統的開發工具,像Visual Studio,還有新的面向設計者的工具,像Expression Studio(相關文章:《微軟Expression Studio能挑戰Adobe嗎?》,http://tech.it168.com/i/2007-06-29/200706290828093.shtml)。 
    對於Silverlight來說,主要的設計工具就是Expression Blend,它允許通過一種對設計者方便而熟悉的方式來建立XAML。對於設計人員,使用Blend就像使用Adobe Illustraor或Photoshop一樣方便。它們的比較大的區別是Blend與開發者使用相同的基礎檔案。Blend和Visual Studio操作相同的專案檔案、XAML和JavaScript檔案。當一個設計被建立和修改的時候,在Silverlight中不需要使用整合步驟。設計者可以看見他們的設計與開發者所增加的相同的邏輯進行互動。這樣可以幫助設計者和開發者緊密的進行合作。
7、Silverlight可以分開提交內容 

    Silverlight是以分片形式提交給Web瀏覽器的。這意味著程式碼在一個或多個封裝的包中(JavaScript檔案、程式碼集等等),設計也是作為一個或多個包(作為XAML檔案)進行傳輸,其他資源也是被分開進行傳輸(包括圖片、字型和視訊等)。一些對Flash的單一檔案提交熟悉的開發者在才開始接觸Silverlight的時候可能會認為這是Silverlight平臺的一個不足。 
    而實際上,我認為這是一個好的功能。相比於Flash的方式,分開的資料包使動態伺服器端的內容的建立更加輕鬆。它讓我們可以在伺服器上建立引人注目的動態XAML,並簡單的以其他標記的方式來傳輸它。Silverlight具有一個工具可以使用zip檔案來打包被XAML程式碼所使用的多個檔案,並高效的下載它們到客戶端,不過它不是一個必須的要求。
8、Silverlight是新事物
    現在,Silverlight 1.0正處於候選版階段(Release Candidate),而Silverlight 1.1則處於Alpha版。這是微軟對此類技術的首次嘗試。 
    相比於其他公司提供的類似服務,這個技術還不夠成熟,其中與其競爭的最出名的就是Adobe的Flash和Flex產品。Flash目前的版本是9.0,它已經經歷了很長的一段時間的發展,無論是在普及度還是功能豐富性都已經處於領先地位。但是,這不是說Silverlight就不會追上它。微軟在從別人的成功和失敗中學習方面有自己的一套東西。當然,也不是說Silverlight一定會趕上競爭對手。 
    如果你計劃建立的應用程式主要是用來替代資料驅動的桌面應用程式,你可能會懷念在Silverlight中的所缺少的基本控制和資料繫結功能。Silverlight不是Windows Forms、WPF、Java Applets或Sharepoint的替代者。 
    簡單來說,Silverlight不是被設計用來取代早期版本的企業應用程式。但是如果你想建立一個跨平臺、跨瀏覽器的富使用者體驗的引人注目的應用程式的話,Silverlight無疑非常適合。
9、Silverlight XAML與WPF XAML的對比 

    人們很容易把XAML吹噓為一個偉大的事物,因為微軟的Windows表現層基礎類庫(WPF)也使用XAML。不幸的是,這些優勢實際上不像它看上去那麼吸引人,原因有二:WPF的低採用率和WPF XAML與Silverlight XAML的區別。 
    首先,與其他客戶端技術相比,WPF的採用率還是相對比較低的。因此,考慮到XAML還未得到充分開發的事實,XAML是一個優勢,但不是一個非常大優勢。第二,相比WPF XAML,Silverlight XAML是一個簡化版的語言,因此Silverlight XAML沒有那麼強大。這既是一件好事又是一件壞事。Silverlight XAML是非常易懂的,但是如果你的開發者是從WPF轉到Silverlight上的,它看上去可能是不完整的。 
    在我看來,這種更簡單的語法實際上更適合Silverlight,因為其執行時對終端使用者來說是非常小巧和可管理的。Silverlight XAML不包含對一些對普通任務所不需要的一些內容。當然建立更多的功能到Silverlight中將是有好處的,現在的做法是非常謹慎的考慮什麼功能要被增加到其中,才能保持API比較小和輕量級的特點。 
10、Silverlight是學習XAML的一個偉大方式
    正如前面所說的,Silverlight的XAML具有一個比較小的語法。這意味著它是學習XAML如何工作的一個最好的方式。試圖學習XAML和了解這個技術的開發者將會把Silverlight作為建立清晰、簡潔的程式碼的一種方式。大多數開發者將不久會開始思考他們會喜歡Silverlight的功能。當他們開始檢視WPF的XAML的時候,他們會發現其中的大多數功能已經非常熟悉了。 
    相反,那些最初學習WPF的開發者在接觸Silverlight後,將會需要放棄一些曾經擁有的功能。 
    目前Silverlight的執行時大約有4.5M。首次支援WPF的.NET 3.0執行時則接近30M。當然,並非所有的.NET 3.0全部內容都是WPF,但是WPF佔據了其一大部分。從更小的Silverlight XAML開始是快速學習XAML的一個關鍵。你不會陷於高階WPF XAML概念的瑣碎細節中,諸如模板、主題、資料繫結和3-D。 
    現在是時候來確定在你自己的Web網站中的什麼地方來使用Silverlight。Silverlight是一個令人興奮的技術,將給企業、客戶和使用者帶來好處。希望本文可以幫助大家瞭解這個技術的真正好處和不足。