2009年11月30日 星期一

SL3當中的Out Of Browser功能

前陣子有讀者問到SL3的Out Of Browser功能,我才發現我在Blog上似乎跳過了,因為這個功能雖然是SL3的重要新功能,但是因為相對而言是相當簡單的,所以可能被我略過了。

Out of Browser是SL3當中的重要功能之一,它讓SL應用程式在瀏覽器外執行。不過實際上使用此功能卻相當簡單,只需要在Silverlight專案上按下滑鼠右鍵,選擇Properties,在顯示出的屬性視窗上就可以設定了:

相關的細節可以點選[Out-of-Browser Settings]按鈕進行設定。

絕大部分的參數細項,均可透過設定指定完成。設定好了之後,這個SL應用程式就支援Out of Browser。這時候,使用者可以隨自己的需要,將該SL應用程式安裝到用戶端,安裝時只需要在網頁上按下滑鼠右鍵,就會出現底下這樣的選單:

點選『安裝到此電腦』,使用者即可直接將應用程式安裝到用戶端,甚至會為您建立桌面捷徑或是開始功能表捷徑(依照使用者自行選擇而定)。

除了以設定的方式為SL應用程是添加Out of Browser功能之外,我們也可以透過底下這樣的程式碼,將SL應用程式安裝到用戶端:

'用戶點選安裝鈕
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
'安裝在用戶端
If Application.Current.InstallState = InstallState.NotInstalled Then
'安裝
Application.Current.Install()
End If
End Sub

從上面的程式碼您可以發現,我們可以透過『Application.Current.Install()』將SL應用程式安裝在用戶端,也可以透過『Application.Current.InstallState』來得知目前該應用程式的安裝狀況。

除了取得應用程式是否已經安裝到用戶端等資訊之外,幾個與Out of Browser有關的資訊取得方式我們分別列舉如下。

首先,我們可以透過底下的程式碼,來判斷目前用戶端網路是否可以使用:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

這個功能的目的,是在協助SL開發人員,可以更輕易的建構出離線運算的應用程式,我們不僅可以透過上面這個指令得知目前的網路連線狀況,還可透過底下的方式,讓網路連線狀況改變時,可以觸發我們所安排的程序:

若我們需要得知目前應用程式是否為Out of Browser執行,則可透過底下的指令:
Application.Current.IsRunningOutOfBrowser()

前面介紹的這幾個函式,可以幫助我們得知目前應用程式執行的狀況、判斷網路的連線,讓我們得以決定目前應用程是要以何種方式執行。

透過這些機制,我們也以SL撰寫離線應用,例如當應用程式是連線狀態時,可直接透過.NET RIA Services存取遠端的資料庫,而當應用程式是離線狀態時,則暫時將資料透過IsolatedStorage機制存放在用戶端(瀏覽器端),或是透過SaveFileDialog將資料先存起來,待偵測到連線後再將資料回寫到遠端的資料庫中。

3 則留言:

akihiko 提到...
作者已經移除這則留言。
akihiko 提到...
作者已經移除這則留言。
akihiko 提到...

想請教一下,目前Silverlight的OOB功能,再第一次安裝後,第二次我只想透過瀏覽器再一次開啟執行之前已經安裝到本機的程式,做的到嗎?或者如何取得該程式實際安裝的AppID?Silverlight4做的到嗎?