RSS阅读器的设计与实现.docx

上传人:b****8 文档编号:10098817 上传时间:2023-05-23 格式:DOCX 页数:25 大小:282.50KB
下载 相关 举报
RSS阅读器的设计与实现.docx_第1页
第1页 / 共25页
RSS阅读器的设计与实现.docx_第2页
第2页 / 共25页
RSS阅读器的设计与实现.docx_第3页
第3页 / 共25页
RSS阅读器的设计与实现.docx_第4页
第4页 / 共25页
RSS阅读器的设计与实现.docx_第5页
第5页 / 共25页
RSS阅读器的设计与实现.docx_第6页
第6页 / 共25页
RSS阅读器的设计与实现.docx_第7页
第7页 / 共25页
RSS阅读器的设计与实现.docx_第8页
第8页 / 共25页
RSS阅读器的设计与实现.docx_第9页
第9页 / 共25页
RSS阅读器的设计与实现.docx_第10页
第10页 / 共25页
RSS阅读器的设计与实现.docx_第11页
第11页 / 共25页
RSS阅读器的设计与实现.docx_第12页
第12页 / 共25页
RSS阅读器的设计与实现.docx_第13页
第13页 / 共25页
RSS阅读器的设计与实现.docx_第14页
第14页 / 共25页
RSS阅读器的设计与实现.docx_第15页
第15页 / 共25页
RSS阅读器的设计与实现.docx_第16页
第16页 / 共25页
RSS阅读器的设计与实现.docx_第17页
第17页 / 共25页
RSS阅读器的设计与实现.docx_第18页
第18页 / 共25页
RSS阅读器的设计与实现.docx_第19页
第19页 / 共25页
RSS阅读器的设计与实现.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

RSS阅读器的设计与实现.docx

《RSS阅读器的设计与实现.docx》由会员分享,可在线阅读,更多相关《RSS阅读器的设计与实现.docx(25页珍藏版)》请在冰点文库上搜索。

RSS阅读器的设计与实现.docx

RSS阅读器的设计与实现

 

题目:

RSS阅读器的设计与实现

分院:

班级:

姓名:

学号:

完成日期:

目录

1项目需求-1-

1.1前言-1-

1.2RSS阅读器研究的背景与意义-1-

1.3分析需求-2-

1.4功能分析-2-

2软件开发工具-3-

2.1.NET技术简介-3-

2.1.1公共语言运行库-3-

2.1.2.NET基类库-3-

2.2c#语言简介-3-

3技术分析-5-

3.1泛型-5-

3.2简单工厂设计模式-5-

3.3序列化与反序列化-5-

4软件设计-7-

4.1设计方案概述-7-

4.2类的设计-7-

4.2.1文章类设计Article.cs-7-

4.2.2频道基类类设计FeedBase.cs-8-

4.2.3频道子类类设计RssFeed.cs-8-

4.2.4频道子类类设计AtomFeed.cs-8-

4.2.5FeedFactory工厂类设计-9-

4.2.6Profile配置类设计-9-

4.2.7ProfileManger管理配置类-9-

5详细设计与编码实现-10-

5.1类设计-10-

5.1.1文章类设计-10-

5.1.2频道类设计-11-

5.1.3FeedFactory工厂类设计-12-

5.1.5ProfileManger管理配置类-14-

5.2阅读器界面设计-17-

5.2.1主界面设计-17-

5.2.2子界面设计-18-

5.3数据显示-19-

6结论-22-

6.1本文完成的工作-22-

6.2软件的优点与缺点-22-

1项目需求

1.1前言

获得信息是在人类的生活中是必不可少的环节。

如果现在的社会对获得信息不快捷,那么这个社会将不会像如今这般的发达和进步。

在当今网络技术相当发达的今天,大量的信息充斥在网上。

现在网络越来越发达,用户在网上既能工作也能娱乐。

当用户在网上需游览很多个网站才能获取自己多需的信息时,那就感觉很累。

因为现在每个网站都有很多信息,找到自己所喜欢的并不是一件轻松的事。

这时RSS阅读器的功用就体现出来了。

每当那些网站的信息更新时,阅读器上的信息也会更新。

如何让RSS阅读器的功能越来越适合用户口味,成为各个运营商开发一个实时,精确,个性化的RSS阅读器变的至关重要。

对具有高效的阅读方式的RSS阅读器来说,它的研究也就有其重要的意义。

1.2RSS阅读器研究的背景与意义

RSS阅读器就是能读取Rss和Atom两种格式文档的软件。

