初識Silverlight 4及其架構
簡介
Silverlight 4是今年早些時候發布的。這項技術為我們帶來了許多革新。它不僅是為用戶帶來了豐富的交互式的互聯網和多媒體內容,還為我們提供了強大的輕量級的平臺。我們可以在此平臺上開發可移植的,跨平臺的,基于網絡的應用程序,并且可以從不同的源頭集成服務和數據。相比傳統Web應用的界面,Silverlight應用的界面讓人耳目一新。讓人感覺像是Windows Form應用程序搬到了Web上。
為什么需要Silverlight 4
前面我們在開發Web應用的時候,碰到了許多技術上的難題,如平臺兼容,不同的文件格式和通訊協議,同樣的頁面在不同瀏覽器上的表現,還有不同瀏覽器對Javascript的解釋,經常為這些問題加班熬夜,我們沒有少費腦筋來試圖解決這些令人頭痛的問題。有了Silverlight技術:
- 我們就能克服現有技術平臺的的不兼容性,不一致性。
- 我們就有了能力在多平臺多種瀏覽器上創建一致的用戶體驗,不管在哪里,應用程序在外觀上和行為上都是統一的。
- 我們就能利用熟悉的.net框架的類和功能將不同網絡位置的數據和服務集成到一個應用程序中。
- 我們就能為用戶提供一個多媒體的,表現豐富的,操作性強的用戶界面。
- Silverlight 4為我們提供了更多的控件,更強大的功能,讓我們可以開發出更強大的應用,更好地應對商務上的挑戰。
Silverlight 4有哪些新東西?
- 幾個實用的控件,如RichTextBox, ViewBox, WebBrowser, WebBrowserBrush等。
- 瀏覽器外運行支持,瀏覽器外運行能象普通窗口的特性,如改變大小,置頂等。
- 提升了信任的應用程序,允許信任的Silverlight程序可以自由讀寫用戶文件和目錄,全屏幕,調用Windows API等。
- 更豐富的媒體,可以捕捉視屏信號和話筒語音。
- 更強的打印功能
- 更強更方便的UI界面,支持拖拽,支持剪貼板等等。
- 更好的數據綁定和WCF數據服務
- WCF RIA 服務對多層應用支持更強。
- DLR的支持
Silverlight 4有哪些系統和瀏覽器支持?
要構建有效的Silverlight 4應用,開發者有必要了解Silverlight 4的架構。
Silverlight平臺的部件
Silverlight作為一個整體主要包括三個部分,如下表:
部件 |
說明 |
核心展現部件 |
負責呈現XAML所表現的UI元素,包括常用的控件,多媒體控件等,同時負責處理用戶輸入,事件等。 |
Silverlight中的.net框架 |
.net框架的子集。包括部件和庫,其中有數據集成,可擴展的Windows控件,網絡,基礎類庫,垃圾收集和CLR等。 |
客戶端安裝器和更新器 |
第一次瀏覽Silverlight應用程序,客戶端的瀏覽器需要安裝上瀏覽器插件,這個安裝器兼更新器負責為客戶端瀏覽器安裝插件并始終保持客戶端的瀏覽器插件最新。 |
下圖是MSDN官方的圖,展示了Silverlight平臺的部件,及一些相關部件和服務。
核心展現部件Core presentation framework包括了XAML parser, UI Core, Inputs, DRM(digital rights management), Media, Deep Zoom等,多數是需直接與具體的操作系統API打交道的功能,所以這里沒有CLR Execution Engine.
- XAML parser負責解析XAML,能兼容不同規格的XAML
- UI Core負責向量,bitmap,動畫,文字的渲染
- Inputs負責處理鍵盤,鼠標等設備的輸入
- DRM負責處理數字媒體的數字版權管理
- Media負責處理多媒體的處理,支持不同的媒體格式和編碼器
- Deep zoom是用于高分辨率圖片的放大和縮小
- Layout負責UI元素的定位
.net framework for Silverlight 是供應用程序使用的商業"庫"。包括Data, WCF, WPF, BCL等。
- BCL提供了.net平臺上的基本類型, 集合collections,泛型Generics,加密等
- WCF提供了應用程序處理WCF相關功能的一些類型, 用于處理SOAP, REST, RSS/ATOM等
- Data提供了LINQ, LINQ to xml等
- WPF提供了一些UI控件,將數據綁定到這些控件,布局,處理用戶輸入的一些功能。
.net framework for Silverlight分布在若干個.net程序集中。有一部分的程序集(比如BCL)是隨Silverlight 安裝器在用戶瀏覽器中安裝,有一部分是在Silverlight SDK中,應用程序引用到了相關的程序集,才會隨應用程序一起發布到服務器上,當有用戶訪問應用程序時,這些.net framework程序集才隨應用程序的程序集一起下載到用戶的瀏覽器中被CLR執行引擎(CLR Execution Engine)執行。
CLR執行引擎(CLR Execution Engine)是這里面的核心,負責執行應用程序的.net 代碼和.net framework的.net代碼。CLR總是基于一個宿主。通常的宿主是一個瀏覽器,在瀏覽器外的場景時的宿主是一個操作系統進程。Silverlight 4對其CLR做了改進,Silverlight 4的CLR與桌面應用程序的CLR的差別進一步縮小。
DLR提供了對動態語言的支持。目前支持JScript, Iron Python, Iron Ruby。這是Silverlight 4新提供的特性。
Silverlight 4還有一些編程相關的特性:如獨立存儲(Isolated storage),后臺線程,安全的文件管理,序列化,XAP打包,XML處理,HTML與托管代碼的交互。
- 隔離的存儲提供一種安全的方式讓Silverlight程序去訪問瀏覽器本地的文件系統。
- 后臺工作者線程使異步,多線程在Silverlight上成為了可能。
- 安全的文件管理提供一個安全的文件打開對話框,允許文件上傳等。
- 序列化使對象的序列化存儲和恢復成為了可能。
- XAP打包提供了Application類和工具來打XAP的包。.xap的包有應用程序和入口點,以便讓用戶瀏覽器插件來運行這個.xap包。應用程序的發布都是需要一個.xap包。
- XML處理包含了處理Xml的功能。XmlReader類和XmlWriter類提供了最基本的XML處理功能,同時XLinq讓開發者可以用c#或者VB.net就可以查詢Xml中的數據。
- HTML與托管代碼的交互讓開發者可以在托管代碼中直接用HTML DOM就可以管理HTML頁面里的UI元素,同時也可以寫Javascript代碼調用托管代碼的功能,訪問其中的方法,屬性,激發其事件等。這個功能就為上圖中的Javascript Engine和MS AJAX Library提供了可能。
上圖中的瀏覽器宿主(Browser Host)是用戶瀏覽器插件提供的一個環境。它提供了運行一個Silverlight應用程序的基礎環境,如Application服務,HTML DOM的集成,網絡通信的基礎,還有安裝器。使用托管API的Silverlight應用程序都有一個繼承Application類的類,有一個程序入口點,瀏覽器宿主(Browser Host)為應用程序建好了運行環境,然后才調用應用程序的入口。
結束語
以上是關于Silverlight 4的一些粗淺的認識。是任何一個Silverlight開發者想知道的內容。如果更深入些,就從多個方面來了解:它的原理,它的處理周期,它的部署,它的安全性,它的伸縮性,它的分布式計算能力,它的容錯能力,等等等等。本人也是剛開始學,所知有限。有待進一步學習。等有了一點東西了再寫。
題外話:最重要的還是快速學習和分析能力。這個能力讓你面對新技術時,有潛力迅速學習并掌握該技術。