眾所周知,學習一門IT技術,最關鍵的是實踐,無論是軟件開發還是網絡調試,只要在真實環境下勤于動手和思考,很快就能掌握一門技術,Silverlight也不例外。為了幫助更多朋友快速學習掌握Silverlight應用開發,我計劃以實例應用的方式,講述Silverlight的各個特性,從而達到在學習理論的基礎上,和實踐相結合的目的。在每個階段的實例教程中,將圍繞一個Silverlight特性為核心主題進行擴展學習。
我的開發環境是:
Windows 7 Ultimate 英文版
Visual Studio 2010 Premium 英文版
Expression Blend 4 Premium 英文版
Silverlight 4
第一篇Silverlight實例應用,我們從Silverlight的Out-of-Browser開始。在實例開始之前,我們對Silverlight的Out-of-Browser進行一個理論回顧。
**什么是Silverlight的Out-of-Browser應用?**
Silverlight Out-of-Browser應用,從字面理解是Silverlight脫離瀏覽器的應用,也可以理解為Silverlight離線應用,簡稱為OOB。微軟給出的解釋是OOB應用是可以安裝到本地的運行在瀏覽器之外的應用,簡單的理解,Silverlight OOB應用就是一個不需要存取HTML DOM,并且完全脫離瀏覽器,具有獨立窗口的Web應用。微軟在Silverlight 3已經發布該功能,由于當時Silverlight 3的種種限制,Silverlight的OOB應用基本沒有過多的發展,但是這個新特性給當時的開發人員留下了深刻的印象,微軟在隨后的Silverlight 4版本中,對OOB功能進行的強化,例如OOB的權限信任支持,自定義窗口設計支持,消息通告API支持等。這些功能,不僅增強了Silverlight跨平臺應用功能支持,而且還加大了用戶對Silverlight離線應用的體驗。
讓我們看一個Silverlight OOB的案例,下圖是新浪財經的Silverlight OOB應用,該應用作為獨立窗口運行,沒有基于瀏覽器,