RSS通常被用于新闻和其他按顺序排列的网站,例如Blog。

RSS这种高效的阅读方式在国内并没有得到普及。

除了一些博客和主流媒体网站外,到目前为止大多数人对RSS还并不熟悉。

RSS的目标群体是有定向阅读习惯的人,但RSS源的质量一直是好差不等的,门户网站信息太多、小网站信息又少,使得RSS使用者难以壮大。

目前比较受欢迎的信息主要是BLOG、分类新闻。

国内的RSS内容提供商数目也还不是很多。

比较有名的国内RSS阅读器有鲜果,抓虾等。

现在的阅读器主要分为三种:

第一种阅读器是运行在计算机桌面上的应用程序,通过所订阅的网站或博客中的新闻提供信息,可自动及时的获得更新了的新闻。

第二种阅读器是已内含在计算机应用软件中。

例如,Outlook已经内建了RSS的文件夹,用户只要点击网站订阅按钮或手动在Outlook中加入RSS地址就可以了。

第三种阅读器是在线的阅读器,其优点在于不用安装就可以获得RSS阅读的功能,推荐和收藏自己感兴趣的文章。

提供这种服务的主要有两类网站,一种是专门提供RSS阅读器的网站,例如GoogleReader和鲜果;另一种是提供个性化首页的网站,例如netvibes和雅蛙。

现在网站的广告、不健康的内容充斥着屏幕。

这使用户更喜欢自己可以控制的体验。

在一些大的主流媒体网站的推广下,RSS的用户会越来越多。

这使越来越多的内容提供者为了获得更大的客户群也会推出RSS服务,靠这样来获得更大的流量和知名度。

在新闻出版领域,RSS技术作为电子出版的一个新型渠道已经在新华社等新闻机构得到了尝试,并逐渐成熟走向商业化。

RSS是伟大的发明,它让读者从被动接受变成主动筛选,极大提高了阅读效率,减少了阅读的额外时间消耗。

由于大多数用户对这个新技术还不怎么熟悉,不怎么会用,除了一些用后爱不释手的技术人员或关注资讯方面的从业人员外,普通用户跟本就没用上这个新技术,他们了解资讯最多也不过是看看XX新闻或门户网站新闻之类的对于RSS订阅服务只是抱着试试看的想法,日积月累下来大家沉淀下来的用户并不多,这部分用户距离消费比较远。

这些原因最终导致了RSS阅读器发展状况不佳。

从技术来说上还没有什么能代替RSS。

相信在不久的未来,RSS技术会被广泛应用。

1.3分析需求

本设计要设计一个RSS阅读器,其实RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫新闻聚合)。

通常被用于新闻和其他按顺序排列的网站。

一段项目的介绍可能包含新闻的全部介绍等。

或者仅仅是额外的内容或者简短的介绍。

这些项目可以称为频道,一个频道的链接通常能链接到全部内容。

网络用户可以在客户端借助于支持RSS的新闻聚合软件(例如抓虾、周博通游览器、本设计的NewsReader),在不打开网站内容页面的情况下,将网站提供的支持RSS输出的网站内容(新闻、Blog等)聚集到RSS阅读器中,用户可以不必登录各个提供信息的网站,而通过“RSS阅读器”来阅读这些内容。

1.4功能分析

本设计的类的功能如下:

(1)文章类Article:

它的属性主要有文章的标题和文章的链接地址。

(2)频道类(FeedBase类、RssFeed类、AtomFeed类):

用来保存频道信息的新闻订阅点。

(3)工厂类FeedFactory:

自动辨别从网上获得的Feed文件是Rss类型还是Atom类型。

(4)配置类Profile:

用来保存阅读器中显示的各个频道的集合。

(5)类ProfileManger:

用来管理配置信息的Profile类。

本设计的UI界面主要有如下几个:

(1)主界面:

软件使用的主要界面。

(2)频道增加界面:

用于新增频道所需的界面。

(3)频道修改界面:

用于修改频道所需的界面。

(4)频道删除界面:

用于删除频道所需的界面。

(5)频道查看界面:

用于查看频道所需的界面。

(6)帮助里的RSS介绍界面:

介绍RSS的定义及原理。

(7)帮助里的RSS使用界面:

介绍RSS的使用方法。

(8)帮助里的关于RSS版本信息界面:

介绍RSS的版本信息。

 

2软件开发工具

2.1.NET技术简介

.NET是Microsoft公司发布的新一代的系统、服务和编程平台,主要由.NETFramework和MicrosoftVisualStudio.NET开发工具组成。

