成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

輕松掌握Silverlight取數方案

開發 開發工具
Silverlight取數方案的實現,是一個比較簡單的實現步驟。初學者通過具體的實際操作,就能充分的掌握這一技巧應用。

Silverlight的應用并不是非常容易的。其中包含了許多技巧供我們在實際使用中去慢慢的探討。在這里就先為大家介紹一種Silverlight取數方案的簡便實現方法,希望能幫助大家提高開發效率。#t#

最近一直在做Flash交互相關的東西。主要思想就是在Flash聲明的中放入取數的URL,Flash控件中自己去請求這個URL。然后我們C#代碼只需在這個URL指定的頁面Response.Write拼好的數據XML字符串就行了。

其實這樣干凈利索的取數方案一樣也適合在Silverlight中使用。這種方法可以避開使用笨重的WCF服務,但其能夠處理的問題范圍較窄所以我把它稱為Silverlight的輕量級取數方案。

那么下面我們就來詳細說說這種Silverlight取數方案。

首先我們要在使用到這個Silverlight控件的頁面中加入取數的URL,這個URL往往都是動態的(根據部署環境的不同URL不同)。所以我們要在aspx.cs里處理這個URL,用輸出到aspx前端。

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

需要注意的是InitParams和其后面的value形式(key=value)都是固定的。不熟悉的請參閱SL相關文檔。后臺代碼很簡單。DataUrl其實就是這個aspx頁面的一個屬性。

  1. public string DataUrl  
  2. {  
  3. get  
  4. {  
  5. return GetUrl();  
  6. }  
  7. }  
  8. protected void Page_Load(object 
    sender, EventArgs e)  
  9. {  
  10. }  
  11. private string GetUrl()  
  12. {  
  13. string url = System.Web.HttpContext.
    Current.Request.Url.AbsoluteUri;  
  14. urlurl = url.Replac("Default.aspx", 
    "Data/output.aspx");  
  15. url = string.Format("data={0}", url);  
  16. return url;  

上面Silverlight取數方案代碼中我們可以看出,我的用來輸出數據的頁面其實就是Data目錄下的output.aspx。

這里的代碼就要根據業務邏輯不同,也就是說數據不同來構造你的數據xml了。作為示例我只是簡單的輸出了一段xml。

  1. public partial class output : 
    System.Web.UI.Page  
  2. {  
  3. protected void Page_Load(object 
    sender, EventArgs e)  
  4. {  
  5. string data = "yza1yza2";  
  6. Response.ContentType = "text/xml";  
  7. Response.Clear();  
  8. Response.Write(data);  
  9. }  

那么下面最關鍵的就是我們在Silverlight中怎么請求這個頁面并獲得數據呢?這里HttpWebResponse,HttpWebRequest類可以幫助我們。

 

首先在你的App啟動時要把InitParams中的Url取出來放到App的實例變量中。

  1. private void Application_Startup
    (object sender, StartupEventArgs e)  
  2. {  
  3. DataUrl = e.InitParams["data"];  
  4. this.RootVisual = new MainPage();  

下面是具體的請求和接受數據的Silverlight取數方案代碼。

  1. public MainPage()  
  2. {  
  3. InitializeComponent();  
  4. string url = ((App)Application.Current).
    DataUrl;  
  5. HttpWebRequest request = (HttpWebRequest)
    HttpWebRequest.Create(url);  
  6. request.BeginGetResponse(new AsyncCallback
    (RequestReady), request);  
  7. }  
  8. public void RequestReady(IAsyncResult result)  
  9. {  
  10. HttpWebRequest request = (HttpWebRequest)
    result.AsyncState;  
  11. HttpWebResponse response =(HttpWebResponse)
    request.EndGetResponse(result);  
  12. Stream stream = response.GetResponseStream();  
  13. using (StreamReader sr = 
    new StreamReader(stream))  
  14. {  
  15. string str = sr.ReadToEnd();  
  16. txt.Dispatcher.BeginInvoke(() =>
     { txt.Text = str; });  
  17. }  

我們用到HttpWebRequest和HttpWebResponse異步的請求和接受數據。并把收到的xml字符串裝進TextBox里。Demo就這么簡單。

但如果我們往深了想一想,這種Silverlight取數方案的方式避免了WCF中的很多麻煩,可以稱得上干凈利索。同時這種方法要想發揮最大作用就要配合SilverlightDataSet使用了(關于SilverlightDataSet請見我前面的那片Silverlight傳遞DataTable終極解決方案的Blog)。要說缺點嘛估計也有,就是如果傳遞實體類你得自己處理序列化和反序列化得問題,還有就是傳遞的xml很大時要進行壓縮或分段。

責任編輯:曹凱 來源: IT168
相關推薦

2010-01-04 19:14:46

Silverlight

2010-01-06 17:51:26

Linux關機命令

2009-10-12 13:18:55

RHEL 4內核

2014-10-30 16:12:55

編程技術算法

2012-07-17 10:54:49

AJAX

2023-09-13 08:00:00

MLOps數據科學

2009-12-16 14:26:19

Linux VMwar

2009-11-12 10:32:47

ADO.NET技術

2014-10-30 16:34:28

編程技術算法

2014-10-30 16:41:14

編程技術算法

2009-01-18 15:14:00

數據倉庫開發OLTP

2021-04-18 21:54:36

Python工具開發

2009-11-09 15:28:04

WCF知識結構

2009-11-17 17:38:37

PHP Session

2009-12-14 11:15:34

Linux chgrp

2024-02-27 08:22:56

2009-12-10 11:02:44

PHP函數eval()

2009-09-27 13:38:03

Silverlight

2009-12-11 09:03:16

2009-12-11 17:25:00

Grub突破root
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 国产精品一区在线观看 | 日韩欧美中文 | av播播| 久久91 | 天天操天天射综合网 | 羞羞的视频免费看 | 国产在线精品一区二区三区 | 色吧久久| 日韩欧美国产一区二区 | 日韩黄色av| 久久久久久免费免费 | 国产精品一区二区在线播放 | 亚洲精品在线免费看 | 日本精品一区二区三区视频 | 日韩精品一区二区三区第95 | 天天射美女 | 精品久久久网站 | 日韩一级不卡 | 亚洲欧美一区二区三区国产精品 | 亚洲天堂影院 | 国产一区二区三区在线 | 日韩在线视频一区二区三区 | 亚洲成人精品 | 日本精品视频 | 精品视频一区在线 | 亚洲精品国产第一综合99久久 | 久久天天 | 51ⅴ精品国产91久久久久久 | 久草视频网站 | 国产精品国产三级国产aⅴ原创 | 日韩在线 | 91精品一区 | 99视频免费| 日韩午夜电影 | 97久久精品午夜一区二区 | 一区二区国产精品 | 中文字幕久久精品 | 国产精品一区二区不卡 | 毛片a区| 中文在线一区二区 |