毕业设计个人博客系统设计与实现.docx
- 文档编号:27073938
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:53
- 大小:2.12MB
毕业设计个人博客系统设计与实现.docx
《毕业设计个人博客系统设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计个人博客系统设计与实现.docx(53页珍藏版)》请在冰豆网上搜索。
毕业设计个人博客系统设计与实现
毕业设计(论文)中文摘要
题目:
个人博客系统设计与实现
摘要:
从发展之初,博客就带有双重功能,一方面它是很棒的在线写日志的工具,它可以记录个人的文章、日记或者其他一些值得记录分享的东西;另一方面博客也是绝佳的交流工具,利用博客可以发一些重要的新闻,以最直接、最高效的方式来与他人沟通。
2000年博客开始进入中国,并迅速发展,一直到今天博客应用都非常广泛。
现在Web开发的理念就是追求较好的用户体验,一般都体现在RIA(RichInternetApplication)开发上。
一些老的技术已经不能满足当今Blog发展的需求,利用一些新的技术如Silverlight、WCF、Ajax等来开发一个新的Blog系统就是基于这样的背景。
本课题的任务是利用一些新的技术来开发一套完整的Blog系统,主要技术有WCF、Silverlight、Ajax等,是基于.NET3.5的平台来开发的。
整个系统是基于传统的三层架构的一套系统。
数据访问层对ADO.NET进行了进一步封装,利用Ioc容器注入、反射来动态加载对象,同时利用缓存提高整个系统的整体性能。
UI层利用了一些比较成熟的库和插件,比如jQuery库、FCKeditor富文本编辑插件等,同时也利用了一些比较新的技术,如Silverlight。
整个系统界面采用Div+CSS来设计界面,共有两套主题可供选择。
最后经过测试,系统能正常运行,功能完善,性能较高。
总得来说这个系统的开发是比较成功的。
关键词:
博客三层架构WCFSilverlight对象设计模式缓存
毕业设计(论文)外文摘要
Title:
DesignandImplementationofaPersonalBlogSystem
Abstract:
Fromthestart,TheBloghastwofunctions,first,it'sausefultoolwhocanusetowritearticles,diaryorsomethingvaluabletorecordandsharewithothers,second,itisalsoagoodtooltocommunicatewithotherpeople,wecanusethemostdirectandmostefficientwaytopublishsomelatestnewstocommunicatewithotherpeople.Intheyearof2000,theblogcametoChina,andspreadquickly,growrapidly,untilnow,itisalsousedextensively.
Theconceptoftoday'swebdevelopisuser'sexperience,mainlybeembodiedintheRIA(RichInternetApplication)developing.Someoldtechnologycannotmeetthetoday'sBlog'sdevelopment.Baseonthesereasons,wehavetodevelopanewsystemwhichusingsomenewtechnology,forexample,Silverlight,WCF,Ajax.
Thistopic'staskistodevelopanewBlogsystemusingsomenewtechnology.PrimarytechnologyisWCF,Silverlight,Ajaxandsoon.Thisprojectisbaseonthe.NET3.5.Thisentiresystemisbaseonthethreelayer'sarchitecture.DataaccesslayerencapsulateADO.NETfurther,andloadobjectdynamicallyusingIocdependencyinjectionandreflection.Thesystemusecachetocachedatatoimproveperformance.UIlayerusessomeproventechnique,forexample,jQueryandFCKeditorrichtexteditorplugins,andalsousessomenewtechnology,forexampleSilverlight.Weusediv+csstolayoutthewebpage.Ithastwothemes.
Aftertesting,theentiresystemhasagoodrunning.Itisfinishedsuccessfully.
Keywords:
BlogThreeLayerArchitectureWCF
SivlerlightDesignPatternCache
1绪论
忽如一夜春风来,“上网”突然成了很“cool”的事,网上影院、伊妹儿、QQ、黑客……越来越多的网络语言融入了我们的日常用语,网络成了我们生活一部分。
电脑起源于二战,而网络则不折不扣的起源于冷战。
网络的正常稳定发展是从1995年以后,从1995年到至今,短短的十几年间,Internet进入了全速发展时期,它已经成为我们生活中不可缺少的重要一环了。
Internet规模逐日扩大,人们对网络速度的要求也越来越高。
信息的获取、处理、交流和应用能力,已经成为人们最重要的能力之一。
而在网络上,发布、查看相关信息的方式也越来越多,比如门户网站,新闻组,电子邮件,还有最近几年流行起来的BBS,博客,播客,贴吧等等。
博客是一种基于互联网分享个人心得及其他一些个人认为是有用信息的方式。
从发展之初,博客就带有双重功能,一方面它是很棒的在线写日志的工具,另一方面也是绝佳的交流工具。
1.1博客概况
1.1.1博客的产生
“博客”这个词,最早起源于中国,史学界普遍认为最早来自于中国秦代。
当时张良为了刺杀秦始皇,找到一位侠客,并选定博浪沙作为刺杀地点,结果刺杀失败。
但大秦帝国还是被这一突发事件所震惊,纷纷在第一时间予以报道。
无数竹简在驿道上往返奔驰,上面的新闻只刻着一行朱色的篆字:
“博浪沙之侠客。
”由此可见,“博客”的最初含义是指突发性大事件。
后来这个词的意义被进一步引申,代指“值得一看的东西”、“另人震惊的事件”或“富有新闻价值的言论”。
最古老的博客原型是NCSA的“What'sNewPage”网页,主要是罗列Web上新兴的网站索引,这个页面从93年6月开始,一直更新到1996年6月为止。
但是最早的博客是Userland公司CEODaveWiner,在1997年开始运作的ScriptingNews开始真正具备了博客的基本重要特性。
并且他将这些功能集成到免费软件“Frontier脚本环境”。
不过,这个算不算是真正的最早博客,争议颇多。
有人认为,从形式上说,是JornBarger于1997年底建立了今天博客网站的基本模样(当时的原始模样可以上网看到。
网管人员使用log(logfiles)来指称“系统记录文件”,因此几年前如果用google来查weblog,查出来大多都是例如Seacloak这种网站流量分析软件,而不像今天真正的weblog。
1.1.2博客的现状
博客(Blog)在中国的发展历程始于1998年,但到了2000年才开始真正流行。
而2000年博客开始进入中国,并迅速发展,但都业绩平平。
直到2004年木子美事件,才让中国民众了解到了博客,并运用博客。
2005年,国内各门户网站,如新浪、搜狐,原不看好博客业务,也加入博客阵营,开始进入博客春秋战国时代。
起初,Bloggers将其每天浏览网站的心得和意见记录下来,并予以公开,来给其他人参考和遵循。
但随着Blogging快速扩张,它的目的与最初已相去甚远。
目前网络上数以千计的Bloggers发表和张贴Blog的目的有很大的差异。
不过,由于沟通方式比电子邮件、讨论群组更简单和容易,Blog已成为家庭、公司、部门和团队之间越来越盛行的沟通工具,因为它也逐渐被应用在企业内部网络(Intranet)。
1.2博客的发展、需求与前景
2001年9月11日,世贸大楼遭遇恐怖袭击,博客成为重要信息和灾难亲身体验的重要来源。
从此,博客正式步入主流社会的视野。
正是这场恐怖的袭击,使人们对于生命的脆弱、人与人沟通的重要、最即时最有效的信息传递方式,有了全新的认识。
从发展之初,博客就带有双重功能,一方面它是很棒的在线写日志的工具,它可以记录个人的生活,以文字形式展现自我,同时也能让网络上的其他人来了解自己,博客就是一个展示自我的舞台;另一方面博客也是绝佳的交流工具,利用博客可以发一些重要的新闻,以最直接、最高效的方式来与他人沟通。
正如世贸大楼遭遇恐怖袭击事件,网络成为第一个事件信息的来源,由此可见博客的重要性。
开发一个个人博客系统,就是基于这样一个想法,通过各种方式来展现自我,与他人沟通。
1.3本论文任务概述
这个毕业设计的最终目标是设计、实现一个功能完善的个人博客系统。
这个系统是基于.NETFramework3.5运用ASP.NET2.0技术来实现的,开发语言是C#语言。
在这个系统中将利用一些较新的技术来增加用户体验。
我负责整个系统的架构设计、编码、测试等。
这篇论文我主要先对博客进行简要的介绍,然后介绍了开发本系统所用到的新技术,接着对整个系统中的模块进行设计,然后既要剖析部分代码,最后演示完整的系统。
1.4本论文章节安排
第二章开始介绍了系统开发环境及相关技术。
接着详细介绍了系统设计与实现,分别从需求分析、数据库设计、模块详细设计作了详细的描述。
最后剖析了部分代码。
第三章对完成的系统进行演示。
最后对本论文进行小结,主要描述了在做本系统的过程中遇到的问题及解决方法以及在本系统中我学到了一些知识,以及对给与我帮助的人表示致谢。
2系统设计与实现
2.1需求分析
2.1.1功能需求
一般博客的功能包括:
1)所有人能浏览博客的内容(文章、相片、视频等);
2)所有人可以留言,留言可以是针对文章的评论,也可以是给博主的留言;
3)博主可以登录,他人无法登录;
4)博主登录后可以发表、删除、更新文章、相片、视频等内容。
他人无法对博客内容操作;
5)博主可以对所有人的留言进行管理(删除)操作,也可以回复留言者。
2.1.2项目计划安排
项目整体的开发计划如图2-1,此图是用Visio2007生成的,主要描述了项目的整体的安排和各个部分在整个项目开发周期中所占的时间比重。
图2-1项目安排计划
2.2系统开发环境
2.2.1开发环境简介
硬件配置:
●机器:
Thinkpad
●CPU:
Core2T56701.8GHz
●内存:
DDR23G
●硬盘:
160G
操作系统:
MicrosoftWindowsServer2008Datacenter64bit(en-us)
开发工具:
VisualStudio2008TeamSystem、SQLServer2005Express
工具插件:
Silverlight、jQuery
2.2.2VisualStudio2008开发环境简介
VisualStudio2008是微软公司推出目前最流行的Windows平台应用程序开发环境。
VisualStudio2008在三个方面为开发人员提供了关键改进:
快速的应用程序开发、高效的团队协作和突破性的用户体验。
VisualStudio2008可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。
2.2.3SQLServer2005数据库简介
SQLServer2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
SQLServer2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。
SQLServer2005已经与VisualStudio和.NETFramework进行了集成。
据微软官方显示,利用SQLServer2005和VisualStudio进行开发,开发速度提高了40%以上,在很多场景中,能减少50%-70%代码量。
考虑到SQLServer2005与.NET平台的集成性和便利性,同时也考虑到技术之间的衔接、系统的性能和运行的稳定性,所以本系统使用的是SQLServer2005Express数据库。
2.3相关技术简介
2.3.1C#语言简介
C#语言是一门简单、现代、优雅、面向对象、类型安全、平台独立的一门新型组件编程语言。
经过编译,C#编写的源代码被编译为一种符合CLI规范的中间语言(IL),通常是具有扩展名为.exe和.dll的文件。
运行时,由CLR加载IL元数据和引用的资源,然后转换成机器语言再执行。
本系统采用C#语言来开发各个组件、功能模块。
2.3.2ASP.NET简介
ASP.NET是一个统一的Web开发模型,作为.NETFramework的一部分提供。
当在编写ASP.NET应用程序的代码时,可以访问.NETFramework中的类。
ASP.NET中有一个重要功能,可以通过与客户端应用程序中类似的、基于事件的模型来对网页进行编程。
与传统HTML页或基于客户端的Web应用程序中的事件相比,由ASP.NET服务器控件引发的事件的工作方式稍有不同。
导致差异的主要原因在于事件本身与处理该事件的位置的分离。
在基于客户端的应用程序中,在客户端引发和处理事件。
但是,在ASP.NET网页中,与服务器控件关联的事件在客户端(浏览器)上引发,但由ASP.NET页在Web服务器上处理。
对于在客户端引发的事件,ASP.NETWeb控件事件模型要求在客户端捕获事件信息,并通过HTTPPOST将事件消息传输到服务器。
页必须解释该POST以确定所发生的事件,然后在要处理该事件的服务器上调用代码中的相应方法。
本系统中在UI层的表示层逻辑就是基于ASP.NET的Web事件模型进行编程的。
利用这种编程模型既可以简化Web应用程序的开发又可以实现出功能非常强大系统。
2.3.3ADO.NET简介
Microsoft在开始设计.NET框架时设计了一个新的数据访问框架ADO.NET。
ADO.NET具有如下优点:
提供了断开的数据访问模型;提供了与XML的紧密集成;提供了与.NET框架的无缝集成(例如,兼容基类库类型系统)。
ADO.NET提供两种访问模式:
断开连接模式和连接模式。
使用断开连接模式一般利用DataAdapter从数据源检索数据并填充DataSet中的表,同时还可将对DataSet所做的更改解析回数据源。
而使用连接模式是利用ADO.NETDataReader从数据库中检索只读、只进的数据流。
查询结果在查询执行时返回,在并存储在客户端的网络缓冲区中,直到程序使用DataReader的Read方法对它们发出请求。
使用DataReader可以提高应用程序的性能,原因是它只要数据可用就立即检索数据,并且(默认情况下)一次只在内存中存储一行,减少了系统开销。
创建一个DataSet对象的系统开销是比较大的。
如果大范围的使用DataSet,对系统的压力会增大很多。
DataSet本身是弱类型的,在业务逻辑处理层进行操作时会存在类型安全的隐患,并且在编码时也不能提供代码提示的便捷性。
虽然可以构建强类型的DataSet,但是会增加大量的代码。
另外如果深度使用DataSet,比如用到DataRelation等,又会牵扯到与数据库的同步问题,及数据库关于加锁机制的问题。
这样会增大技术复杂度,这是没有必要的。
在本系统中使用是连接方式来读取数据,同时使用泛型List来承载数据,每读一条数据就存储到泛型List中去,泛型List相对于弱类型的DataSet省去了不必要的装箱和拆箱操作,大大提高了性能。
2.3.4Silverlight技术简介
MicrosoftSilverlight是一种跨浏览器、跨平台的用于为Web生成和提供下一代媒体体验和丰富的交互式应用程序(RIA)。
Silverlight统一了服务器、Web和桌面的功能,统一了托管代码和动态语言、声明性编程和传统编程以及WindowsPresentationFoundation(WPF)的功能。
可以采用C#和VB.NET编程语言来编写托管代码,并可以全面使用.NET框架库。
技术细节请参见SilverlightSDK或者MSDN等资料,本系统涉及到的详细代码请参见3.2.8节。
由于在开发上有.NET强大类库的支撑,同时在IDE上又有VisualStudio2008、Blend2这样的工具,与服务器通信又有WCF这样的技术做铺垫。
所以本人选择Silverlight作为这个毕业设计的前端展示技术。
2.3.5WCF简介
Windows通信基础(WindowsCommunicationFoundation,WCF)是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.NetRemoting、ASMX、WSE和MSMQ。
以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,WindowsForms,NTService,COM+作为宿主(Host)。
WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML,Kerberos,X509,用户/密码,自定义等多种标准与模式。
也就是说,在WCF框架下,开发基于SOA的分布式系统将变得非常容易。
本系统也涉及部分WCF技术,主要用在Silverlight与后台数据的交互上。
Silverlight仅仅支持的一种绑定,那就是BasicHttpBinding协议,而这正是WCF所支持的一种基本协议。
这样WCF与Silverlight两种技术之间有了更好的衔接,同时这给我在系统的开发中提供了很好的便利性。
详细的代码请参见源码部分。
2.3.6jQuery库简介
jQuery由美国人JohnResig创建。
jQuery是继prototype之后又一个优秀的JavaScript框架。
它是轻量级的js库(压缩后只有21k),这是其它的JavaScript库所不及的,它兼容CSS3,还兼容各种浏览器。
jQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。
jquery的简单的实用的确有相当大的吸引力。
本系统在UI层就应用了jQuery库,用来展现一些界面特效。
详细的代码请参见源码部分。
2.4系统设计与实现
2.4.1分层架构核心思想
1、针对接口编程,而不针对实现编程
针对接口编程,而不是针对实现编程--这是面向对象设计中最重要的原则之一这里所指的接口,不是特指编程语言中的具体语言元素(如C#中由Interface定义的语言接口),而是只一种抽象的,在语义层面上起着接合作用语义体。
它的具体实现,可能是接口,可能是抽象类,甚至可能是具体类。
一般接口可以理解为以下两点:
●接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。
体现了自然界“如果你是……则必须能……”的理念。
●接口是在一定粒度视图上同类事物的抽象表示。
具体到N层架构中,针对接口编程的意义是这样的:
现约定将N层架构的各层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层,那么第K层不应该依赖具体一个K-1层,而应该依赖一个K-1层的接口,即在第K层中不应该有K-1层中的某个具体类。
2、依赖倒置原则
在软件设计原则中,有一种重要的思想叫做依赖倒置。
它的核心思想是:
不能让高层组件依赖底层组件,而且,不管高层组件和底层组件,两者都应依赖于抽象。
所谓的依赖倒置原则,其实就是上面提到针对接口编程,而不是针对实现编程,两者在本质上是统一的。
综上所述,本系统应该是这样一种架构:
1)N层架构的各层依次编号为1、2、…、K、…、N-1、N,其中层的编号越大,则越处在上层。
2)架构中仅存在一种依赖,即第K层接口依赖第K-1层,其中1 3、封装变化 封装变化的原则定义为: 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混杂在一起。 4、开放、关闭原则 开发-关闭原则定义为: 对扩展开放,对修改关闭。 5、单一职责原则 任何一个类都应该有单一的职责,属于单独的一层,而不能同时担负两种职责或属于多各层。 三层架构是一种比较成熟的系统架构,通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维护的成本。 三层架构将数据访问和逻辑操作都集中到组件中,增强了系统的复用性。 同时也使系统的扩展性大大增强。 模块化使得系统很容易在纵向和水平两个方向拓展: 一方面可以将系统升级为更大、更有力的平台,另一方面也可以适当增加规模来增强系统的网络应用。 从开发角度和应用角度来看,三层架构比双层或单层结构都有更大的优势。 三层结构适合群体开发,每人可以有不同的分工,协同工作使效率倍增。 开发双层或单层应用时,每个开发人员都应对系统有较深的理解,能力要求很高,开发三层应用时,则可以结合多方面的人才,只需少数人对系统全面了解,从一定程度工降低了开发的难度。 基于以上优点本系统采用三层架构来开发。 2.4.2实体介绍 根据对本博客系统的简要需求分析,可以确定以下几个实体: ●用户信息: 代表用户,包括了用户的登录名、密码、个性设置等。 ●博客留言: 代表一些人对博客的评价等信息。 ●博客信息: 包含了博客的基本信息,如博客名称、访问人数、主题等。 ●文章: 就是文章实体,包含文章的基本信息,如标题、内容、发布时间等。 ●文章分类: 就是文章的类别。 ●文章评论: 代表了对于莫一篇文章发表的评论。 ●照片: 代表照片基本信息。 ●照片分类: 代表照片的分类。 2.4.3数据库设计 图2-2数据库表 整个系统涉及的数据库的表有8张,各个表之间的关系如图2-2。 以下是各个表的简要说明: ●UserInfo: 用户表。 主要保存了博主的相关信息。 ●Leavewords: 留言表。 主要保存访问者对整个Blog的评论。 ●BlogInfo: 博客表。 主要存放Blog的基本设置信息。 ●PhotoCategory: 图片分类表。 主要存放图片的分类信息。 ●Photo: 图片表。 主要存放图片信息。 ●PostCategory: 文章分类表。 文章分类信息。 ●P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 个人 博客 系统 设计 实现