.NETFramework是一种新的计算平台,它包含了操作系统上软件开发的所有层,简化了在高度分布式Internet环境中的应用程序开发。

.NETFramework主要包含两个最基本的内核,即公共语言运行库(CommonLanguageRuntime,简称CLR)和.NETFramework基本类库,它们为.NET平台的实现提供了底层技术支持。

下面将分别做详细的介绍。

2.1.1公共语言运行库

公共语言运行库是.NETFramework的基础,是.NETFramework的运行环境。

公共语言运行库是一个在执行时管理代码的代理,以跨语言集成、自描述组件、简单配置和版本化以及集成安全服务为特点,提供核心服务(如内存管理、线程管理和远程管理)。

公共语言运行库还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。

公共语言运行库遵循公共语言架构(简称CLI)标准,可以使C++,C#,VisualBasic以及JScript等多种语言深度集成。

在.NETFramework中,用一种语言所写的代码能继承用另一种语言所写的类实现,用一种语言所写的代码抛出的异常能被另一种语言写的代码捕获。

2.1.2.NET基类库

.NETFramework的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,例如ADO.NET,ASP.NET等。

.NET基类库位于公共语言运行库的上层,与.NETFramework紧密集成在一起,可被.NET支持的任何语言所使用。

.NET类库非常丰富,提供数据库访问、XML、网络通信,线程,图形图像、安全、加密等多种功能服务。

类库中的基类提供了标准的功能,例如输入输出、字符串操作、安全管理、网络通信、线程管理、文本管理和用户界面设计功能。

这些类库使得开发人员更容易地建立应用程序和网络服务,从而提高开发效率。

2.2c#语言简介

本设计是用C#语言编写的。

C#是一种面向对象的编程语言,主要用于开发可以在.NET平台上运行的应用程序。

C#的语言体系都构建在.NET框架上,它是C和C++派生出来的一种简单、现代、面向对象和类型安全的编程语言,并且能够与.NET框架完美结合。

C#具有以下突出的特点:

(1)语法简洁。

不允许直接操作内存,去掉了指针操作。

(2)测底的面向对象设计。

C#具有面向对象语言所应用的一切特性——封装、继承和

多态。

(3)与Web紧密结合,C#支持绝大多数的Web标准。

(4)强大的安全机制。

可以消除软件开发中的常见错误(如语法错误),.NET提供的垃圾回收器能够帮助开发者有效地管理内存资源。

(5)兼容性。

因为C#遵循.NET的公共语言规范(CLS),从而能够保证与其他语言开发组件的兼容。

(6)灵活的版本处理技术。

因为C#语言本身内置了版本控制功能,使开发人员更加容易地开发和维护。

(7)完善的错误、异常处理机制。

C#提供了完善的错误和异常处理机制,使程序在交付应用时能够更加准确。

 

3技术分析

3.1泛型

本设计中使用了泛型技术。

泛型是C#2.0中的一个新特性。

通过泛型可以定义类型安全的数据类型,它的最显著应用就是创建集合类,可以约束集合类内的元素类型。

泛型有很多传统集合没有的特性,与传统集合相比,它的类型更为安全,无须装箱与拆箱的操作。

泛型对于整个C#有很重要的意义。

它的重要性主要体现在以下几点。

(1)解决了很多繁琐的操作问题,例如传统集合中获取元素需要大量的类型转换,不易控制程序的异常,而泛型集合无须这些类型的转换,使我们编程更加便捷。

(2)提供了更好的类型安全性。

泛型对于类型的约束十分严格,它可以控制我们在集合中对于不同类型的对象的胡乱使用,从而保证程序类型的安全。

(3)CLR可以支持泛型,这样使得整个.NET平台都能使用泛型。

3.2简单工厂设计模式

简单工厂模式是设计模式中的一种。

软件中的设计模式是软件开发中对于某种需求的一种经验的总结,是特定问题经过实践检验的特定解决方法。

一般情况下就是根据参数数据返回一个适当的子类,然后用基类或接口引用具体的对象,而不用考虑该实际对象的产生过程。

在设计模式的简单工厂模式中,简单工厂也是用来生产“产品”的,在程序中也就是“对象。

”在程序中的类FeedFactory就是一个简单工厂,FeedFactory中的方法CreateFeed()判断Feed文件的格式后会实例化不同子类类型的频道对象,然后将父类作为返回值,提供给工厂调用者。

如果要增加其他的频道类型,只需修改类FeedFactory,工厂的调用者无须任何改变这样简化了系统的维护。

这样做提高了代码的效率,方便维护。

