自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

輕松掌握Silverlight取數(shù)方案

開發(fā) 開發(fā)工具
Silverlight取數(shù)方案的實(shí)現(xiàn),是一個比較簡單的實(shí)現(xiàn)步驟。初學(xué)者通過具體的實(shí)際操作,就能充分的掌握這一技巧應(yīng)用。

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

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

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

那么下面我們就來詳細(xì)說說這種Silverlight取數(shù)方案。

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

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

需要注意的是InitParams和其后面的value形式(key=value)都是固定的。不熟悉的請參閱SL相關(guān)文檔。后臺代碼很簡單。DataUrl其實(shí)就是這個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取數(shù)方案代碼中我們可以看出,我的用來輸出數(shù)據(jù)的頁面其實(shí)就是Data目錄下的output.aspx。

這里的代碼就要根據(jù)業(yè)務(wù)邏輯不同,也就是說數(shù)據(jù)不同來構(gòu)造你的數(shù)據(jù)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. }  

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

 

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

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

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

  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異步的請求和接受數(shù)據(jù)。并把收到的xml字符串裝進(jìn)TextBox里。Demo就這么簡單。

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

責(zé)任編輯:曹凱 來源: IT168
相關(guān)推薦

2010-01-06 17:51:26

Linux關(guān)機(jī)命令

2010-01-04 19:14:46

Silverlight

2014-10-30 16:12:55

編程技術(shù)算法

2009-10-12 13:18:55

RHEL 4內(nèi)核

2012-07-17 10:54:49

AJAX

2023-09-13 08:00:00

MLOps數(shù)據(jù)科學(xué)

2009-01-18 15:14:00

數(shù)據(jù)倉庫開發(fā)OLTP

2014-10-30 16:34:28

編程技術(shù)算法

2014-10-30 16:41:14

編程技術(shù)算法

2009-11-12 10:32:47

ADO.NET技術(shù)

2009-12-16 14:26:19

Linux VMwar

2021-04-18 21:54:36

Python工具開發(fā)

2009-11-09 15:28:04

WCF知識結(jié)構(gòu)

2009-12-14 11:15:34

Linux chgrp

2009-11-17 17:38:37

PHP Session

2024-02-27 08:22:56

2009-12-10 11:02:44

PHP函數(shù)eval()

2009-09-27 13:38:03

Silverlight

2009-08-26 09:20:12

思科認(rèn)證CCNP思科認(rèn)證CCNP學(xué)習(xí)方

2009-12-15 10:19:05

Linux應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號