ASP.NET AJAX - 如何制作RSS订阅器

远在 ASP.NET AJAX 的前一个版本,也就是 Microsoft Atlas 的官方文件中提到,Atlas Framework 支持扩展名为 asbx Bridge 服务,用来将远程 RSS 或者是 Web 服务所掷回的 Xml 文件转换为 JavaScript 可读的内容。但是,目前 ASP.NET AJAX RC 版本已经不再支持 Bridge 服务,难道就没有其它的解决办法吗?答案是肯定的。

 

 

图表1

 

图表1是网页范例的执行画面,按下「取得RSS按钮之后,窗体会自动向章立民研究室部落格所提供的 RSS 服务发出异步处理请求,等到服务器接受请求处理完毕之后,会将目前章立民研究室部落格首页出现的文章与相关信息,以 Xml 格式掷回。

 

稍后窗体会接到服务器所响应的 Xml 数据,通过 ASP.NET AJAX 所提供的 XPathBridgeTransformer 类别将 Xml 内容转换成 JavaScript 可以识别的结果,经过版面编排后呈现在画面上。兹将转换 Xml 文件格式的 Web 服务程序代码列示如下:

 

<ScriptService()> _
Public Class WS_RSS_Header
  Inherits System.Web.Services.WebService

<WebMethod()> _
Public Function RequestRSS() As 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 AJAX 应用程序,否则应该以官方正式发布的 ASP.NET AJAX 语法作为学习对象,我们下次见。

posted on 2006-12-22 10:59  章立民研究室  阅读(3201)  评论(5编辑  收藏  举报

导航