而且调用者也不需要知道所创建的实例对象属于哪个子类。

设计模式可以提高软件的复用性,使得我们编写的软件更容易扩展,更容易适合需求的变化,设计模式是面向对象在实际应用的集中体现。

3.3序列化与反序列化

序列化是将对象的状态存储到特定存储介质的过程,也可以说是将对象状态转换为可保持或传输的格式的过程。

在序列化过程中,会将对象的公有成员、私有成员包括类名,都转换成数据流的形式,存储到介质中,这里说的存储介质通常指的是文件。

在本设计中,通过序列化保存了Profile对象的信息,包括它存储的频道信息等。

.NET提供多种形式的序列化,文本或XMl流等。

反序列化就是从特定存储介质(这里说的存储介质通常指的是文件)中,将数据重新构建对象的过程。

通过反序列化,可以将存储在文件上的对象信息读取,然后重新构建为对象。

这样就不需要再将文件上的信息一一读取、分析再组织为对象了。

将对象的字段值保存到磁盘中,并在以后检索此数据。

尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐,而且容易出错。

序列化提供了轻松实现这个目标的快捷方法。

通过序列化将对象从一个应用程序发送到另一个应用程序中。

在远程通信中应用非常广泛,可以将应用程序中的对象序列化,然后可以通过网络通信,远程传递给其他地点的另一个应用程序。

 

4软件设计

4.1设计方案概述

网络用户在客户端借助于RSS的阅读器(比如本设计的NewsReader阅读器),在不打开各大新闻门户网站的情况下,将网站提供的支持RSS输出的网站内容(新闻,Blog等)聚集到RSS阅读器中。

用户可以不必登录各个提供信息的网站,而通过RSS阅读器来阅读这些内容。

RSS阅读器设计方案如下。

设计图如5-1

(1)新闻发布者(我们这里认为是各大新闻网站)会提供这种频道订阅点,也就是Feed。

为此设计相应的方法让阅读器会解析这种Feed。

(2)阅读器接到Feed后,根据设计出的方法分析Feed文件后。

把解析出的新闻标题、链接内容保存到集合中。

(3)将解析出的已经保存到集合中的内容组织后,显示到阅读器显示界面中,供用户阅读。

(4)新闻的内容会不断的进行更新,刷新Feed。

用户就能用阅读器随时能够读取到最新的文章了。

图5-1阅读器设计图

4.2类的设计

4.2.1文章类设计Article.cs

文章类Article:

它的属性主要有文章的标题和文章的链接地址。

文章类Article详细信息如图5-2。

5-2文章类Article详细信息

4.2.2频道基类类设计FeedBase.cs

频道类(FeedBase类):

是用来保存频道信息的新闻订阅点的基类。

类FeedBase详细信息如图5-3。

5-3类FeedBase详细信息

4.2.3频道子类类设计RssFeed.cs

频道类(RssFeed类):

用来保存RSS格式频道信息的新闻订阅点。

类RssFeed详细信息如图5-4。

5-4类RssFeed详细信息

4.2.4频道子类类设计AtomFeed.cs

频道类(AtomFeed类):

用来保存Atom格式频道信息的新闻订阅点。

类AtomFeed详细信息如图5-5。

5-5类AtomFeed详细信息

4.2.5FeedFactory工厂类设计

工厂类FeedFactory:

自动辨别从网上获得的Feed文件是Rss类型还是Atom类型。

工厂类FeedFactory使用了简单工厂模式。

简单工厂模式是设计模式中的一种。

一般情况下就是根据参数数据返回一个适当的子类,然后用基类或接口引用具体的对象,而不用考虑该实际对象的产生过程。

设计模式是得到了很好研究的范例,是一种经验的总结。

软件中的设计模式是软件开发中对于某种需求的一种经验总结,是特定问题经过实践检验的特定解决方法。

工厂类FeedFactory详细信息如图5-6。

5-6工厂类FeedFactory详细信息

4.2.6Profile配置类设计

配置类Profile:

用来保存阅读器中显示的各个频道的集合。

配置类Profile详细信息如图5-7。

5-7配置类Profile详细信息

4.2.7ProfileManger管理配置类

类ProfileManger:

用来管理配置信息的Profile类。

ProfileManger管理配置类如图5-8。

5-8ProfileManger管理配置类详细信息

5详细设计与编码实现

5.1类设计

为了实现阅读器的从网上抓取频道链接、获取文件、解析文件按文件格式的不同处理后都保存在阅读器上的等功能,因此设计Article文章类,Feed(FeedBase,RssFeed,AtomFeed)频道类,FeedFactory工厂类,Profile配置类,ProfileManger配置管理类。

