日期:2010-03-24  浏览次数:20473 次

  【注】本文测试环境:Windows XP专业版+Visual Studio 2005+整套ASP.NET AJAX框架+ASP.NET RSS Toolkit+SQL Server 2005。

  一、RSS技术简介

  RSS是一种描述和同步网站内容的XML格式,已经成为越来越流行的网站内容订阅技术。通过这种技术,网站可以极大地提高广大网站用户和网站数据之间的数据交互。

  RSS阅读软件可以分为桌面离线式和在线式两大类。有了这种工具,用户只需要添加初始其所关注的RSS网址,以后系统会自动更新相关内容,网友只需静待观察自己感兴趣的新闻即可。

  目前存在多种版本的RSS文件格式,有0.90、0.91、0.92、0.93、0.94、1.0和2.0。其中,最为流行的是2.0版本。下面展示了一个最简单的2.0版本的RSS文件的基本格式:

<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Example Channel</title>
<link>http://example.com/</link>
<description>My example channel </description>
<item>
<title>News for September the Second</title>
<link>http://example.com/2002/09/01</link>
<description>other things happened today</description>
</item>
<item>
<title>News for September the First</title>
<link>http://example.com/2002/09/02</link>
</item>
</channel>
</rss>

  由上可以,RSS文件的主要节点有rss,频道和item等。其中rss节点表示执行的RSS标准命名空间;频道节点表示在博客或新闻组中的一个类别,通常被译为频道;item节点是用户要查看的主要信息,其中包括信息的标题、信息内容的链接地址及信息的发布时间等。有关RSS文件的完整节点介绍,请参考网址http://cyber.lay.harvard.edu/blogs/gems/tech/rss2sample.xml。

  关于Robsman的ASP.NET RSS Toolkit

  很显然,因RSS文件版本繁多,而且存在一定差距,如果手动解析XML文件费时费力。还好,我们可以利用微软公司开发的开源RSS Toolkit工具包(下载网址:http://blogs.msdn.com/dmitryr/)来简化之。

  这个工具包具有如下功能:

  1)RSS数据源控件—其使用方式与ASP.NET内置的数据源控件一样,它也支持绑定和支持模板化数据绑定,并为其提供显示所需的数据;

  2)可以在内存或磁盘中缓存远程RSS提要对应的内容;

  3)基于RSS的URL地址为RSS提要生成易于开发调试的强类型对象;

  4)对程序中生成的RSS提要相应的典型操作进行封装。

  下面,我们通过一个具体的例子来探讨如何使用这个工具包并基于微软ASP.NET AJAX框架来开发一个简单的RSS新闻阅读器。

  二、本系统主要功能及关键技术分析

  在正式开工以前,让我们先来了解一下本系统要实现的主要功能以及开发本系统所涉及的主要技术。

  (一)主要功能

  一个在线RSS阅读器可以把你喜欢的RSS订阅存储在服务器端数据库中以便后来在方便之时在具有因特网连接的任何位置进行访问。典型地,我们可以通过下图1来大致描述一个RSS阅读器的工程流程。

基于ASP.NET AJAX技术开发在线RSS阅读器(上篇)

  图1:一个RSS阅读器的典型工程流程

  根据上面的示意图,我们的RSS阅读器示例工程DAjaxRssReader将主要实现以下目标:

  ◆添加RSS频道

  用户可以把其新输入的RSS频道以及相关的URL信息保存到ASP.NET AJAX客户端数据源控件中。并且当然,他们能够把所有这些信息存储到远端的服务器SQL Server数据库中。

  ◆显示所有RSS频道

  这主要包括两种情况:1、当应用程序首先启动时所有的存储于服务器端数据库中的频道信息都应该能够列出于浏览器端;2、当用户刷新RSS频道时,所有的与频道相关联的数据都可以从服务器端读回并显示于客户端。

  ◆显示选择的特定RSS频道的详细信息

  当用户选择某个频道时,应用程序应该能够展示出相应的与该频道相链接的特定网页内容。

  (二)关键技术

  首先,在开发任何典型的Web应用程序的过程中,我们都应尽可能地遵循著名的三层结构原则。下图的图2展示了本文中的RSS阅读器程序相应的三层架构略图。

基于ASP.NET AJAX技术开发在线RSS阅读器(上篇)

  图2:本文RSS阅读器程序的整体架构示意图

  接下来,在正式讨论所涉及的关键技术之前,让我们快速地浏览一下示例程序主页面的快照,如下面图3所示。

基于ASP.NET AJAX技术开发在线RSS阅读器(上篇)

  图3:本文示例RSS阅读器程序设计时刻快照

  根据上面所展示的图形及前面的功能分析,我们大致需要基于以下关键技术来开发本文中的应用程序:

  1、在描述层,我们需要使用ASP.NET AJAX客户端ListView控件来存储并显示所有RSS频道信息,还有一个服务器端UpdatePanel控件来封装上图中的ASP.NET AJAX Control Toolkit控件Accordion以便最终显示与你从ListView中点选的项相关联的网站内容。此外,我们还需要一点CSS技巧来修饰所有相关的控件。最后,我们还引入了ASP.NET AJAX客户端校验器(Validator)来实现对用户输入的RSS名字和URL的校验功能。

  2、在本文示例程序中,我们将混合使用JavaScript与xml-script声明性编程方式。一方面,在实际开发环境下,基于ASP.NET AJAX框架的Web应用程序通常是相当复杂的;另一方面,ASP.NET AJAX框架本身也还没有完全成熟起来以便使我们的构建目标完全基于xml-script声明性编程方式进行开发。尽管实现在实现某些编程时使用JavaScript方式相对xml-script声明性方式相对更复杂一些(因为ASP.NET AJAX客户端提供了十分类似于ASP.NET的声明性编程方式),但是,JavaScript方式的好处在于,它能够控件开发过程中从服务器端到客户端的每一个方面。

  3、对于基于ASP.NET AJAX应用程序的数据层开发而言,在线资料中已经提供了典型的实现模式,本文示例将秉承这一模式。

  【作者注】在调试本文示例程序时,我被因引入ASP.NET AJAX Control Toolkit控件并结合Dmitry Robsman的ASP.NET RSS Toolkit所带来的客户端与服务器端通