个人博客系统设计实现

个人博客系统设计实现

ID:34290952

大小:691.50 KB

页数:60页

时间:2019-03-04

上传者:赏心悦目
个人博客系统设计实现_第1页
个人博客系统设计实现_第2页
个人博客系统设计实现_第3页
个人博客系统设计实现_第4页
个人博客系统设计实现_第5页
资源描述:

《个人博客系统设计实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

.个人博客摘要随着Internet的广泛应用,动态网页技术也应运而生。本文介绍了应用ASP动态网页技术开发博客系统的设计与实现。该系统以ASP.NET为开发技术,使用C#为开发语言,实现Blog网站的动态管理,使得对Blog信息的管理更加及时、高效,提高了工作效率。本文对博客系统进行整体分析,明确了系统的可行性和用户需求;根据模块化原理,规划设计了系统功能模块;在数据库设计部分,详细说明了系统数据库的结构和数据库的完整性、安全性措施;程序设计则采用面向对象的程序设计思想,提出系统的程序设计思路,对前台与后台功能的程序实现进行了详细论述;系统测试部分,具体分析测试过程中出现的主要问题,并提出了解决方案,实现系统功能。关键词Blog;ASP.NET;C#;SQLserver.. .PersonalBlogAbstractWiththeextensiveapplicationoftheInternet,dynamicwebtechnologyhasemerged.ThistextdescribestheapplicationofASPdynamicwebtechnologyanddevelopmenttheblogsystem.ThissystemtakeASP.NETasthedevelopmenttechnology,usesC#isthedevelopmentlanguage,realizestheBlogwebsitedynamicmanagement,causestobeevenmoreprompttotheBloginformationmanagement,highlyeffective,raisedtheworkingefficiency.Inthistext,itanalysistheblogsystembyfeasibilityandthedemandoftheuser.Underthemodulartheory,planninganddesignofthesystemfunctionalmodules;Inthedatabasedesign,adetaileddescriptionofthedatabasestructureanddatabaseintegrity,securitymeasures;Programmingisusedobject-orientedprogrammingdesign,systemdesignideas,backgroundforthefutureandfunctionoftheprogramindetail;Systemtesting,Analysisofthespecificcourseoftestingthekeyissuesandproposedsolutionstoachievesystemfunction.KeywordBlog;ASP.NET;C#;SQLserver.. .目录第一章绪论11.1引言11.2课题研究的意义21.3系统概述4第二章相关技术介绍52.1ASP.NET技术概论52.2ASP.NET工作原理62.3数据库选择62.3.1数据分析72.3.2SQLSERVER200572.3.3ADO.NET72.4ASP.NET配置9第三章需求分析103.1需求分析103.2可行性分析10第四章概要设计124.1系统设计方案124.2系统功能模块124.3数据库需求分析134.4系统操作流程144.5数据表设计154.6数据库的完整性和安全性174.6.1数据库的完整性约束174.6.2数据库的安全性18第五章详细设计195.1后台功能模块详细设计195.1.1用户注册模块设计195.1.2博客管理员首页设计225.1.3博客文章信息管理页面255.2前台功能模块详细设计305.2.1前台主界面305.2.2“博客评论”功能模块设计345.2.3友情连接管理页实现过程37第六章测试396.1测试目的396.2测试方法396.3测试用例39第七章结论41.. .7.1不足之处与改进417.1.1权限分配417.1.2界面美观化417.2结论41致谢42参考文献43.. .第一章绪论1.1引言Blog,是Weblog的简称。Weblog,其实是Web和Log的组合词。Web,指WorldWideWeb,当然是指互连网了;Log的原义则是“航海日志”,后指任何类型的流水记录。合在一起来理解,Weblog就是在网络上的一种流水记录形式或者简称“网络日志”。Blogger或Weblogger,是指习惯于日常记录并使用Weblog工具的人。虽然在大陆早些时候或者台湾等地,对此概念的译名不尽相同(有的称为“网志”,有的称之为“网录”等等),但目前已基本统一到“博客”一词上来。该词最早是在2002年8月8日由著名的网络评论家王俊秀和方兴东共同撰文提出来的。博客也好,网志也罢,仅仅是一种名称而已,它的本义还是逃不过Weblog的范围。只是,通常我们所说的“博客”,既可用作名词Blogger或weblogger——指具有博客行为的一类人;也可以作动词用(相当于英文中的Weblog或blog),指博客采取的具有博客行为反映、是第三方可以用视觉感受到的行为,即博客们所撰写的Blog。因此,“他/她是一位博客,他/她天天在博客”及“博客博什么客?”在中文语法与逻辑上都是正确。只是不同场合的用法不同罢了。本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。Blog究竟是什么?说了半天,其实一个Blog就是一个网页,它通常是由简短且经常更新的帖子(Post)所构成,这些张贴的文章都按照年份和日期倒序排列。Blog的内容和目的有很大的不同,Blog的内容和目的有很大的不同,从对其他网站的超级链接和评论,有关公司、个人、构想的新闻到日记、照片、诗歌、散文,甚至科幻小说的发表或张贴都有。许多Blogs记录着blog个人所见、所闻、所想,还有一些Blogs则是一群人基于某个特定主题或共同利益领域的集体创作。撰写这些Weblog或Blog的人就叫做Blogger或Blogwriter。博客存在的方式,一般分为三种类型:一是托管博客,无须自己注册域名、租用空间和编制网页,博客们只要去免费注册申请即可拥有自己的博客空间,是最“多快好省”.. .的方式。如英文的www.blogger.com、wordpress.com及多种语言的博客室(blogates.com)等都提供这样的服务;二是自建独立网站的博客,有自己的域名、空间和页面风格,需要一定的条件。如方兴东建立的“博客中国”站(www.blogchina.com);三是附属博客,将自己的博客作为某一个网站的一部分(如一个栏目、一个频道或者一个地址)。这三类之间可以演变,甚至可以兼得,一人拥有多种博客网站。目前进行网站开发的语言很多,如ASP、PHP、JSP、ASP.NET等。究竟应该选择什么语言来开发一个BLOG网站呢,对于一个中小型的网站来说,ASP无疑是最好的选择,利用简单的HTML代码与脚本融合而成的ASP技术可以开发强大的Web应用程序。ASP(ActiveSeverPages)是Microsoft推出的一种服务器端脚本环境,ASP内嵌于IIS中,让用户可以轻松的结合HTMLWeb页面、脚本和ActiveX组件建立或执行动态的、交互的Web服务器应用程序。ASP并不单指某一种编程语言,而是一门把HTML代码与VBScript和JavaScript等脚本语言融合在一起的技术,ASP技术的诞生,应该说是一项成功的技术,它开创了非专业人员开发高水平网站的历史。1.2课题研究的意义博客的精神是:自由表达,开放宽容,个性张扬,专业精神。在没有自己的博客之前,人们会经常进出于论坛发表贴子或者通过即时通信软件聊天,来表达自已的想法,可是这些都是零散的和杂乱的。博客的出现,让人们可以不断的把自己以前的和每天激发的一些想法或者感受整理放在自己的博客上,每次在写文章的时候,可能又会产生新的想法。虽然一些想法一些思考只是皮毛,没有什么深度,但是当下笔去写的时候每次都会对某个小小的问题有了更多的一点点思考,再写博客的时候就感觉到了一种满足感,一种想法得以释放思考得以延伸的满足感。生活中每天的一个小小的事情都会引起人们的思考,甚至是和朋友的聊天中一个小小的火花迸发。督促自己努力、把一时的想法变成观点,争取在生命中的每天里留下点什么,这也是人们写博客的目的之一。这样就能督促自己每一天不要浑浑噩噩,时光流逝无痕无声无息,写博客也是在自己的每一天上留下了一道浅浅的思考和划痕。如果说博客网站是一个舞台,那么所有的博客都是其中的舞者,把自己有价值的真实的一面展示在网络世界中,相互交流沟通;.. .如果博客仅仅为了写日志,那么博客是一面镜子,镜子中展现的是真实的自己;如果博客是一个自由媒体,可以把自身感觉有价值的信息通过博客这个工具发布,与网友共享随着Blog人数的增加,Blog作为一种新的生活方式、新的工作方式和新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构。它使交流和沟通更有明确的选择和方向性;单一的思想和群体的智慧结合变得更加有效;个人出版变成人人都可以实现的梦想。Blog正在影响和改变着我们的生活。Blog是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。展示丰富的个性化,对Blog功能的要求自然更高,新一代具有更多、更新、更全功能的Blog急需走进舞台。系统加入聊天功能可以更加方便大家的交流。博客有以下用途:(1)促进学习。写blog可以促进学习,想写出文章来,自然不能是泛泛的了解就可以的,要理解了才能写得出来的。这就促进了对某些领域的不断学习和思考。(2)记录收获。blog中,常常是记录下来都是瞬间的灵感,对事物的感悟,经过多日思考和实践的结果,对某个问题的解决方案等等,这些都是财富,要记录下来。(3)反映成长。写blog,可以反映出人的思考过程,而不仅仅是思考结果。对一个问题或领域,从不了解到了解,从了解到熟悉,从熟悉到精通。这纪录了一个人思考和解决问题的成长过程。很久之后,看到自己之前的文章,你将会觉得自己进步了。(4)结交朋友。写了blog,自然会有许多志趣相同的朋友来阅读,这可以认识许多朋友。大家有共同的兴趣爱好,自然谈得来。(5)共享知识。blog给大家看,大家的blog也给你看。这个问题我解决了,那个问题他解决了。大家互通有无,建立起一个社群。(6)交流看法。回复的人对blog的观点或赞同,或反对,大家一起讨论,听听别人的思想,可以促进双方的共同进步。(7)包装自己。看到一篇篇用心写出的文章,自然是对自己知识技能的最好宣传。.. .1.3系统概述一个博客其实就是由一序列网页组成的,它通常是由简短且经常更新的帖子所构成的,这些张贴的文章都按照年份和日期倒序列排列,能按照日期和主题检索。博客的内容和目的有很大的不同,有到其他网站的超级链接;有对其他网站的评论;有个人的日记,日常所思所想;有个人照片、诗歌、散文,甚至科幻小说的发表。正是由于博客能收容这些不拘于个人思想的表达,使博客这种交流和表达方式日益红火起来,博客秉承了个人网站的自由精神,也开拓了激发创造的新模式,能张扬人的个性,从这个意义上说,博客将会变得越来越普及,越来越为更多的人接受。本系统主要完成以下功能。1.客户界面部分我的文章给我留言用户注册/登录首页:文章分类,最新评论,最新文章,最新加入2.管理界面部分添加分类分类管理文章管理留言管理基本设置.. .第二章相关技术介绍2.1ASP.NET技术概论本系统采用ASP.NET开发技术进行开发。ASP.NET不仅仅是ASP的一个新版本,更是Web应用程序编程方面的一个全新的概念和方法。ASP.NET中的新功能并不是对ASP的改进,设计它的初衷是为用户入境提供最佳的应用程序架构。它相比于ASP有着以下几个方面的优点:(1)多语言ASP曾在脚本引擎方面受到了限制,特别是VBScript和Jscript。而ASP.NET则支持多种语言,默认情况下为VisualBasic.NET、C#和Jscript.NET,另外还支持一些第三方语言。(2)服务器处理ASP在服务器处理上不管页面的内容是纯HTML还是ASP生成的HTML,它都是按照实现,形成所谓3-tier页面顺序显示的。因此逻辑代码依赖于它在页面中的位置,并且无法将HTML控件作为目标,除非将它们作为流的一部分进行显示。而ASP.NET就解决了这个问题,方法是为控件引入一个声明的基于服务器的模型,因为控件在服务器上有,可以在服务器上编程,也可以是客户端驱动的事件。(3)WebForm控件将现有的HTML控件转换为服务器端的控件是比较容易的,但是也存在一些不方便,例如比较难于区分HTML控件和服务器端的控件。于是Microsoft公司就创建了一组专门的服务器控件,它们都用asp:前缀标识。(4)代码与内容分离一个网站的设计与开发往往由不同的人来实现的,而ASP中就是存在着这样一个问题,代码(ASP脚本)和内容(HTML)混合在一起。这样就使得同时进行设计和开发变得很困难。而ASP.NET则采用了代码内联和后台编码两种方法实现了代码与内容的分离。.. .2.2ASP.NET工作原理在多数场合下,能够将ASP.NET版面容易地当做等闲的HTML版面,版面包括符号有特异处理措施的一些代码段。当安装.NET时,本地的IISWeb服务器积极搭配成查找伸展名为.aspx的文件,且用ASP.NET模块(名为aspnet_isapi.dll的文件)处理这些文件。从技巧上讲,ASP.NET模块分析ASPX文件的内容,并将文件内容分解成独自的号召以发生代码的大局构造。告终此工作后,ASP.NET模块将各号召放置到预定义的类定义中(无须要放在同时,也无须要按编写次序放置)。然后利用这个类定义一个特异的ASP.NET对象Page。该对象要告终的任务之一即便生成HTML流,这些HTML流能够归来到IIS,再从IIS归来到客户。简言之,在用户哀求IIS服务器供给一个版面时,IIS服务器就依据版面上的文本、HTML和代码(这对我们来说是最重要的)发生该版面。2.3数据库选择数据库(Database),是按照数据结构来组织、存储和管理数据的仓库,是用于查询的大量数据的存储区域。使用数据库可以带来许多好处:如减少了数据的冗余度,从而大大地节省了数据的存储空间,实现数据资源的充分共享等等。近年来推出的计算机关系数据库管理系统,还具有操作直观,使用灵活,编程方便,功能强大,环境适应广泛,数据处理能力极强等诸多优点。总的来说,数据库的设计对系统的经济性、功能性和效率有很大的影响,一个好的数据库,要求在设计时尽量避免数据的多余,另外,还要尽可能提高数据的存取速度。数据库设计时速度与空间在范式上是相互矛盾的。一方面按规范化理论的要求,关系模式应尽量取高级范式,尤其对记录数较多的关系,低级范式将会造成存储的大量重复,是空间遭受严重浪费;另一方面从存取速度上考虑,应该尽量做到一个模式涉及的属性越多越好,相互运算越少越好,这样,又应取低级范式。因此我们在设计数据库时要严格地探讨它的使用环境,充分了解用户的需求,清楚地掌握数据库系统的特点。经过综合的评价和分析后设计出的数据库应满足以下要求:.. .(1)数据库信息要能充分体现出用户使用系统的需求。(2)能够支持用户对数据进行的所有处理。(3)能够容易被数据库管理系统运行维护。(4)数据一致性、完整性好,无更新异常。本系统采用SQLSERVER2005做为后台数据库,使用ADO.NET技术对数据进行操作。2.3.1数据分析博客系统中,主要是管理用户的文章、留言、系统信息等数据。数据的类型决定了程序对数据的处理方式也就是算法,因此,数据是系统实现分析的起点。现通过数据流图的方式分析系统中数据的流动和处理。对系统的管理员,在登录系统后,本系统接受管理员的修改、添加、删除请求,通过分析将这种请求转化成相应的SQL语句执行对数据库的相关的操作,并将执行的相应结果送回系统中。系统接收到数据库返回的结果集,经过一定的分析处理,将其转化成ASP页面,返回到客户端显示给用户。2.3.2SQLSERVER2005SQLSERVER2005是可以在WEB上运行的数据库服务产品。它既可适用于桌面系统的单用户数据库,也可适用于企业的网络数据库,甚至适用于专业的WEB站点数据库,具有很强的可伸缩性。并且具有很高的可靠性、可用性和可管理性。从经济和开发效率上适合中小型网站。它和ASP.NET同属于微软公司开发,在开发接口有一致性,能更好的协调工作。同时,SQLSERVER2005对数据的安全性也有一定的保障,它对用户的访问进行了两个阶段的检查:一是认证阶段,二是许可确认阶段。数据库使用ADO.NET来处理数据。2.3.3ADO.NETADO.NET是基于.NET框架结构、面向分布式和以XML数据格式为核心的数据访问技术,它提供了一组数据访问服务的类,可用于对MicrosoftSQLServer、Oracle等数据源及通过OLEDB和XML公开的数据远源的一致访问。ADO.NET统一了数据容器类编程接口,无论编写何种应用程序(Windows窗体、Web窗体、Web服务)都可以通过同一组类来处理数据。为使用方便,ADO.NET还提供了一组丰富的控件,利用可视化方式来开发数据库应用。.. .ADO.NET体系结构如下图2-1所示.NETFramework数据提供程序DatasetDataTableCollection数据表DataAdapterConnection事务Command参数DataReaderDeleteCommandUpdateCommandInsertCommandSelectCommand数据库DataRowCollectionConstraintCollectionDataColumnCollectionnDataRelationCollectionXML图2-1ADO.NET体系结构ADO.NET体系结构的两大核心控件是.NETFramework数据提供程序和Dataset。.NETFramework数据提供程序用于连接到数据库、执行命令和检索结果。Dataset是一个功能丰富、比较复杂的数据集,它是支持ADO.NET的断开式、分布式数据方案的核心对象。Dataset专门用来处理从数据源获得的数据,无论数据来自什么数据源,它都使用相同的方式操作数据。2.4ASP.NET配置.. .Asp.net的配置文件都是XML格式的文件,XML格式文件易于书写和定制,采用这种方法进行asp.net配置方便灵活。另外,asp.net的配置都是可以随时更改的,即应用程序运行期间,可以随时增加和删除asp.net配置文件中的项目,修改后可以立刻激活使用比当配置发生变化时需要服务重新启动配置才生效的方法有很大的优势。第三章需求分析3.1需求分析.. .任何一个软件项目的开发都是从需求调查开始,博客管理系统也不例外。系统管理员通过前台页面进入后台管理模块后,可以对注册的博客用户进行管理,包括对注册用户的添加、查找、修改和删除等操作;而博客用户通过前台登陆后,可以对自己的博客空间进行管理,包括发布自己的网络日志、收藏个人图片、与相关人员进行交流和沟通以及删除访问者的评论等。针对博客管理系统的一些需求,总结出如下信息:1.用户分普通用户、管理用户和超级管理用户。2.超级管理用户员可以对博客管理员进行管理和设置权限。3.博客管理员涉及对博客的类型管理、文章管理、图片管理、评论管理、留言管理和通信管理。4.普通用户可一阅读文章、发表回应、留言和评论。5.一种文章类型有多篇文章。6.一种文章有多篇评论。3.2可行性分析可行性分析(FeasibilityAnalysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。为了确定开发具有可行性,对本系统主要进行了以下四个方面的分析。(1)经济可行性。经济可行性主要是对项目的经济效益进行评价。本系统对系统开发者来说并不需要太高的成本支出,只是对系统的管理者付出管理报酬即可,而且开发周期不需要太长,节省了人力、物力、财力资源,所以本系统在经济上是可行的。(2)技术上的可行性。技术上的可行性分析主要是分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。在软件方面,本系统采用的是ASP(ActiveSeverPages)进行开发,前台网页设计使用的是DreamweaverMX,而数据库系统采用的是MicrosoftAccess2000。通过分析,在软、硬件方面现有工具与环境完全可以实现系统的开发,因此具有技术上的可行性。(3)时机可行性。时机可行性是分析系统开发时机是否成熟。目前越来越多的应用程序都已经是转向基于Web的开发,并且Internet已经广泛使用,因此系统的设计具有时机可行性。.. .(4)管理上的可行性:主要是管理人员是否支持,现有的管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。系统的开发主要就是为了方便校友信息的管理,补充现在传统管理方式的不足,因此具备了管理上的可行性。综上所述,本系统开发目标已明确,在技术和经济等方面具备可行性,并且投入少、见效快,因此系统的开发是完全可行的。第四章概要设计4.1系统设计方案本系统是面向个人用户和小型集体用户开发的系统,完成用户在Blog上进行预定操作,实现用户和来宾之间的双向沟通。具体设计方案为:.. .(1)系统服务器为IIS,数据库为SQLSERVER2005,整个系统界面采用MicrosoftvisualStudio2008开发。(2)用C#语言实现。(3)服务器与数据库的连接使用OLEDB编程接口的OleDbConnection对象进行连接。(4)系统分成两部分,前台为普通用户操作界面,功能包括:阅读文章,发表留言,发表评论,在线聊天。后台为管理员操作界面,管理员通过登录进入管理界面,功能包括:分类管理,文章管理,添加文章,评论管理,链接管理,留言管理。4.2系统功能模块系统功能模块包括两大块:管理界面功能模块和普通用户界面功能模块。其具体功能如下所示:本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。博客系统文章实体E-R图如图4-1所示。图4-1文章资源E-R图管理员用户功能模块图4-2如下:.. .图4-2管理员功能模块普通用户功能模块图4-3如下:View_Users用户Users文章ArticleArticle.username=Users.username图4-3普通用户功能模块4.3数据库需求分析■用户分为普通用户和管理员用户■管理员涉及类型管理、文章管理、添加文章、评论管理、链接管理、留言管理。■普通用户可以阅读文章、发表回应、留言、评论和在线聊天。■一种文章类型有多篇文章。■一篇文章有多篇评论、回复。对上面系统功能分析,设计如下数据项:■管理员信息:用户名、密码。■类型信息:类型编号、类型名称。.. .■链接:链接编号、链接名称、链接地址。■留言:留言编号、留言人呢称、留言标题、个人主页、留言内容、留言时间、留言回复。■文章信息:文章序号、文章作者、文章标题、摘要、文章内容、文章发表日期、文章人气、回复、文章类型编号、文章类型名称、文章回复数。■评论:评论序号、评论用户呢称、评论标题、评论内容、评论时间、评论的文章序号。4.4系统操作流程分析传统Blog系统这一环节所应具有的功能,可以得到Blog系统应具有以下功能:高级系统用户(管理员)通过浏览器,可以实现文章的管理(对文章的各种信息进行浏览、增加、删除、修改等)、普通系统用户对文章信息只能阅读和留言。由此得到的系统的流程图如图4-4所示个人博客系统文章信息管理个人信息管理通信信息管理评论信息管理添加删除修改添加查看查看查看图4-4系统操作流程.. .4.5数据表设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库逻辑结构。博客系统中的数据管理形式采用数据库,根据系统需要与数据规范化分为博客文章类型表,博客友情链接表,留言信息列表,博客文章信息列表,评论信息列表,系统管理员列表,博客管理员列表,联系人信息列表,图片信息列表这9张表,在此只给出比较重要的数据表。表4-1ST_news(文章信息列表)字段说明类型长度允许空ST_n_id文章唯一ID号Int4否ST_n_author文章作者nvarchar50是ST_n_title文章标题nvarchar200是ST_n_key文章摘要nvarchar200是ST_n_content文章内容ntextr50是ST_n_date文章发表日期datetime8是ST_n_hit文章人气bigint8是ST_n_re文章回复bigint8是ST_c_id文章类型编号bigint8是ST_c_name文章类型名称nvarchar50是ST_c_iscmd文章回复数int4是表4-2ST_replay(评论信息列表)字段说明类型长度允许空ST_r_id评论唯一ID号bigint8否ST_r_nick昵称nvarchar50是.. .ST_r_title评论标题nvarchar250是ST_r_content评论内容nvarchar250是ST_r_date评论发表时间datetime8是ST_n_id评论文章编号int4是表4-3ST_class(博客文章类型表)字段说明类型长度允许空ST_c_id文章唯一ID号bigint8否ST_c_name文章类型名称Nvarchar50是BlogID博客唯一ID号int50是表4-4ST_message(留言信息列表)字段说明类型长度允许空ST_id留言唯一ID号bigint8否ST_nickname网友昵称nvarchar50是ST_title留言标题nvarchar50是ST_homepage个人主页nvarchar50是ST_content留言内容ntext16是ST_mdate留言时间datetime8是ST_hf留言回复ntext16是.. .4.6数据库的完整性和安全性4.6.1数据库的完整性约束数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。数据库的完整性约束主要包括以下三方面要求:(1)实体完整性实体完整性是指若属性A是基本关系R的主属性,则属性A不能取空值。对于每个表来说,主键都不可以为空。在用户提交信息时,系统会对用户所填写的信息进行验证,对于其中的关键信息没有填写或者数据非法时,系统会提示用户更改后再提交。这样保证了系统实体完整性。(2)参照完整性由于表和表之间会存在某些联系,当关系R和关系S之间是一对多关系时(R的主键是A,S的主键是b,c是s中的外码),在插入数据时就要保证外码c的值或者为空或者等于R中某个元组的主码值。在对被参照表进行删除操作时应同时进行及联删除。(3)用户定义完整性任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个属性的取值范围等。4.6.2数据库的安全性数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,同时又为许多用户直接共享,是宝贵的信息资源,因此系统的安全保护措施就显得更为重要。键全的数据库安全机制可以防止数据库被恶意的破坏和非法的存取。.. .本系统的安全设计包括服务器和数据库两方面设计。当用户使用系统时,系统首先会检查用户是否登录,如果用户还没有登录,系统将会弹出警告窗口提醒用户,并将相应的页面跳转至用户登录。在用户提交登录信息后,系统会对用户的身份进行核对,如果在数据库中查找到了相关记录,打开用户页面,表明用户登录成功。对于数据库的安全,主要是通过对授权用户的身份验证实现的。在的系统管理页面,提示用户使用管理员帐号在此登录,没有管理权限的系统注册用户无法登录到数据库管理的后台。系统确认了管理员身份之后统会打开管理页面,系统管理者可在此对整个系统的数据库进行管理和维护。第五章详细设计5.1后台功能模块详细设计通过此功能用户可以对主页中的许多功能和数据进行操作控制。5.1.1用户注册模块设计页面Register.asp主要完成引导用户进行注册,首先会提供注册表让用户输入用户名和密码等,让用户输入注册信息,输入完成后,当用户单击[注册]按钮的时候,要对用户输入的注册信息简单认证,看用户信息是否验证,如果验证进行数据库验证,查看用户之前是否已经注册过,如果没有注册则插入一条新记录到数据库,完成注册。本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。.. .图5-1博客注册资料实现此功能的关键代码为:protectedvoidbtnOK_Click(objectsender,EventArgse){SqlDatada=newSqlData();SqlDataReaderread=da.ExceRead("select*fromtb_AdminwhereUserName='"+this.txtName.Text+"'");read.Read();if(read.HasRows){if(this.txtName.Text==read["UserName"].ToString()){Response.Write("alert('对不起,该用户已经注册!');location='Register.aspx'");return;.. .}}read.Close();stringP_str_Com="insertintotb_Admin(UserName,PassWord,Question,Answer,ReallyName,Birthday,Address"+",PostCode,Email,HomePhone,MobilePhone,QQ,ICQ,RegTime,Sex,SuperAdmin,IP)values('"+this.txtName.Text+"'"+",'"+this.txtPwd.Text+"','"+this.txtQues.Text+"','"+this.txtAns.Text+"','"+this.txtRealName.Text+"'"+",'"+this.txtBirthday.Text+"','"+this.txtAddress.Text+"','"+this.txtPostCode.Text+"','"+this.txtEmail.Text+"'"+",'"+this.txtHphone.Text+"','"+this.txtMphone.Text+"','"+this.txtQQ.Text+"','"+this.txtICQ.Text+"','"+DateTime.Now.ToString()+"','"+this.DropDownList1.SelectedValue+"','"+this.DropDownList2.SelectedValue+"','"+Request.UserHostAddress+"')";booladd=da.ExceSQL(P_str_Com);if(add==true){Response.Write("alert('注册成功!');location='AdminManage.aspx'");}else{Response.Write("alert('注册失败!');location='javascript:history.go(-1)'");}.. .}在博客注册页面中,还用到了一个小功能,就是在用户填写用户名时,通过单击“检测用户”按钮,触发其Click事件来检测填写的用户名是否已经存在。主要代码如下:protectedvoidButton1_Click(objectsender,EventArgse){SqlDatada=newSqlData();SqlDataReaderread=da.ExceRead("select*fromtb_AdminwhereUserName='"+this.txtName.Text+"'");read.Read();if(read.HasRows){if(this.txtName.Text==read["UserName"].ToString()){Response.Write("alert('对不起,该用户已经注册!');location='Register.aspx'");}}else{Response.Write("alert('恭喜您,该用户可以注册!');");}read.Close();}5.1.2博客管理员首页设计在博客首页中单击“管理员”超链接,弹出管理员登录对话框,输入正确的用户名和密码后,单击“登录”按钮,进入博客管理员首页,如图5.. .-2所示。在页面左侧显示的是树形功能导航菜单,其有7项管理功能,分别为类型管理,文章管理,留言管理,评论管理,链接管理,通信管理和图片管理。单击相应的功能超链接,将在页面右侧显示相应的连接信息,例如单击“类型管理“超链接,将在页面右侧显示所有的文章类型,管理员可进行添加修改和删除等操作。图5-2文章信息管理图实现代码在此内容页中的前台代码中编写如下代码:<%@PageLanguage="C#"MasterPageFile="~/MasterPage/AdminMasterPage.master"AutoEventWireup="true"CodeFile="ST_BlogIndex.aspx.cs"Inherits="Module_Admin_ST_type"Title="UntitledPage"%>