5.1.1文章类设计

新闻阅读器的主要对象是新闻,我们称为文章。

所以我们要创建一个文章类Article,它的属性主要有文章的标题和文章的链接地址。

类Article主要内容如下表6-1。

表6-1类Article主要内容

属性

文章标题

Title

文章链接

Url

类Article代码如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceNewsReader.Models

{

///

///频道中的文章类

///

[Serializable]

classArticle

{

publicArticle(){}

publicArticle(stringtitle,stringurl)

{

this.title=title;

this.url=url;

}

///

///文章标题

///

privatestringtitle;

publicstringTitle

{

get{returntitle;}

set{title=value;}

}

///

///文章链接

///

privatestringurl;

publicstringUrl

{

get{returnurl;}

set{url=value;}

}

}

}

5.1.2频道类设计

阅读器组织新闻(文章)的对象是频道,我们称为Feed。

Feed是用来保存频道信息的新闻订阅点。

一个频道的主要信息大致可以归纳为频道名称,频道链接,频道的详细说明,频道的文章列表,还可以加入点击次数。

如下表6-2Feed类的主要内容:

表6-2Feed类的主要内容

属性

方法

频道名称

DisplayName

填充文章列表

链接地址

Url

重载构造函数

描述

Description

点击次数

Clicks

很多大型的网站往往都会提供Rss+Atom两种格式的频道订阅方式。

这两种格式既有相同的地方,也有不同点。

为了实现软件的代码复用,以提高程序的简洁和高效。

把这两种格式相同的属性(频道名称,链接地址,描述,点击次数)放入一个基类FeedBase中,把他们不同的属性(获取文章的方法)放入各自的类RssFees中和类AtomFeed中来实现。

这三个类代码请见附录Ⅰ,关系图6-3如下:

图6-3类FeedBase,类RssFeed和类AtomFeed的类关系图

5.1.3FeedFactory工厂类设计

为了自动辨别从网上获得的Feed文件是Rss类型还是Atom类型,创建一个类FeedFactory来解决这个问题。

这涉及到了软件开发中的简单工厂设计模式。

简单工厂模式是设计模式中的一种。

一般情况下就是根据参数数据返回一个适当的子类,然后用基类或接口引用具体的对象,而不用考虑该实际对象的产生过程。

设计模式是得到了很好研究的范例,是一种经验的总结。

软件中的设计模式是软件开发中对于某种需求的一种经验总结,是特定问题经过实践检验的特定解决方法。

类FeedFactory类图如下图

图6-4类FeedFactory类图

FeedFactory的代码:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

usingSystem.Net;

usingSystem.Xml;

namespaceNewsReader.Models

{

///

///Feed的简单工厂用来控制不同Feed的构建

///

classFeedFactory

{

publicFeedFactory(){}

publicstaticFeedBaseCreateFeed(stringtitle,stringurl,stringdesc)

{

FeedBaseret;//定义一个Feed基类

try

{//下载Feed文件

WebClientmyClient=newWebClient();

myClient.DownloadFile(url,"unknown.feed");

//读取未知文件

XmlDocumentmyXml=newXmlDocument();

myXml.Load("unknown.feed");

XmlNoderootNode=myXml.DocumentElement;//读取根节点

//根据节点值的不同,判断类型

switch(rootNode.Name.ToLower())

{//判断后创建相应的类型

case"rss":

ret=newRssFeed(title,url,desc);//父类保存子类对象

break;

case"feed":

ret=newAtomFeed(title,url,desc);//父类保存子类对象

break;

default:

ret=null;

break;

}

returnret;//返回一个父类

}

catch(Exception)

{

thrownewException();

}

}

}

}

在简单工厂设计模式这个方法中有两个重要的特征:

(1)返回类型是父类。

(2)方法中根据情况的不同创建不同类型的子类对象,将子类对象用父类保存,然后返回父类。

类FeedFactory就是一个简单工厂,FeedFactory中方法CreateFeed()判断Feed文件的格式后会实例化不同子类类型的频道对象,然后将父类作为返回值,提供给工厂调用者。

5.1.4Profile配置类设计

类Profile用来保存阅读器中显示的各个频道的集合。

类Profile的类图如下图6-5:

图6-5类Profile的类图

类Profile代码如下:

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceNewsReader.Models

{

[Serializable]

classProfile

{

publicProfile(){}

publicListFeeds=newList();

}

}

5.1.5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2