技术开发 频道

解析Silverlight轻量级取数方案

  【IT168 技术文档】最近一直在做Flash交互相关的东西。主要思想就是在Flash声明的中放入取数的URL,Flash控件中自己去请求这个URL。然后我们C#代码只需在这个URL指定的页面Response.Write拼好的数据XML字符串就行了。

  其实这样干净利索的取数方案一样也适合在Silverlight中使用。这种方法可以避开使用笨重的WCF服务,但其能够处理的问题范围较窄所以我把它称为Silverlight的轻量级取数方案。

  那么下面我们就来详细说说这种取数方法。

  首先我们要在使用到这个Silverlight控件的页面中加入取数的URL,这个URL往往都是动态的(根据部署环境的不同URL不同)。所以我们要在aspx.cs里处理这个URL,用输出到aspx前端。

<param name="InitParams" value="<%= DataUrl %>" />

  需要注意的是InitParams和其后面的value形式(key=value)都是固定的。不熟悉的请参阅SL相关文档。后台代码很简单。DataUrl其实就是这个aspx页面的一个属性。

  public string DataUrl
  {
  
get
  {
  
return GetUrl();
  }
  }
  
protected void Page_Load(object sender, EventArgs e)
  {
  }
  
private string GetUrl()
  {
  
string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri;
  url
= url.Replac("Default.aspx", "Data/output.aspx");
  url
= string.Format("data={0}", url);
  
return url;
  }

  上面代码中我们可以看出,我的用来输出数据的页面其实就是Data目录下的output.aspx。

  这里的代码就要根据业务逻辑不同,也就是说数据不同来构造你的数据xml了。作为示例我只是简单的输出了一段xml。

  public partial class output : System.Web.UI.Page
  {
  
protected void Page_Load(object sender, EventArgs e)
  {
  
string data = "yza1yza2";
  Response.ContentType
= "text/xml";
  Response.Clear();
  Response.Write(data);
  }
  }

   那么下面最关键的就是我们在Silverlight中怎么请求这个页面并获得数据呢?这里HttpWebResponse,HttpWebRequest类可以帮助我们。

0
相关文章