ASP.NET AJAX - 如何製作 RSS 訂閱器

摘要:ASP.NET AJAX - 如何製作 RSS 訂閱器

遠在 ASP.NET AJAX 的前一個版本,也就是 Microsoft Atlas 的官方文件中提到,Atlas Framework 支援副檔名為 asbx Bridge 服務,用來將遠端 RSS 或者是 Web 服務所擲回的 Xml 文件轉換為 JavaScript 可讀的內容。但是,目前 ASP.NET AJAX RC 版本已經不再支援 Bridge 服務,是否有其他的解決辦法呢?答案是肯定的。

 

圖表 1  是網頁範例的執行畫面,按下「取得RSS按鈕之後,表單會自動向章立民研究室部落格所提供的 RSS 服務發出非同步處理請求,等到伺服器接受請求處理完畢之後,會將目前章立民研究室部落格首頁出現的文章與相關資訊,以 Xml 格式擲回。 

稍後表單會接到伺服器所回應的Xml資料,透過 ASP.NET AJAX 所提供的 XPathBridgeTransformer 類別將 Xml 內容轉換成 JavaScript 可以識別的結果,經過版面編排後呈現在畫面上。茲將轉換 Xml 文件格式的 Web 服務程式碼列示如下:

Object
 
'
讀取 Web.config 組態檔設定。
 
Dim RssUrl As New _
 
Uri(WebConfigurationManager.AppSettings.Get("LimingStudioRssUrl").ToString())
 
 If RssUrl.Scheme = Uri.UriSchemeHttp
Then
  
'
建立 HttpWebRequest 類別物件來發出 Http 請求。
  
Dim RssRequest As HttpWebRequest = HttpWebRequest.Create(RssUrl)
   RssRequest.Method = WebRequestMethods.Http.Get
  
   '
建立 HttpWebResponse 類別物件來接受 Http 回應。

  
Dim RssResponse As HttpWebResponse = RssRequest.GetResponse()
  
   '
建立代表 Http 回應的 StreamReader 串流物件。

  
Dim RssReader As New StreamReader(RssResponse.GetResponseStream())
  
   '
Http 回應(也就是 Xml 文件內容)寫入 String 物件。

  
Dim RssResult As String = RssReader.ReadToEnd()
  
   '
建立 XPathBridgeTransformer 類別物件來轉換 Xml 內容。

  
Dim RssTransformer As New _
     Microsoft.Web.Preview.Services.XPathBridgeTransformer()
  
   '
建立 BridgeTransformData 類別物件儲存轉換 Xml 資訊。

  
Dim RssData As New Microsoft.Web.Preview.Services.BridgeTransformData()
  
   '
設定 Xml 轉換準則,也就是篩選 Xml 文件的條件。

  
RssData.Attributes.Add("selector", "channel")
  
   '
建立 Dictionary 物件,儲存篩選後的 Xml 內容。

  
Dim RssDictionary As New Dictionary(Of String, String)(3)
  
   '
加入 Dictionary 物件內容,

   '
鍵值(Key)代表前端 JavaScript 撰寫指令碼使用的名稱,
   '
數值(Value)代表 Xml 文件標籤。
  
RssDictionary.Add("HeaderTitle", "title")
   RssDictionary.Add("HeaderLink", "link")
   RssDictionary.Add("HeaderDescription", "description")
  
   '
Dictionary 物件 加入 BridgeTransformData 類別物件。

  
RssData.Dictionaries.Add("selectedNodes", RssDictionary)
  
   '
初始化建立 XPathBridgeTransformer 類別物件,預備進行 Xml 資料轉換。

  
RssTransformer.Initialize(RssData)
  
   '
正式進行 Xml 文件轉換,並將結果擲回前端。

  
Return RssTransformer.Transform(RssResult)
 End
If
 Return
Nothing
End
Function
End
Class

最後要提到一點,除非您希望使用舊版本的 Atlas Framework 來建置 ASP.NET 應用程式,否則應該以官方正式發佈的 ASP.NET AJAX 語法作為學習對象,我們下次見。

 

章立民研究室 2006/12/21

 

 

圖表1