日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
輕松掌握Silverlight取數(shù)方案

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

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了龍門(mén)免費(fèi)建站歡迎大家使用!

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

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

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

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

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

需要注意的是InitParams和其后面的value形式(key=value)都是固定的。不熟悉的請(qǐng)參閱SL相關(guān)文檔。后臺(tái)代碼很簡(jiǎn)單。DataUrl其實(shí)就是這個(gè)aspx頁(yè)面的一個(gè)屬性。

 
 
 
  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ù)方案代碼中我們可以看出,我的用來(lái)輸出數(shù)據(jù)的頁(yè)面其實(shí)就是Data目錄下的output.aspx。

這里的代碼就要根據(jù)業(yè)務(wù)邏輯不同,也就是說(shuō)數(shù)據(jù)不同來(lái)構(gòu)造你的數(shù)據(jù)xml了。作為示例我只是簡(jiǎn)單的輸出了一段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)鍵的就是我們?cè)赟ilverlight中怎么請(qǐng)求這個(gè)頁(yè)面并獲得數(shù)據(jù)呢?這里HttpWebResponse,HttpWebRequest類可以幫助我們。

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

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

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

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


網(wǎng)站欄目:輕松掌握Silverlight取數(shù)方案
本文來(lái)源:http://www.5511xx.com/article/cdhoccc.html