Windows Live之Silverlight Streaming學習筆記

 Windows Live框架包括了很多內容,其中之一就是Silverlight Streaming,本文是通過對http://dev.live.com/silverlight/和Silverlight Streaming SDK(http://msdn.microsoft.com/en-us/library/bb851621.aspx)學習後整理的筆記,膚淺之極!

    Silverlight Streaming的架構圖在http://msdn.microsoft.com/en-us/library/cc304461.aspx裏有非常詳細的介紹,我淺薄的認爲它就是爲我們提供了一個存放Silverlight應用程序及Media資料(主要是Video)的服務器,然後在我們的站點頁面裏可以隨意引用Silverlight Streaming服務器上的Silverlight應用程序及Media Assets。當然,它不是一個簡簡單單的僅僅存放文件的服務器,它還會給我們提供一些服務,例如,它爲我們包裝好了Silverlight在頁面如何呈現部分的代碼。

 要使用Silverlight Streaming,必須首先註冊一個Silverlight Streaming賬號。而要想註冊Silverlight Streaming賬號,首先必須用Windows Live ID登錄。在http://silverlight.live.com/account/create.aspx 頁面用Windows Lieve ID登錄後即可註冊一個Silverlight Streaming Account。Silverlight Streaming賬號是個Windows Live ID相關聯且不變的(注意,它們是兩個東西而不是一個東西),同時還會生成一個Account Key,這個Key在後面調用API時會有用,有點類似於密碼的味道,且這個Key是可以重新生成的。

    擁有了Silverlight Streaming賬號,就可以簡單的理解爲在Silverlight Streaming服務器上擁有自己的空間,接下來就可以往Silverlight Streaming上傳自己的文件了。可以在"Manage Applications"(https://silverlight.live.com/files.aspx)裏上傳Silverlight程序,也可以在"Manage Videos"(http://silverlight.live.com/Videos.aspx)裏上傳視頻文件。

    上傳Silverlight應用程序,當然首先必須準備好Silverlight應用程序並打包成zip文件,同時還用創建一個mainfest.xml放到zip文件裏,該mainfest.xml告訴Silverlight Streaming一些相關信息,格式如下:

<SilverlightApp>
   
<source>XAML or XAP file</source>
   
<version>1.0 | 2.0</version>
   
<width>[value in browser units or percentage]</width>
   
<height>[value in browser units or percentage]</height>
   
<jsOrder>
      
<js>[js file to load first]</js>
      
<js>[js file to load second]</js>
      
<js></js>
   
</jsOrder>
</SilverlightApp>

  而這些信息都是在Silverlight Streaming封裝呈現Silverlight的代碼時所必需的。

  另外,實際上在Silverlight 2裏編譯後就已經打包成xap文件了,其實只需要上傳這個xap文件即可,Silverlight Streaming會自動生成mainfest.xml配置信息,且可以在頁面“Configure this Application”節點進行修改。

   當Silverlight上傳完畢後,Silverlight會提供給我們如何引用該Silverlight程序的代碼。要在別的頁面上引用Silverlight Streaming上的Silverlight程序,有兩種引用方式,一種是用Ifame,另一種是用Silverlight Streaming Control

    用IFrame的方式例如:    

<iframe src="http://silverlight.services.live.com/invoke/32/SlLogo/iframe.html" frameborder="0" width="258" height="100" scrolling="no"></iframe>

 

    用Silverlight Streaming Control的方式得完成以下幾個步驟(從SDK複製而來,實際理解起來很簡單):

  1. Modify the <html> tag to reference the devlive namespace:
    <html xmlns:devlive="http://dev.live.com">
  2. Add the following references to the page header:
    <script type="text/javascript" src="http://controls.services.live.com/scripts/base/v0.3/live.js"> </script> <script type="text/javascript" src="http://controls.services.live.com/scripts/base/v0.3/controls.js"> </script>
  3. Add the Silverlight Streaming control to your web page, as shown in the following example. Replace accountID with your account identifier, and appName with the application name:
    <devlive:slscontrol silverlightVersion="1.0" src="/accountID/appName/" installationMode="popup" initParams="myKey=theValue"> </devlive:slscontrol>
    從這裏可以看到,我們在頁面上放Silverlight程序不需要用<Object>標籤了,因爲這一切Silverlight Streaming已經爲我們做好了。但從另一方面來看,由於頁面上引用的Silverlight程序放在Silverlight Streaming服務器上,如果在我們的頁面需要向Silverlight傳遞參數,那就涉及到跨域的問題了。要解決這個問題,我們只有使用Silverlight Streaming Control 的方式,在Control裏可以設置initParams屬性來傳遞參數,例如:
<devlive:slscontrol 
    
silverlightVersion="1.0"
    src
="/accountID/appName/" 
    installationMode
="popup"
    initParams
="myKey=theValue">
</devlive:slscontrol>
   同時Silverlight Streaming Control還定義了OnLoad、OnInit等事件供調用的Web頁面來處理,可以參考http://msdn.microsoft.com/en-us/library/cc304460.aspx
   至於上傳Video,相對簡單,可以參考http://msdn.microsoft.com/en-us/library/cc645017.aspx。只是這個Video一般要求被Silverlight所支持。
   上面所提及的都是通過Silverlight.live.com所提供的頁面操作方式來完成的,同時Silverlight Streaming也爲我們提供了許多API,使得我們可以在程序裏用代碼完成上面提及的所有操作。
    Silverlight Streaming API是基於WebDav(有關WebDAV的知識可以參考http://www.webdav.org/),我們可以通過HttpWebRequest與Silverlight Streaming服務器交互,從而完成鑑權、獲取應用程序/文件信息、修改應用程序/文件信息和刪除應用程序/文件的操作。
    所謂鑑權,是通過Silverlight Streaming Account和Key來判斷這個賬號是否是一個合法的Silverlight Streaming賬號。SDK裏已經爲我們提供了一段鑑權的代碼,我稍作修改:

using System;
using System.Net;
using System.IO; 

namespace SilverlightServicesApi
{
 
class Program
 {
  
static void Main(string[] args)
  {
   
string accountId = "78012";                                  //Account
   string accountsecret = "6cb0458d482d7348b4a50ddda4bf4352";   //Account Key

   HttpWebRequest req =
     (HttpWebRequest)HttpWebRequest.Create
     ("
https://silverlight.services.live.com/" + accountId );
   
byte[] userPass = Encoding.Default.GetBytes(accountId + ":" + accountsecret);
   
string basic = "Basic " + Convert.ToBase64String(userPass);
   req.Headers[
"Authorization"= basic; 

   HttpWebResponse resp 
= (HttpWebResponse)req.GetResponse();
   Stream strm 
= resp.GetResponseStream();
   StreamReader rdr 
= new StreamReader(strm);
   
string xmlResponse = rdr.ReadToEnd();
  }
 }
}

  如果鑑權成功,response就會接收到該Account下的所有Silverlight Applications列表信息,是以XML的方式返回的。
  至於上傳文件、修改文件、獲取文件及刪除文件是通過HTTP的Post、Put、Get及Delete方法實現的。在http://msdn.microsoft.com/en-us/library/cc304456.aspx上有詳細描述。同時,SDK給我們提供了一個非常不錯的Silverlight Streaming API Sample,可以在http://dev.live.com/silverlight/downloads/WebDAV_Clientdemo_CS.zip下載。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章