zoukankan      html  css  js  c++  java
  • 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下载。
     
  • 相关阅读:
    (转)jQuery.extend 函数详解
    (转)跟我一起学JQuery插件开发教程
    (转)jQuery插件开发全解析
    (转)弹出窗口lhgDialog API文档
    (转)反射发送实战(-)InvokeMember
    (转)JQuery处理json与ajax返回JSON实例
    linux下添加用户并赋予root权限
    Linux 下配置,安装Hadoop
    Linux 下安装 jdk-7u79-linux-x64.gz,jdk1.7.0_79,jdk1.7步骤:
    linux下导入、导出mysql数据库命令
  • 原文地址:https://www.cnblogs.com/qguohog/p/1398525.html
Copyright © 2011-2022 走看看