成人免费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-06 17:51:26

Linux關機命令

2010-01-04 19:14:46

Silverlight

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

2009-10-12 13:18:55

RHEL 4內核

2014-10-30 16:12:55

編程技術算法

2023-09-13 08:00:00

MLOps數據科學

2012-07-17 10:54:49

AJAX

2009-12-10 11:02:44

PHP函數eval()

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-08-26 09:20:12

思科認證CCNP思科認證CCNP學習方

2011-04-11 13:09:56

數據庫

2024-04-16 00:00:00

Spring微服務架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www国产亚洲精品久久网站 | www.99re5.com| 精品视频一区二区三区在线观看 | 久久www免费人成看片高清 | 久久精品一区二区三区四区 | 成人福利网站 | 97精品超碰一区二区三区 | 成年人在线观看 | 亚洲黄色一区二区三区 | 亚洲午夜精品在线观看 | 国产高清一区二区三区 | 在线一区| 欧产日产国产精品视频 | 日韩中文字幕一区 | 美女露尿口视频 | 爱爱免费视频网站 | 亚洲一区成人 | 伊人网站| 色综合久| 欧美 日韩 中文 | 天天操精品视频 | 国产综合久久 | 久久9精品 | 亚洲视频二区 | 欧美视频一区二区三区 | 91成人免费 | h视频在线播放 | 国产一区2区 | 国产欧美精品一区二区 | 久久国产亚洲 | 亚洲一区二区不卡在线观看 | 日操夜操 | 亚洲一视频 | 国产精品欧美一区二区三区 | 欧美在线观看一区 | 亚洲日本欧美日韩高观看 | 日本字幕在线观看 | 亚洲一区欧美 | 日韩一区在线播放 | 亚洲激情视频在线 | 国产精品视频一区二区三区 |