.. .
该页主要应用了TreeView控件,实现对博客后台的导航管理,如导向文章类型管理页面。在页面中应用的TreeView控件代码如下:.. .5.1.3博客文章信息管理页面在博客的后台管理中,文章管理占有相当重要的地位。单击Blog文件夹下ST_BlogIndex.aspx页面中的“博客管理员”节点下的“文章管理”,就会显示出博客文章管理的相关信息,包括文章编号,文章标题,人气指数等。这部分内容的实现是由该文件夹下的AvticleManage.aspx页面来实现的,运行效果如图5-3所示。此页面中用到了一个GridView控件,主要用来向用户展示已有文章信息,同时提供修改,删除,添加和查询基本操作。图5-3博客管理博客文章信息的查询关键代码如下:protectedvoidbtnSearch_Click(objectsender,EventArgse){SqlDatada=newSqlData();stringsearch=this.ddlSearch.SelectedValue;switch(search){.. .case"文章ID":da.BindData(this.GridView1,"Select*FromST_newsWhereST_n_idLike'%"+this.txtKey.Text+"%'andBlogID='"+ID+"'");break;case"文章主题":da.BindData(this.GridView1,"Select*FromST_newsWhereST_n_titleLike'%"+this.txtKey.Text+"%'andBlogID='"+ID+"'");break;default:Response.Write("alert('查询失败!');location='javascript:history.go(-1)'");break;}}博客文章信息的修改关键代码如下:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){try{stringstr;stringstr2=Page.Request["id"].ToString();//此处用来实现将数据绑定到前台SqlConnectionmycon=newSqlConnection(ConfigurationManager.AppSettings["conStr"]);mycon.Open();SqlDataAdaptermyada=newSqlDataAdapter("select*from.. .ST_newswhereST_n_id='"+str2+"'",mycon);DataSetds=newDataSet();myada.Fill(ds,"ST_news");//创建DataRowView对象的一个实例DataRowViewrowview=ds.Tables["ST_news"].DefaultView[0];//将文章主题读取到labSubject文本框中this.labSubject.Text=rowview["ST_n_title"].ToString();//将文章内容读取到txtContent文本框中this.txtContent.Text=rowview["ST_n_content"].ToString();mycon.Close();}catch(Exceptionex){Response.Write(ex.Message);}}}博客文章信息的添加关键代码如下:protectedvoidPage_Load(objectsender,EventArgse){if(Session["UserName"]==null){Response.Redirect("~/BlogIndex.aspx");}SqlConnectionmycon=newSqlConnection(ConfigurationManager.AppSettings["conStr"]);mycon.Open();DataSetmydataset=newDataSet();.. .SqlDataAdaptermydataadapter=newSqlDataAdapter("select*fromtb_BlogwhereUserName='"+Session["UserName"]+"'",mycon);mydataadapter.Fill(mydataset,"tb_Blog");DataRowViewrowview=mydataset.Tables["tb_Blog"].DefaultView[0];ID=rowview["BlogID"].ToString();stringsqlstr="select*fromST_ClasswhereBlogID='"+ID+"'";SqlCommandmycom=newSqlCommand(sqlstr,mycon);SqlDataReaderdr=mycom.ExecuteReader();//判断是否有数据while(dr.Read()){DropDownList1.Items.Add(newListItem(dr["ST_c_name"].ToString(),dr["ST_c_id"].ToString()));}}.. .5.2前台功能模块详细设计5.2.1前台主界面前台主界面图如下图5-4前台主界面图主要实现代码如下:protectedvoidPage_Load(objectsender,EventArgse){//在此处放置用户代码以初始化页面.. .stringST_dns=ConfigurationSettings.AppSettings["conStr"];//最新推荐文章stringST_cmd_sql="selecttop10*fromST_newswhereST_n_iscmd=1orderbyST_n_datedesc";ST_myConn=newSqlConnection(ST_dns);SqlDataAdapterST_classCmd=newSqlDataAdapter("selectST_c_id,ST_c_namefromST_class",ST_myConn);SqlDataAdapterST_cmdCmd=newSqlDataAdapter(ST_cmd_sql,ST_myConn);DataSetST_classds=newDataSet();ST_classCmd.Fill(ST_classds,"类别列表");DataSetST_cmdds=newDataSet();ST_cmdCmd.Fill(ST_cmdds,"推荐文章");ClassList.DataSource=newDataView(ST_classds.Tables[0]);ClassList.DataBind();CmdList.DataSource=newDataView(ST_cmdds.Tables[0]);CmdList.DataBind();//调用自定义NewsBlogList_Bind方法NewsBlogList_Bind();if(Request.Cookies["colors"]!=null){stringST_test=Request.Cookies["colors"].Value;String[]ST_colorList=ST_test.Split(newchar[]{','});ST_bgcolor=ST_colorList[0];ST_tcolor=ST_colorList[1];}else.. .{ST_bgcolor="#FFDE94";ST_tcolor="#efe3ce";}Page.DataBind();}publicvoidNewsBlogList_Bind(){stringST_sql;if(Request.QueryString["c_id"]==null){ST_sql="select*fromST_newsorderbyST_n_datedesc";}else{if(IsSafe(Request.QueryString["c_id"],2)==true){ST_sql="select*fromST_newswhereST_c_id="+Request.QueryString["c_id"]+"orderbyST_n_datedesc";}else{ST_sql="";Response.Write("非法参数");Response.End();}}.. .SqlDataAdapterST_myCmd=newSqlDataAdapter(ST_sql,ST_myConn);DataSetST_ds=newDataSet();ST_myCmd.Fill(ST_ds,"文章列表");NewsList.DataSource=newDataView(ST_ds.Tables[0]);NewsList.DataBind();}publicboolIsSafe(stringstr,intprama){if(prama==1){if(Regex.IsMatch(str,"[0-9]")){returntrue;}else{returnfalse;}}else{if(str.IndexOf("and")>0||str.IndexOf("or")>0||str.IndexOf("'")>0){returnfalse;}else{.. .returntrue;}}}#regionWebFormDesignergeneratedcodeoverrideprotectedvoidOnInit(EventArgse){InitializeComponent();base.OnInit(e);}#endregionprotectedvoidNewsList_PageIndexChanging(objectsender,GridViewPageEventArgse){NewsList.PageIndex=e.NewPageIndex;NewsBlogList_Bind();}}5.2.2“博客评论”功能模块设计单击Blog文件夹下的ST-BlogIndex.aspx页面中的“博客管理员”节点下的“评论管理”,就会显示出对博客文章进行评论的相关信息,包括评论者和评论内容。这部分内容的实现是由该文件夹下的ST-admin-replay.aspx页面来实现的,运行效果如图5-5所示。.. .图5-5回应管理图主要功能实现代码如下:protectedvoidPage_Load(objectsender,System.EventArgse){stringST_dns=ConfigurationSettings.AppSettings["conStr"];ST_myConn=newSqlConnection(ST_dns);if(!Page.IsPostBack){ST_Replay_Bind();}}privatevoidST_Replay_Bind(){stringST_sql="select*fromST_replay";//调用公共类SqlData中的ExceDS方法,返回一个DataSet类型的数据集ReplayList.DataSource=sd.ExceDS(ST_sql);ReplayList.DataKeyNames=newstring[]{"ST_r_id"};ReplayList.DataBind();.. .}protectedvoidReplayList_RowDeleting(objectsender,GridViewDeleteEventArgse){//创建公共类SqlData的一个新实例对象SqlDatada=newSqlData();//调用公共类中的ExceSQL,执行删除的SQL语句booldelete=da.ExceSQL("deletefromST_replaywhereST_r_id='"+ReplayList.DataKeys[e.RowIndex].Value.ToString()+"'");if(delete){Response.Write("alert('删除成功!');location='ST_admin_replay.aspx'");}else{Response.Write("alert('删除失败!');location='ST_admin_replay.aspxx'");}}}.. .5.2.3友情连接管理页实现过程图5-6超链接管理图在此页面主要用了一个GridView控件和一个“添加新链接“的超链接。GridView控件用来向用户展示已有的链接信息,同时提供修改和删除评论信息的操作;“查找”按钮则用来提供已有链接的查询操作。主要功能实现代码如下:protectedvoidPage_Load(objectsender,EventArgse){ST_check_Login();SqlDatada=newSqlData();this.GridView1.DataSource=da.ExceDS("select*fromST_link");GridView1.DataKeyNames=newstring[]{"ST_l_id"};GridView1.DataBind();}publicvoidST_check_Login(){if((Session["UserName"]==null)){Response.Write("");Response.End();}.. .}protectedvoidbtnSearch_Click(objectsender,EventArgse){SqlDatada=newSqlData();stringsearch=this.ddlSearch.SelectedValue;switch(search){case"地址ID":da.BindData(this.GridView1,"Select*FromST_linkWhereST_l_idLike'%"+this.txtKey.Text+"%'");break;case"网站名称":da.BindData(this.GridView1,"Select*FromST_linkWhereST_l_nameLike'%"+this.txtKey.Text+"%'");break;case"链接网址":da.BindData(this.GridView1,"Select*FromST_linkWhereST_l_urlLike'%"+this.txtKey.Text+"%'");break;default:Response.Write("alert('查询失败!');location='javascript:history.go(-1)'");break;}.. .第六章测试6.1测试目的程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码的最终复审,是保证程序质量的关键步骤。如果要给程序测试下定义,可以这样讲,程序测试是为了发现错误而执行程序的过程。本系统由福州远行者信息技术有限公司开发,更多内容请参阅公司官网。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。编程人员力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。6.2测试方法程序测试的主要方法为黑盒测试。黑盒测试:也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性上测试是否满足设定的功能。6.3测试用例(1)用户测试权限测试内容:填写用户名及密码,验证能否成功登陆。操作:①填写正确的用户名及密码。②填写错误的用户名或密码。结果:①成功登陆。②提示用户名或密码错误。(2)文章管理测试(I)发表文章测试内容:用户发表新文章,。.. .操作:进入博客系统,点击文章管理,选择添加文章的操作如下图6-1所示,填写完文章内容之后单击添加按钮,看系统是否会提示发表成功。结果:测试成功。.. .第七章结论7.1不足之处与改进本系统现已基本完成,基本功能已经具备,但在如下几个方面还存在着不足,需要做进一步的研究与开发,使Blog系统能够更完善。7.1.1权限分配本系统权限分配不够细化,只分为管理员和普通用户。管理员可以对数据库进行所有操作,普通用户只能浏览文章,发表回复,在线聊天。而不能发表自己的文章,管理自己的文章,缺乏作为低级管理员的功能。如果我们能在数据库中为各种不同的用户分配不同的角色来细化权限的分配,这样可以便于我们对系统的管理和维护,也能够更多的满足广大用户的需求。7.1.2界面美观化一个系统强大的功能固然重要,能有一个漂亮的界面也必不可少。特别是界面上颜色的搭配很有讲究,要符合系统的基调。让用户更加赏心悦目,为此我认真研究了CSS,.NET。在一定程度上美化了界面,但是对FLASH,PHOTOSHOP还不同熟悉,所以界面显得单调。7.2结论本文提出并设计了一个基于ASP.NET的完整的博客系统,该系统整合了数据库技术、ASP.NET技术、网站开发技术等。主要实现了当前主流博客的基本功能,功能强大而且好用。但是本系还存在着一些不足之处,如安全性上的密码未采用加密,部分功能待完善,权限分配不够全面不够细。通过对这个系统的学习与开发,让我更好地掌握了ASP.NET的开发技术,更深刻地理解了网站的开发流程。在两个月的开发周期中,让我明白一点,就是测试的重要性。所谓建系统,测试先行,软件工程的知识告诉我们一个系统的开发从立项到投入运行,很长的周期都是在测试上的,这次的实际的系统开发让我增长了测试的经验。.. .参考文献1张树亮,李超著《asp.net2.0+sqlserver网络应用系统开发案例精解》[M]清华大学出版社2006-92明月创作室编著《visualc#编程精彩百例》[M]人民邮电出版社2001-93孙永强,杨丽坤著《VisualC#.NET中文版Web服务开发基础》[M]清华大学出版社2006-94金雪云著《ASP.MET简明教程》[M]清华大学出版社2003-75马军著《ASP网络编程从入门到精通》[M]清华大学出版社2005-96沈阳,李勇敢著《ASP.NET程序设计教程》[M]电子工业出版社2006-107Hyde.R(美)《编程卓越之道(第一卷):深入计算机》[M]电子工业出版社2006-48RyanAsleson,NathanielT.Schutta(美)著金灵等译《Ajax基础教程》[M]人民邮电出版社2006-29李香敏.《ACCESS2000编程员指南》.北京希望电子出版社.200410张海藩.《软件工程导论》(第三版)[M].北京:清华大学出版社.2003.. .附录译文ASP.NET和SQLServer2000ASP.NET是一个统一的Web开发模型,它包括您使用尽可能少的代码生成企业级Web应用程序所必需的各种服务。ASP.NET作为.NETFramework的一部分提供。当您编写ASP.NET应用程序的代码时,可以访问.NETFramework中的类。您可以使用与公共语言运行库(CLR)兼容的任何语言来编写应用程序的代码,这些语言包括MicrosoftVisualBasic、C#、JScript.NET和J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的ASP.NET应用程序。ASP.NET包括:·页和控件框架·ASP.NET编译器·安全基础结构·状态管理功能·应用程序配置·运行状况监视和性能功能·调试支持·XMLWebservices框架·可扩展的宿主环境和应用程序生命周期管理·可扩展的设计器环境ASP.NET页和控件框架是一种编程框架,它在Web服务器上运行,可以动态地生成和呈现ASP.NET网页。可以从任何浏览器或客户端设备请求ASP.NET.. .网页,ASP.NET会向请求浏览器呈现标记(例如HTML)。通常,您可以对多个浏览器使用相同的页,因为ASP.NET会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如MicrosoftInternetExplorer6的特定浏览器设计ASP.NET网页,并利用该浏览器的功能。ASP.NET支持基于Web的设备(如移动电话、手持型计算机和个人数字助理(PDA))的移动控件。ASP.NET网页是完全面向对象的。在ASP.NET网页中,可以使用属性、方法和事件来处理HTML元素。ASP.NET页框架为响应在服务器上运行的代码中的客户端事件提供统一的模型,从而使您不必考虑基于Web的应用程序中固有的客户端和服务器隔离的实现细节。该框架还会在页处理生命周期中自动维护页及该页上控件的状态。使用ASP.NET页和控件框架还可以将常用的UI功能封装成易于使用且可重用的控件。控件只需编写一次,即可用于许多页并集成到ASP.NET网页中。这些控件在呈现期间放入ASP.NET网页中。ASP.NET页和控件框架还提供各种功能,以便可以通过主题和外观来控制网站的整体外观和感觉。可以先定义主题和外观,然后在页面级或控件级应用这些主题和外观。除了主题外,还可以定义母版页,以使应用程序中的页具有一致的布局。一个母版页可以定义您希望应用程序中的所有页(或一组页)所具有的布局和标准行为。然后可以创建包含要显示的页特定内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并,产生将母版页的布局与内容页中的内容组合在一起的输出。所有ASP.NET代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将ASP.NET编译为本机代码,从而提供增强的性能。ASP.NET包括一个编译器,该编译器将包括页和控件在内的所有应用程序组件编译成一个程序集,之后ASP.NET宿主环境可以使用该程序集来处理用户请求。除了.NET的安全功能外,ASP.NET还提供了高级的安全基础结构,以便对用户进行身份验证和授权,并执行其他与安全相关的功能。您可以使用由IIS提供的.. .Windows身份验证对用户进行身份验证,也可以通过您自己的用户数据库使用ASP.NETForms身份验证和ASP.NET成员资格来管理身份验证。此外,可以使用Windows组或您自己的自定义角色数据库(使用ASP.NET角色)来管理Web应用程序的功能和信息方面的授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。ASP.NET始终使用特定的Windows标识运行,因此,您可以通过使用Windows功能(例如NTFS访问控制列表(ACL)、数据库权限等等)来保护应用程序的安全。ASP.NET提供了内部状态管理功能,它使您能够存储页请求期间的信息,例如客户信息或购物车的内容。您可以保存和管理应用程序特定、会话特定、页特定、用户特定和开发人员定义的信息。此信息可以独立于页上的任何控件。ASP.NET提供了分布式状态功能,使您能够管理一台计算机或数台计算机上同一应用程序的多个实例的状态信息。通过ASP.NET应用程序使用的配置系统,可以定义Web服务器、网站或单个应用程序的配置设置。您可以在部署ASP.NET应用程序时定义配置设置,并且可以随时添加或修订配置设置,且对运行的Web应用程序和服务器具有最小的影响。ASP.NET配置设置存储在基于XML的文件中。由于这些XML文件是ASCII文本文件,因此对Web应用程序进行配置更改比较简单。您可以扩展配置方案,使其符合自己的要求。ASP.NET包括可监视ASP.NET应用程序的运行状况和性能的功能。使用ASP.NET运行状况监视可以报告关键事件,这些关键事件提供有关应用程序的运行状况和错误情况的信息。这些事件显示诊断和监视特征的组合,并在记录哪些事件以及如何记录事件等方面提供了高度的灵活性。ASP.NET支持两组可供应用程序访问的性能计数器:·ASP.NET系统性能计数器组·ASP.NET应用程序性能计数器组ASP.NET利用运行库调试基础结构来提供跨语言和跨计算机调试支持。可以调试托管和非托管对象,以及公共语言运行库和脚本语言支持的所有语言。.. .此外,ASP.NET页框架提供使您可以将检测消息插入ASP.NET网页的跟踪模式。ASP.NET支持XMLWebservices。XMLWebservices是包含业务功能的组件,利用该业务功能,应用程序可以使用HTTP和XML消息等标准跨越防火墙交换信息。XMLWebservices不用依靠特定的组件技术或对象调用约定。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问XMLWebservices。ASP.NET包括一个可扩展的宿主环境,该环境控制应用程序的生命周期,即从用户首次访问此应用程序中的资源(例如页)到应用程序关闭这一期间。虽然ASP.NET依赖作为应用程序宿主的Web服务器(IIS),但ASP.NET自身也提供了许多宿主功能。通过ASP.NET的基础结构,您可以响应应用程序事件并创建自定义HTTP处理程序和HTTP模块。ASP.NET中提供了对创建Web服务器控件设计器(用于可视化设计工具,例如VisualStudio)的增强支持。使用设计器可以为控件生成设计时用户界面,这样开发人员可以在可视化设计工具中配置控件的属性和内容。C#是一种简洁、类型安全的面向对象的语言,开发人员可以使用它来构建在.NETFramework上运行的各种安全、可靠的应用程序。使用C#,您可以创建传统的Windows客户端应用程序、XMLWebservices、分布式组件、客户端-服务器应用程序、数据库应用程序以及很多其他类型的程序。MicrosoftVisualC#2005提供高级代码编辑器、方便的用户界面设计器、集成调试器和许多其他工具,以在C#语言版本2.0和.NETFramework的基础上加快应用程序的开发。C#语法表现力强,只有不到90个关键字,而且简单易学。C#的大括号语法使任何熟悉C、C++或Java的人都可以立即上手。了解上述任何一种语言的开发人员通常在很短的时间内就可以开始使用C#高效地工作。C#语法简化了C++的诸多复杂性,同时提供了很多强大的功能,例如可为空的值类型、枚举、委托、匿名方法和直接内存访问,这些都是Java所不具备的。C#还支持泛型方法和类型,从而提供了更出色的类型安全和性能。C#还提供了迭代器,允许集合类的实现者定义自定义的迭代行为,简化了客户端代码对它的使用。.. .作为一种面向对象的语言,C#支持封装、继承和多态性概念。所有的变量和方法,包括Main方法(应用程序的入口点),都封装在类定义中。类可能直接从一个父类继承,但它可以实现任意数量的接口。重写父类中的虚方法的各种方法要求override关键字作为一种避免意外重定义的方式。在C#中,结构类似于一个轻量类;它是一种堆栈分配的类型,可以实现接口,但不支持继承。除了这些基本的面向对象的原理,C#还通过几种创新的语言结构加快了软件组件的开发,其中包括:·封装的方法签名(称为委托),它实现了类型安全的事件通知。·属性(Property),充当私有成员变量的访问器。·属性(Attribute),提供关于运行时类型的声明性元数据。·内联XML文档注释。在C#中,如果需要与其他Windows软件(如COM对象或本机Win32DLL)交互,可以通过一个称为“Interop”的过程来实现。互操作使C#程序能够完成本机C++应用程序可以完成的几乎任何任务。在直接内存访问必不可少的情况下,C#甚至支持指针和“不安全”代码的概念。C#的生成过程比C和C++简单,比Java更为灵活。没有单独的头文件,也不要求按照特定顺序声明方法和类型。C#源文件可以定义任意数量的类、结构、接口和事件。C#程序在.NETFramework上运行,它是Windows的一个必要组件,包括一个称为公共语言运行时(CLR)的虚拟执行系统和一组统一的类库。CLR是Microsoft的公共语言基础结构(CLI)的一个商业实现。CLI是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础。用C#编写的源代码被编译为一种符合CLI规范的中间语言(IL)。IL代码与资源(如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为.exe或.dll。程序集包含清单,它提供关于程序集的类型、版本、区域性和安全要求等信息。.. .执行C#程序时,程序集将加载到CLR中,这可能会根据清单中的信息执行不同的操作。然后,如果符合安全要求,CLR执行实时(JIT)编译以将IL代码转换为本机机器指令。CLR还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由CLR执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。下图演示了C#源代码文件、基类库、程序集和CLR的编译时与运行时的关系。语言互操作性是.NETFramework的一个关键功能。因为由C#编译器生成的IL代码符合公共类型规范(CTS),因此从C#生成的IL代码可以与从VisualBasic、VisualC++、VisualJ#的.NET版本或者其他20多种符合CTS的语言中的任何一种生成的代码进行交互。单一程序集可能包含用不同.NET语言编写的多个模块,并且类型可以相互引用,就像它们是用同一种语言编写的。除了运行时服务,.NETFramework还包含一个由4000多个类组成的内容详尽的库,这些类被组织为命名空间,为从文件输入和输出到字符串操作、到XML分析、到.. .Windows窗体控件的所有内容提供多种有用的功能。典型的C#应用程序使用.NETFramework类库广泛地处理常见的“日常”任务。附录外文原文ASP.NET.. .ASP.NETisaunifiedWebdevelopmentmodelthatincludestheservicesnecessaryforyoutobuildenterprise-classWebapplicationswithaminimumofcoding.ASP.NETispartofthe.NETFramework,andwhencodingASP.NETapplicationsyouhaveaccesstoclassesinthe.NETFramework.Youcancodeyourapplicationsinanylanguagecompatiblewiththecommonlanguageruntime(CLR),includingMicrosoftVisualBasic,C#,JScript .NET,andJ#.TheselanguagesenableyoutodevelopASP.NETapplicationsthatbenefitfromthecommonlanguageruntime,typesafety,inheritance,andsoon.ASP.NETincludes:·Apageandcontrolsframework·TheASP.NETcompiler·Securityinfrastructure·State-managementfacilities·Applicationconfiguration·Healthmonitoringandperformancefeatures·Debuggingsupport·AnXMLWebservicesframework·Extensiblehostingenvironmentandapplicationlifecyclemanagement·AnextensibledesignerenvironmentTheASP.NETpageandcontrolsframeworkisaprogrammingframeworkthatrunsonaWebservertodynamicallyproduceandrenderASP.NETWebpages.ASP.NETWebpagescanberequestedfromanybrowserorclientdevice,andASP.NETrendersmarkup(suchasHTML)totherequestingbrowser.Asarule,youcanusethesamepageformultiplebrowsers,becauseASP.NETrenderstheappropriatemarkupforthebrowsermakingtherequest.However,youcandesignyourASP.NETWebpagetotargetaspecificbrowser,suchasMicrosoftInternetExplorer6,andtakeadvantageofthefeaturesofthat.. .browser.ASP.NETsupportsmobilecontrolsforWeb-enableddevicessuchascellularphones,handheldcomputers,andpersonaldigitalassistants(PDAs).ASP.NETWebpagesarecompletelyobject-oriented.WithinASP.NETWebpagesyoucanworkwithHTMLelementsusingproperties,methods,andevents.TheASP.NETpageframeworkremovestheimplementationdetailsoftheseparationofclientandserverinherentinWeb-basedapplicationsbypresentingaunifiedmodelforrespondingtoclienteventsincodethatrunsattheserver.Theframeworkalsoautomaticallymaintainsthestateofapageandthecontrolsonthatpageduringthepageprocessinglifecycle.TheASP.NETpageandcontrolsframeworkalsoenablesyoutoencapsulatecommonUIfunctionalityineasy-to-use,reusablecontrols.Controlsarewrittenonce,canbeusedinmanypages,andareintegratedintotheASP.NETWebpagethattheyareplacedinduringrendering.TheASP.NETpageandcontrolsframeworkalsoprovidesfeaturestocontroltheoveralllookandfeelofyourWebsiteviathemesandskins.Youcandefinethemesandskinsandthenapplythematapageleveloratacontrollevel.Inadditiontothemes,youcandefinemasterpagesthatyouusetocreateaconsistentlayoutforthepagesinyourapplication.Asinglemasterpagedefinesthelayoutandstandardbehaviorthatyouwantforallthepages(oragroupofpages)inyourapplication.Youcanthencreateindividualcontentpagesthatcontainthepage-specificcontentyouwanttodisplay.Whenusersrequestthecontentpages,theymergewiththemasterpagetoproduceoutputthatcombinesthelayoutofthemasterpagewiththecontentfromthecontentpage.AllASP.NETcodeiscompiled,whichenablesstrongtyping,performanceoptimizations,andearlybinding,amongotherbenefits.Oncethecodehasbeencompiled,thecommonlanguageruntimefurthercompilesASP.NETcodetonativecode,providingimprovedperformance... .ASP.NETincludesacompilerthatwillcompileallyourapplicationcomponentsincludingpagesandcontrolsintoanassemblythattheASP.NEThostingenvironmentcanthenusetoserviceuserrequests.Inadditiontothesecurityfeaturesof.NET,ASP.NETprovidesanadvancedsecurityinfrastructureforauthenticatingandauthorizinguseraccessaswellasperformingothersecurity-relatedtasks.YoucanauthenticateusersusingWindowsauthenticationsuppliedbyIIS,oryoucanmanageauthenticationusingyourownuserdatabaseusingASP.NETformsauthenticationandASP.NETmembership.Additionally,youcanmanagetheauthorizationtothecapabilitiesandinformationofyourWebapplicationusingWindowsgroupsoryourowncustomroledatabaseusingASP.NETroles.Youcaneasilyremove,addto,orreplacetheseschemesdependingupontheneedsofyourapplication.ASP.NETalwaysrunswithaparticularWindowsidentitysoyoucansecureyourapplicationusingWindowscapabilitiessuchasNTFSAccessControlLists(ACLs),databasepermissions,andsoon.FormoreinformationontheidentityofASP.NET,ASP.NETprovidesintrinsicstatemanagementfunctionalitythatenablesyoutostoreinformationbetweenpagerequests,suchascustomerinformationorthecontentsofashoppingcart.Youcansaveandmanageapplication-specific,session-specific,page-specific,user-specific,anddeveloper-definedinformation.Thisinformationcanbeindependentofanycontrolsonthepage.ASP.NEToffersdistributedstatefacilities,whichenableyoutomanagestateinformationacrossmultipleinstancesofthesameapplicationononecomputeroronseveralcomputers.ASP.NETapplicationsuseaconfigurationsystemthatenablesyoutodefineconfigurationsettingsforyourWebserver,foraWebsite,orforindividualapplications.YoucanmakeconfigurationsettingsatthetimeyourASP.NETapplicationsaredeployedandcanaddorreviseconfigurationsettingsatanytimewithminimalimpactonoperationalWebapplicationsandservers.ASP.NETconfigurationsettingsarestoredin.. .XML-basedfiles.BecausetheseXMLfilesareASCIItextfiles,itissimpletomakeconfigurationchangestoyourWebapplications.Youcanextendtheconfigurationschemetosuityourrequirements.ASP.NETincludesfeaturesthatenableyoutomonitorhealthandperformanceofyourASP.NETapplication.ASP.NEThealthmonitoringenablesreportingofkeyeventsthatprovideinformationaboutthehealthofanapplicationandabouterrorconditions.Theseeventsshowacombinationofdiagnosticsandmonitoringcharacteristicsandofferahighdegreeofflexibilityintermsofwhatisloggedandhowitislogged.ASP.NETsupportstwogroupsofperformancecountersaccessibletoyourapplications:·TheASP.NETsystemperformancecountergroup·TheASP.NETapplicationperformancecountergroupASP.NETtakesadvantageoftherun-timedebugginginfrastructuretoprovidecross-languageandcross-computerdebuggingsupport.Youcandebugbothmanagedandunmanagedobjects,aswellasalllanguagessupportedbythecommonlanguageruntimeandscriptlanguages.Inaddition,theASP.NETpageframeworkprovidesatracemodethatenablesyoutoinsertinstrumentationmessagesintoyourASP.NETWebpages.ASP.NETsupportsXMLWebservices.AnXMLWebserviceisacomponentcontainingbusinessfunctionalitythatenablesapplicationstoexchangeinformationacrossfirewallsusingstandardslikeHTTPandXMLmessaging.XMLWebservicesarenottiedtoaparticularcomponenttechnologyorobject-callingconvention.Asaresult,programswritteninanylanguage,usinganycomponentmodel,andrunningonanyoperatingsystemcanaccessXMLWebservices.ASP.NETincludesanextensiblehostingenvironmentthatcontrolsthelifecycleofanapplicationfromwhenauserfirstaccessesaresource(suchasapage)intheapplicationtothepointatwhichtheapplicationisshutdown.WhileASP.NETreliesonaWebserver.. .(IIS)asanapplicationhost,ASP.NETprovidesmuchofthehostingfunctionalityitself.ThearchitectureofASP.NETenablesyoutorespondtoapplicationeventsandcreatecustomHTTPhandlersandHTTPmodules.ASP.NETincludesenhancedsupportforcreatingdesignersforWebservercontrolsforusewithavisualdesigntoolsuchasVisualStudio.Designersenableyoutobuildadesign-timeuserinterfaceforacontrol,sothatdeveloperscanconfigureyourcontrol'spropertiesandcontentinthevisualdesigntool.IntroductiontotheC#Languageandthe.NETFramework C#isanelegantandtype-safeobject-orientedlanguagethatenablesdeveloperstobuildawiderangeofsecureandrobustapplicationsthatrunonthe.NETFramework.YoucanuseC#tocreatetraditionalWindowsclientapplications,XMLWebservices,distributedcomponents,client-serverapplications,databaseapplications,andmuch,muchmore.MicrosoftVisualC#2005providesanadvancedcodeeditor,convenientuserinterfacedesigners,integrateddebugger,andmanyothertoolstofacilitaterapidapplicationdevelopmentbasedonversion2.0oftheC#languageandthe.NETFramework.NoteTheVisualC#documentationassumesthatyouhaveanunderstandingofbasicprogrammingconcepts.Ifyouareacompletebeginner,youmightwanttoexploreVisualC#ExpressEdition,whichisavailableontheWeb.YoucanalsotakeadvantageofanyofseveralexcellentbooksandWebresourcesonC#tolearnpracticalprogrammingskills.C#syntaxishighlyexpressive,yetwithlessthan90keywords,itisalsosimpleandeasytolearn.Thecurly-bracesyntaxofC#willbeinstantlyrecognizabletoanyonefamiliarwithC,C++orJava.Developerswhoknowanyoftheselanguagesaretypically.. .abletobeginworkingproductivelyinC#withinaveryshorttime.C#syntaxsimplifiesmanyofthecomplexitiesofC++whileprovidingpowerfulfeaturessuchasnullablevaluetypes,enumerations,delegates,anonymousmethodsanddirectmemoryaccess,whicharenotfoundinJava.C#alsosupportsgenericmethodsandtypes,whichprovideincreasedtypesafetyandperformance,anditerators,whichenableimplementersofcollectionclassestodefinecustomiterationbehaviorsthataresimpletousebyclientcode.Asanobject-orientedlanguage,C#supportstheconceptsofencapsulation,inheritanceandpolymorphism.Allvariablesandmethods,includingtheMainmethod,theapplication'sentrypoint,areencapsulatedwithinclassdefinitions.Aclassmayinheritdirectlyfromoneparentclass,butitmayimplementanynumberofinterfaces.Methodsthatoverridevirtualmethodsinaparentclassrequiretheoverridekeywordasawaytoavoidaccidentalredefinition.InC#,astructislikealightweightclass;itisastack-allocatedtypethatcanimplementinterfacesbutdoesnotsupportinheritance.Inadditiontothesebasicobject-orientedprinciples,C#facilitatesthedevelopmentofsoftwarecomponentsthroughseveralinnovativelanguageconstructs,including:·Encapsulatedmethodsignaturescalleddelegates,whichenabletype-safeeventnotifications.·Properties,whichserveasaccessorsforprivatemembervariables.·Attributes,whichprovidedeclarativemetadataabouttypesatruntime.·InlineXMLdocumentationcomments.IfyouneedtointeractwithotherWindowssoftwaresuchasCOMobjectsornativeWin32DLLs,youcandothisinC#throughaprocesscalled"Interop."InteropenablesC#programstodojustaboutanythingthatanativeC++applicationcando.C#evensupportspointersandtheconceptof"unsafe"codeforthosecasesinwhichdirectmemoryaccessisabsolutelycritical... .TheC#buildprocessissimplecomparedtoCandC++andmoreflexiblethaninJava.Therearenoseparateheaderfiles,andnorequirementthatmethodsandtypesbedeclaredinaparticularorder.AC#sourcefilemaydefineanynumberofclasses,structs,interfaces,andevents.C#programsrunonthe.NETFramework,anintegralcomponentofWindowsthatincludesavirtualexecutionsystemcalledthecommonlanguageruntime(CLR)andaunifiedsetofclasslibraries.TheCLRisMicrosoft'scommercialimplementationofthecommonlanguageinfrastructure(CLI),aninternationalstandardthatisthebasisforcreatingexecutionanddevelopmentenvironmentsinwhichlanguagesandlibrariesworktogetherseamlessly.SourcecodewritteninC#iscompiledintoanintermediatelanguage(IL)thatconformstotheCLIspecification.TheILcode,alongwithresourcessuchasbitmapsandstrings,isstoredondiskinanexecutablefilecalledanassembly,typicallywithanextensionof.exeor.dll.Anassemblycontainsamanifestthatprovidesinformationontheassembly'stypes,version,culture,andsecurityrequirements.WhentheC#programisexecuted,theassemblyisloadedintotheCLR,whichmighttakevariousactionsbasedontheinformationinthemanifest.Then,ifthesecurityrequirementsaremet,theCLRperformsjustintime(JIT)compilationtoconverttheILcodeintonativemachineinstructions.TheCLRalsoprovidesotherservicesrelatedtoautomaticgarbagecollection,exceptionhandling,andresourcemanagement.CodethatisexecutedbytheCLRissometimesreferredtoas"managedcode,"incontrastto"unmanagedcode"whichiscompiledintonativemachinelanguagethattargetsaspecificsystem.Thefollowingdiagramillustratesthecompile-timeandruntimerelationshipsofC#sourcecodefiles,thebaseclasslibraries,assemblies,andtheCLR... .Languageinteroperabilityisakeyfeatureofthe.NETFramework.BecausetheILcodeproducedbytheC#compilerconformstotheCommonTypeSpecification(CTS),ILcodegeneratedfromC#caninteractwithcodethatwasgeneratedfromthe.NETversionsofVisualBasic,VisualC++,VisualJ#,oranyofmorethan20otherCTS-compliantlanguages.Asingleassemblymaycontainmultiplemoduleswrittenindifferent.NETlanguages,andthetypescanreferenceeachotherjustasiftheywerewritteninthesamelanguage.Inadditiontotheruntimeservices,the.NETFrameworkalsoincludesanextensivelibraryofover4000classesorganizedintonamespacesthatprovideawidevarietyofusefulfunctionalityforeverythingfromfileinputandoutputtostringmanipulationtoXMLparsing,toWindowsFormscontrols.ThetypicalC#applicationusesthe.NETFrameworkclasslibraryextensivelytohandlecommon"plumbing"chores.单纯的课本内容,并不能满足学生的需要,通过补充,达到内容的完善教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。..

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