摘要: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 語法作為學習對象,我們下次見。
章立民研究室
圖表1