使用 System.Net.WebClient 來異步調(diào)用Digg REST Feed
在上面的搜索按鈕被點擊之后,我們將處理它的Click事件,從WaterMarkTextBox控件中取回要搜索的主題字符串,然后啟動一個發(fā)向Digg的網(wǎng)絡(luò)調(diào)用,為那個主題取回相應(yīng)的XML列表。
Silverlight 在 System.Net 命名空間下包含了WebClient輔助類(該類也在完整的.NET 框架下)。我們可以使用這個類從URL異步下載內(nèi)容。異步下載Digg故事的好處是,在等待遠(yuǎn)程服務(wù)器的回復(fù)時,我們的UI不用阻塞或變得沒有反應(yīng)(允許我們擁有一個非常流暢的用戶體驗)。
通過WebClient類執(zhí)行異步下載,我們要做的是注冊一個DownloadStringCompleted事件處理方法(它將在請求的內(nèi)容被下載之后被調(diào)用),然后調(diào)用WebClient.DownloadStringAsync(url) 輔助方法來開始下載:
點擊放大
使用上面的代碼,我們現(xiàn)在就可以異步取回一個XML數(shù)據(jù)的字符串,內(nèi)含有關(guān)用戶想要的任何主題的Digg故事。
使用LINQ to XML把XML格式的Digg故事分析成Story類對象 至此,我們可以取回Digg故事數(shù)據(jù)的XML片段了,下一步將是對其進(jìn)行分析(parse),并將它轉(zhuǎn)換成我們可以操作和綁定到控件上的DiggStory對象。
我們將首先定義一個DiggStory類,該類擁有可以映射到來自Digg的XML內(nèi)容上的屬性(我們將利用C#新的 "自動屬性"的特性來實現(xiàn)):
然后我們就可以使用LINQ (是內(nèi)置于 Silverlight 2中的)和 LINQ to XML (是包含在我們的Silverlight 應(yīng)用中的一個額外的庫 )來輕松地分析和過濾從Digg返回的XML文檔,使用下面的代碼把它翻譯成一個DiggStory對象序列:
注意上面,我們現(xiàn)在有了來自XML的我們可以操作的強(qiáng)類型的DiggStory對象。
出處:Scott Guthrie 博客中文版
責(zé)任編輯:bluehearts
上一頁 使用Networking取回Digg [1] 下一頁 使用Networking取回Digg [3]
◎進(jìn)入論壇RIA設(shè)計與應(yīng)用版塊參加討論
|