Windows Live之Silverlight Streaming學習筆記

來源:互聯網
上載者:User

     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下載。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.