**Silverlight Out-of-Browser的運行原理?**
Tim Heuer是微軟Silverlight項目經理,他的博客中曾經發表過相關[Silverlight Out-of-Browser的運行原理](http://timheuer.com/blog/archive/2009/03/18/silverlight-3-offline-update-framework.aspx)?, 在這里我們以簡單的方式理解一下Silverlight OOB的運行原理。
作為Silverlight開發人員應該都知道訪問Silverlight應用其實就是對服務器端的XAP文件進行讀取,Silverlight OOB同樣是基于Silverlight技術的應用,所以OOB應用也是訪問運行XAP文件,但是該文件是來自本地的目錄。Silverlight OOB應用的訪問步驟:
1. 首先需要配置AppManifest.xml,使應用支持Out-of-Browser;
2. 然后安裝OOB應用,這時Silverlight項目的XAP文件將被下載到一個本地目錄存儲;
3. 在本地運行OOB應用,這時,應用會根據XAP的原始URL發出請求,檢測是否有新版本,如果有,則更新,如果沒有將繼續運行;
以上是最簡單的理解,在網絡上有一篇翻譯Tim的文章,大家可以閱讀[Silverlight OOB的運行原理中文版加深理解](http://silverlightchina.net/html/tips/2010/0707/1437.html)。
**Silverlight Out-of-Browser的存儲位置?**
上文已經講到Silverlight OOB應用,安裝成功后,XAP將保存在本地目錄,而這個目錄從桌面快捷方式是無法查看到的,例如剛才我們演示的新浪財經OOB應用,在快捷方式中,僅顯示“"C:/Program Files (x86)/Microsoft Silverlight/sllauncher.exe" 3161465351.vip.stock.finance.sina.com.cn”, 從上面目錄下的metadata元數據文件中可以得知3161465351.vip.stock.finance.sina.com.cn是該用戶的唯一的AppID。

而其真實存儲目錄則在C:/Users/<login id>/AppData/Local/Microsoft/Silverlight/OutOfBrowser/3161465351.vip.stock.finance.sina.com.cn,
?1?ShortcutName=新浪財經
?2?LaunchPath=C:/Users/kevin.fan/AppData/Local/Microsoft/Silverlight/OutOfBrowser/3161465351.vip.stock.finance.sina.com.cn/index.html
?3?CustomIcon=1
?4?TrimmedSourceDomain=vip.stock.finance.sina.com.cn
?5?TrimmedTitle=新浪財經
?6?TrimmedName=新浪財經
?7?ElevatedPermissions=2147483647
?8?XapLastModified=Thu,?27?May?2010?07:01:27?GMT
?9?EnableGPUAcceleration=False
10?WindowStartupLocation=0
11?WindowTop=0
12?WindowLeft=0
13?WindowWidth=800
14?WindowStyle=0
15?WindowHeight=600
16?SourceDomain=vip.stock.finance.sina.com.cn
17?OriginalSourceUri=http://vip.stock.finance.sina.com.cn/silverpulse/ClientBin/Loader.xap
18?FinalAppUri=http://vip.stock.finance.sina.com.cn/silverpulse/ClientBin/Loader.xap
19?RuntimeVersion=4.0.50401.0
20?AppID=3161465351.vip.stock.finance.sina.com.cn
21?Description=新浪財經
22?Title=新浪財經
23?Name=新浪財經
?
?
**Silverlight In-of-Browser和Silverlight Out-of-Browser的**對比****
在Silverlight 4中,微軟對OOB功能進行了強化,對比Silverlight In-of-Browser和Out-of-Browser,在功能上有著很大的差異,
1. OOB應用最大的特點是用戶可以不需要任何網絡支持在本地運行應用;
2. OOB應用支持Trust權限提升功能,也就是所謂的Elevated Trust模式,該模式是Silverlight 4 OOB強化中最關鍵的特征之一,通過權限提升,OOB應用可以做到許多Windows應用功能,例如:
> a. 在權限允許的情況下,OOB應用可以訪問本地文件目錄;
> b. 在權限允許的情況下,OOB應用可以被鎖定顯示自定義應用圖標在Windows開始菜單和任務欄中;
> c.?在權限允許的情況下,OOB應用可以訪問COM API;
> d. 在權限允許的情況下,OOB應用支持XAP簽名認證;
> e. 在權限允許的情況下,OOB應用支持消息通知API調用;
> d. 在權限允許的情況下,OOB支持HTML WebBrowser;
3. OOB應用每次運行都需要進行版本升級檢查,而In-of-Browser則是項目運行時自動更新;
4. OOB應用無法接收初始化參數數據,而In-of-Browser可以;
5. 對于Isolated Storage空間的分配,OOB應用默認分配25M,而基于瀏覽器的Silverlight應用僅為1M,但是兩者都允許用戶進行自定義擴展;
以上是Silverlight Out-of-Browser的一些基本理論,在理論的基礎上,我們將開始下一篇的實例演示。
歡迎大家加入"專注Silverlight" 技術討論群:
32679955(六群)
23413513(五群)
32679922(四群)
100844510(三群)
37891947(二群)
22308706(一群)
- 前言
- Out of Browser開篇
- Out of Browser配置,安裝和卸載
- Out of Browser的自定義應用
- Out of Browser存取本地文件系統
- Out of Browser與COM的交互基礎
- Out of Browser與Office的互操作
- Out of Browser的Debug和Notifications窗口
- Out of Browser音樂播放器
- Out of Browser與COM互操作實例
- Out of Browser在線更新和Silent安裝
- Validation數據驗證開篇
- Validation數據驗證基礎屬性和事件
- Validation數據驗證DataAnnotation機制和調試技巧
- Validation服務器端異步數據驗證
- Validation客戶端同步數據驗證
- Validation用戶提交數據驗證捕獲
- Datagrid,Dataform數據驗證和ValidationSummary
- 自定義擴展Validation類,驗證框架的總結和建議
- Navigation導航框架開篇
- 理解Navigation導航框架Frame類
- 理解Navigation導航框架Page類
- Navigation導航框架URI映射機制
- Navigation導航框架傳遞參數