BBS论坛系统技术设计方案_第1页
BBS论坛系统技术设计方案_第2页
BBS论坛系统技术设计方案_第3页
BBS论坛系统技术设计方案_第4页
BBS论坛系统技术设计方案_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE.专业.专注.BBS论坛系统技术设计方案开发背景BBS是在1992年底随着国际互联网的开始流行而迅速发展起来的。互联网的产生使得以前只能在本地访问的BBS可以被全世界随意访问,这对大多数人来说是极具诱惑力的。BBS是一个有多人参加的讨论系统,在BBS上大家可以对一个共同感兴趣的问题进行讨论,自由地发表自己的意见与观点,并且能直接与其他的人进行沟通。按照的性质以及服务对象来分,迄今有以下几种类型:一是校园BBS。校园BBS作为主要的集中地,在BBS领域具有举足轻重的地位。由于校园BBS的繁荣,吸引了很多的社会人士参与。二是专业BBS。一般是由各个著名的大公司组建,人们可以利用其交流自己对商品的看法,更为重要的是可以解决商品使用中的问题。三是商业BBS。它是由ISP建立的BBS站点,这类BBS站点各种信息比较多,容相当丰富。四是小型局域BBS。一般是由个人或小型集体建立,为小围信息交流服务。五是业余BBS。一般由BBS爱好者个人利用一些免费空间办的BBS,目的是为广大网友提供一个在某些专业上的交流场所。六是新闻媒体BBS。是由新闻媒体设立的,为广大网友提供对新闻信息进行评论、发表意见和观点的场所。随着互联网事业的蓬勃发展。BBS,这个具有强大实时交互功能,信息交流的平台,使人们不再像电视观众、电台听众、报纸杂志读者一样只是被动地观看、收听、阅读,而是可以积极而及时地参与讨论,在了解他人观点意见的同时也可以发表自己的看法。BBS论坛系统是为了方便大家的沟通和获取信息而开发的系统。我们利用ASP.NET知识和SQLServer2005开发BBS论坛管理系统。该系统以Internet为平台,前台可使任何人注册、登录、登录在论坛上进行发帖、回帖、浏览帖子等。管理员也可以在后台对帖子、版块、用户等进行相关的管理。一个小型BBS论坛系统的前台功能主要包括浏览搜索帖子、用户登陆注册、发表回复帖子、个人资料管理和帖子管理;后台功能主要包括用户管理、论坛版块管理和帖子管理等。系统目标开发本系统意在吸纳大部分游离在众多论坛的大学生,达到校网等论坛的目标。系统开发的总任务是实现文章的成功发表,留言的发布与回复。从而达到用户之间信息交流的目的。系统主要面向两类用户:用户和系统管理员。用户可以先注册,然后在里发表文章、留言等。系统管理员可以对用户的信息进行增添和删除及修改,对版块进行增加、删除和修改操作;还可以对进行修改与维护。BBS对大学生学习生活的影响1.BBS提供了丰富的网络学习资源论坛是一个经过学习者整理加工过的网络资源汇en集中心,从新闻、学习到娱乐、体育,从文字到视频、音频,BBS汇集了各种形式、容的网络资源。不少BBS都设有专门的NetResources(网络资源)板块;FTP技术和BT技术的发展更是为BBS站资源的更新、共享提供了方便。如今,大部分大学的BBS论坛都有相应的FTP服务器,不少BBS还与网络新兴的BT技术、Blog(博客)技术等连接起来BBS水木清华站就有“水木Blog”的栏目)。2.BBS促进了协作学习基于网络的论坛社区也是各种学习资源组合的场所,为学习者提供了学习环境。作为一个学生参与论坛的网络活动可包括许多种学习的意义,在特定板块,论坛参与者围绕某个话题或者问题,通过发表、回复话题、版面讨论、站信件等方式进行互动讨论、相互探讨,形成了一种以学习者为中心的学习方式。从教育网人气排名前十名的论坛的网友参与的情况来看,在各大学习板块里,基本上每帖子提出的问题都可以得到网友友好的、认真的回复解答,有着浓郁的协作探讨的学习气氛和良好的学习效果。3.BBS提高了学生自主学习能力网络学习的本质是一种自主学习,论坛提供了丰富的网络学习资源,使学习者能自主选择和控制学习地点、学习时间、学习方法和学习容。在论坛里,学生可以自主地围绕学习问题,通过发帖、回复的形式提出讨论,寻求解答帮助,提高了学习的积极性和自主学习的能力。A\关键技术介绍IFrame框架技术框架是在网页设计中经常用到的一种技术,通过在HTML网页文档中使用<frame></frame>标记,就可以将一个页面拆分成多个区域,每个区域称为一个框架,一般情况下每一个框架中都会放置一个网页,这些网页间可以相互独立,也可以有所关联。框架的网页以一种平铺的形式充满了整个页面空间。但在网页设计中,也会经常遇到在一个网页中引用另外一个网页的情况,即在一个网页中开辟一块区域用于放置其他网页,彷佛形成了一种“画中画”的效果。这种功能就是利用嵌入式框架(IFrame)技巧实现的。嵌入其他网页的初始页面称为父框架,嵌入到父框架的页面称为子框架或嵌入框架。这种网页的嵌入技术不仅在很大程度上丰富了网页的布局设计,同时也可以方便地实现多种复杂的网页特效。嵌入式框架(IFrame)是框架的一种标记,在页面设计中经常用到。IFrame标记又叫浮动帧标记,使用IFrame可以将一个文档嵌入在另一个文档中显示,可以随处引用不拘泥网页的布局限制。在当今互联网网络广告横行的时代,IFrame更是无孔不入,将嵌入的文档与整个页面的容相互融合,形成了一个整体。与框架相比,嵌框架Iframe更容易对的导航进行控制,最大的优点在于其灵活性。第3方组件FreeTextBoxFreeTextBox的作用FreeTextBox是一个基于InternetExplorer中MSHTML技术的ASP.NET开源服务器控件。这是一款优秀的自由软件(FreeSoftware),我们可以轻松地将其嵌入到WebForms中实现HTML容的在线编辑,在新闻发布、博客写作、论坛社区等多种Web系统中都会有用途。FreeTextBox的使用方法步骤1:从网上下载FreeTextBox控件,解压。步骤2:在VS2005编辑器中可通过工具>选择工具箱项>.NETFramework组件>浏览并选定FreeTextBox.dll后按确定控件将默认显示在VS2005编辑器工具箱的常规选项卡(可自行将控件拉到标准选项卡中),也可以直接在工具箱的标准选项卡列标头或所属列任何控件上右击>选择项>.NETFramework组件>浏览并选定FreeTextBox.dll后即可直接将控件加入标准选项卡。这样以后只要在常规选项卡或标准选项卡中将FreeTextBox控件直接拖放到项目的设计页面即可完成控件的调用。步骤3:将FreeTextBox目录拷贝到所在项目里。ADO.NET技术ADO.NET的名称起源于ADO(ActiveXDataObjects),这是一个广泛的类组,用于在以往的Microsoft技术中访问数据。之所以使用ADO.NET名称,是因为Microsoft希望表明,这是在.NET编程环境中优先使用的数据访问接口。它提供了平台互用性和可伸缩的数据访问。ADO.NET增强了对非连接编程模式的支持,并支持RICHXML。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisualStudio的解决方案,也可以是任何运行在其它平台上的任何应用程序。ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为DataProviders,并且通常是以与之交互的协议和数据源的类型来命名的。ADO.NET包含的对象:SqlConnection对象和数据库交互,你必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据库上面执行命令。与数据库交互的过程意味着你必须指明想要发生的操作。这是依靠Command对象执行的。你使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据库进行连接。你能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给SqlDataAdapter,它保存了一组能够操作下面描述的一组数据的命令。SqlDataReader对象许多数据操作要求你只是读取一串数据。DataReader对象允许你获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着你只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果你需要操作数据,更好的办法是使用DataSet。DataSet对象DataSet对象是数据在存中的表示形式。它包括多个DataTable对象,而DataTable包含列和行,就象一个普通的数据库中的表。你甚至能够定义表之间的关系来创建主从关系(parent-childrelationships)。DataSet是在特定的场景下使用——帮助管理存中的数据并支持对数据的断开操作的。DataSet是被所有DataProviders使用的对象,因此它并不像DataProvider一样需要特别的前缀。SqlDataAdapter对象某些时候你使用的数据主要是只读的,并且你很少需要将其改变至底层的数据源。同样一些情况要求在存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdapter通过断开模型来帮助你方便的完成对以上情况的处理。当在一单批次的对数据库的读写操作的持续的改变返回至数据库的时候,DataAdapter填充(fill)DataSet对象。DataAdapter包含对连接对象以及当对数据库进行读取或者写入的时候自动的打开或者关闭连接的引用。另外,DataAdapter包含对数据的SELECT,INSERT,UPDATE和DELETE操作的Command对象引用。你将为DataSet中的每一个Table都定义DataAdapter,它将为你照顾所有与数据库的连接。所有你将做的工作是告诉DataAdapter什么时候装载或者写入到数据库。总结:ADO.NET是与数据源交互的.NET技术。有许多的DataProviders,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的DataProvider,你将使用相似的对象与数据源进行交互。SqlConnection对象管理与数据源的连接。SqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的SqlDataAdapter。Transact-SQL技术T-SQL是Microsoft公司在关系型数据库管理系统SQLServer中的SQL-3标准的实现,是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量,运算符,函数,流程控制和注释等语言元素,使得其功能更加强大。T-SQL对SQLServer十分重要,SQLServer中使用图形界面能够完成的所有功能,都可以利用T-SQL来实现。使用T-SQL操作时,与SQLServer通信的所有应用程序都通过向服务器发送T-SQL语句来进行,而与应用程序的界面无关。根据其完成的具体功能,可以将T-SQL语句分为四大类,分别为数据定义语句,数据操作语句,数据控制语句和一些附加的语言元素。数据操作语句SELECT,INSERT,DELETE,UPDATE数据定义语句CREATETABLE,DROPTABLE,ALTERTABLECREATEVIEW,DROPVIEWCREATEINDEX,DROPINDEXCREATEPROCEDURE,ALTERPROCEDURE,DROPPROCEDURECREATETRIGGER,ALTERTRIGGER,DROPTRIGGER数据控制语句CRANT,DENY,REVOKE附加的语言元素BEGINTRANSACTION/COMMIT,ROLLBACK,SETTRANSACTIONDECLAREOPEN,FETCH,CLOSE,EXECUTEJavaScript脚本语言Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司的BrendanEich设计,是一种动态、弱类型、基于原型的语言,置支持类。JavaScript是Sun公司的注册商标。Ecma国际以JavaScript为基础制定了ECMAScript标准。JavaScript也可以用于其他场合,如服务器端编程。完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,字节顺序记号。Netscape公司在最初将其脚本语言命名为LiveScript来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”[2],因此语法上有类似之处,一些名称和命名规也借自Java。但JavaScript的主要设计原则源自Self和Scheme[3].JavaScript与Java名称上的近似,是当时网景为了营销考虑与Sun公司达成协议的结果。为了取得技术优势,微软推出了JScript来迎战JavaScript的脚本语言。为了互用性,Ecma国际(前身为欧洲计算机制造商协会)创建了ECMA-262标准(ECMAScript)。现在两者都属于ECMAScript的实现。尽管JavaScript作为给非程序人员的脚本语言,而非作为给程序人员的编程语言来推广和宣传,但是JavaScript具有非常丰富的特性,目前JavaScript的最新版本为1.9版。ASP.NET技术ASP.NET是用于形成于Web的应用程序的容丰富的编程框架。它是一种创建动态Web应用程序的全新手段,它给开发人员提供了比以往更大的灵活性和更多的功能。通过把通用代码置于控件中,并将表示逻辑和商务逻辑分离开来的崭新方法,ASP.NET使应用程序的开发和维护更加容易。它是Microsoft.NETFramework的组成部分,允许使用Framework支持的任何语言创建代码。像JSP、PHP和ASP一样,ASP.NET也是一种服务器端技术,它可以制作动态WEB页的容。VisualStudio.NET不是ASP.NET必要的组成部分,许多开发人员没有它照样可以开发。不过,一旦安装了.NETFrameworkSDK,用户就可以在任何环境下开发ASP.NET应用程序。ASP.NET是一种用于创建容丰富的动态、WEB应用程序和XMLWEB服务的新编程模型。ASP.NET使用编译的、事件驱动编程模型从而提高运行速度和分离应用程序逻辑和用户界面。用ASP.NET可以很容易的开发基于三层架构的B/S应用程序。与以往的编程模型相比,这种新编程模型提供了基于组件的架构和开发例。需求分析需求概述在需求分析阶段,我们采用UML建模,目的是捕捉系统的所有功能需求并加以描述,同时建立模型,分析并提取所开发系统的各种可以模块化的功能以及描述它们的合作概貌。BBS系统的基本需求如下:(1)它是一个计算机网络软件系统,可通过WEB浏览器进行访问;(2)系统支持三种用户(游客、注册的用户、管理员),每种用户可使用的功能都是不同的;(3)游客只可以查看帖子;(4)游客可以通过注册的方法变为注册用户,注册信息包括用户名、密码及其它附属信息。其中用户名是唯一的,不可与其它注册用户的用户名重复;(5)游客在登录(输入用户名与密码)之后,其身份变为注册用户;(6)注册用户可以查看所有旧帖子,并发新帖子;(7)注册用户可以回复他人或自己发表的帖子;(8)注册用户可以管理自己的附属信息并修改它们;(9)管理员是管理BBS的用户,且是一种特殊的注册用户;(10)管理员可以管理注册用户,如查看、修改、删除注册用户信息;(11)管理员可以管理BBS的帖子,如删除不合法的帖子等。系统用例图在本系统中,通过分析,可以确认BBS中有三种角色:管理员,注册用户,游客。在此基础上,为每个角色定义他们所能执行的系统功能(用例,即每个角色的功能需求)。游客用例图如图3.1所示。图3.1游客用例图游客角色指未执行登录过程的系统进入者。游客可以查看帖子,而不能发新帖子与回复帖子。游客在登录(输入用户名与密码)后转为注册用户。游客在注册后自动执行登录过程,即自动转为注册用户。注册用户用例图如图3.2所示。图3.2注册用户用例图注册用户指已经登录过的用户,他们不仅可以查看帖子,还可以发新帖子、回复帖子及管理个人信息。注册用户在执行用户退出过程后变为游客。管理员用例图如图3.3所示。图3.3管理员用例图管理员可视为一种特殊的注册用户,它不仅拥有注册用户的全部功能(上图中略去这部分功能),还拥有两个其它的功能:1,帖子管理,2,用户管理(用户指注册用户、管理员)。系统关键领域类图分析阶段的另一项工作是特定领域分析,以列出系统中的特定领域类。本系统中,通过系统用例分析可以发现,本系统有以下关键的领域类:用户、帖子。为了方便管理帖子,可以将帖子分为发布的帖子与回复的帖子。不同用户对于帖子的权限不同。用户类可以分为:已注册的用户信息、当前注册的用户。各大领域类的关键信息如下:图3.4用户信息表图图3.5用户信息表图发布帖子领域类中的发帖人编号即用户信息领域类中的用户编号。回复的帖子领域类中的回帖人编号即用户信息领域类中的用户编号。回复的帖子领域类中的帖子编号即发布帖子领域类中的帖子编号。系统概述系统介绍“BBS论坛管理系统”是通用性很强的论坛系统,集成了浏览帖子,发表帖子,回复帖子,删除帖子,版块管理,用户注册,用户头像管理等多种实用的功能。本系统是运用微软可视化编程工具之一MicrosoftVisualStudio2005开发的,界面美观大方,系统运行稳定。本系统以SQLServer2005为数据库。主要功能按照编程流程,把BBS论坛的模块按照实现功能来划分,包括:(1)论坛注册模块:用户的基本信息的填写。(2)论坛登录模块:论坛使用者的一定限制。(3)论坛版块选择模块:论坛多元化,便于对帖子的管理。(4)帖子标题显示模块:显示某一论坛版块的帖子。(5)帖子回复模块:对帖子进行回复。(6)帖子发表模块:发表新的帖子。(7)论坛管理模块:用户管理,版主管理,论坛版块管理,论坛帖子管理,头像管理。(8)论坛主页模块:对论坛的全局显示。(9)数据库设计模块:论坛所需要的数据。主要模块介绍主页面主页面是论坛的门户,子页面的调用要通过主页面实现。另外,主页面还要显示论坛最新信息、信息、广告等信息。本系统是个综合论坛,所以在主页面中要对各类信息按类型进行分类。除此之外,论坛最新信息要实时响应。其运行结果如图4.1所示。图4.1主页面运行结果论坛注册模块一个论坛需要对其中的用户进行管理,因此,一般只有授权用户才能够享有BBS论坛的一些基本功能,而对于一个初次登录论坛的用户,只有通过注册才能够得到基本授权。原先的论坛在发帖时,需要填写自己的笔名。这样对于总是重复发帖的人,总是要填写笔名,比较麻烦。因此,论坛扩展了用户注册登录功能,参与论坛的人注册了自己的笔名和个人信息,拥有了论坛中的身份,发言时就不需要重复写个人信息了。用户在注册过程中,一般需要确认论坛的基本准则和行为规,再填写基本的用户信息,其中最重要的自然是用户名和密码,这是一个用户在该论坛的身份象征。论坛注册模块运行结果如图4.2所示。图4.2论坛注册模块运行结果论坛登录模块想要在论坛中进行相应的操作,不但需要用户有在这个论坛上相应的权限,还需要能让论坛知道这一点,这是就是登录模块。用户注册时提供的用户名和密码,就像通行证一样,获得了论坛的认可后,才能开始在论坛之中进行操作。论坛登录界面运行结果如图4.3所示。图4.3论坛登录界面运行结果论坛版块选择模块在论坛中,用户所发表的主题类型不同,如果只在一个区域显示,对用户的查阅,和管理员的维护带来很多的不便。为此,我们把论坛分为不同的版块,以显示不同类型的帖子。这样,用户在发表和查阅帖子时,可根据帖子类型到相应的论坛版块进行集中性的发表和查阅。管理员在维护论坛时也可以节省很多不必要的时间开销。论坛版块运行结果如图4.4所示(音乐空间版块)。图4.4论坛区模块运行结果帖子发表模块这个模块的主要功能就是提供给用户一个发表自己的帖子的功能。用户在登录之后,通过填写相应的容,如帖子标题、帖子容等,就能在论坛中的标题列表中找到自己的帖子。帖子发布模块运行结果如图所示4.5所示。图4.5帖子发表运行结果系统分析BBS论坛管理系统的技术可行性分析BBS论坛管理系统就是提供给注册用户一个平台,会员用户可以通过Internet接入,登录本系统,在这个平台上发表帖子、阅读帖子、回复帖子等等。此类系统通常有以下四种类型的操作用户:游客用户、普通用户、版主、管理员。每类用户有其不同的操作集,系统通常提供一个统一的登录页面,此页面应能自动识别不同级别的用户,并提供不同的操作界面。与之相应,此类系统通常应具有以下功能:用户注册、用户登录、发表帖子、阅读帖子、回复帖子、个人资料维护、版块管理、版主管理、用户管理等等,所有操作都可以由用户在客户端浏览器中完成,而服务器端程序会按用户的要求来完成对系统数据的操作,并将结果传给Web服务器,再由Web服务器处理成HTML文件后发送到客户端浏览器。这就是所谓的B/S结构应用系统,B/S结构即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。早期的软件系统多以此作为首选设计标准。B/S结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓N-Tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。将应用程序分成好几个离散逻辑组件,就是多层式结构(N-Tier)应用程序。最常见的选择是分成三个部分:表示层、事务逻辑层和数据层(3-Tier),不过也有其它的组合。多层式结构应用程序,在一开始是解决某些与传统客户端/服务器(主从式)应用程序相关的问题,但是随着Web的出现,此结构已经成为主导新程序之开发的结构。下面就是3-Tier结构各层功能以及经常采用的技术作个简介:表示层主要运行于客户端浏览器,采用Script(脚本)语言编写。HTML、JavaScript、VBScript是此类应用系统中展示层最常用的脚本编制语言,结合CCS以及ActiveX技术,能设计出交互相当灵活功能又相当强大的客户端网页。事务逻辑层设计通常有三个选择:ASP.NET网页、COM或COM+组件、DBMS中所执行的预存程序。将程序代码的一部分,建立成执行于数据库管理系统(DBMS)中的预存程序,使数据与程序代码储存在相同的位置,有助于最佳化执行效率,但是,预存程序都依赖于特定的数据库系统,在编写和侦错方面都相当复杂,只适宜于大型的商业应用系统。以COM对象的方式,编写中间层(MiddleTier)事务逻辑,可以使用全功能的语言,来产生经过编译的执行程序,执行效率也相当高,此外,在COM对象中包装事务逻辑,还可以清楚地将此程序代码与网页含的展示程序代码分隔,这样可以使应用程序更易于维护,但是,COM对象的部署也有一定的麻烦,新编写的组件对象,只有在服务器重新启动后才能被应用程序调用。用ASP.NET网页设计事务逻辑相对来说比较简单,但是,ASP.NET网页采用脚本语言来编写事务逻辑,比如VBScript,程序代码只有在执行时才被翻译,这样会降低执行效能,此外,ASP.NET网页中的程序代码也是难以维护的,因为事务逻辑程序代码与建立使用者接口的展示程序代码彼此混杂在一起。数据层较为灵活,视系统规模可选择Sybase、Oracle、MySQL、SQLserver或者MSAccess。综上所述,结合本系统实际需要,本系统采用B/S结构,使用微软公司的技术解决方案。开发环境采用微软的VisualStudio2005。采用3-Tier软件结构:表示层采用HTML、JavaScript或VBScript结合CSS、ActiveX技术来编写;事务逻辑层,考虑到本系统为通用BBS系统,系统应该具备较大的可伸缩性,应该能适应最基本应用最广泛的WEB平台,特别是个人用户想在一些免费主页空间搭建自已的论坛,而这类免费主页空间通常只支持ASP.NET来处理服务器端数据或数据库,另外,通用系统应该具备较大的可扩展性。因此,本系统事务逻辑层设计采用ASP.NET网页;至于数据层,本系统采用最基本的SQLServer2005数据库系统。本系统的开发环境和开发工具为:WindowsXP,VisualStudio2005,SQLServer2005。系统结构根据论坛系统的情况和要求,设计系统结构如图5.1所示。图5.1系统结构图系统开发环境系统开发平台:MicrosoftVisualStudio2005数据库管理系统软件:SQLServer2005运行平台:WindowsXP系统设计设计阶段的任务是通过综合考虑各个功能间关联,以扩展和细化分析阶段的模型。设计的目的是指明一种易转化成代码的工作方案,是对分析工作的细化,即进一步细化分析阶段所得出的系统用例与关键领域类。本阶段建模的目的是将分析阶段的模型扩展和转化为可行的技术实现方案,本系统中将系统用例细化为需求活动图、为关键领域类扩展为系统数据模型,并提供接口函数。系统总体设计系统总体分为三个部分:第一部分是客户端(即浏览器)部分;第二部分是WEB服务器部分(包括HTML页面和.NET架构部分);第三部分是数据库服务器端部分;用户通过浏览器操作将页面传给WEB服务器,在WEB服务器中,.NET是一种先进的建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序,.NET提供许多比现在的Web开发模式强大的优势。通常ASP.NET直接建立于Web服务器中,并且是作为Web服务器的一个服务运行,支持多用户,多线程。它拥有强有力的会话管理机制,可以实现各请求之间的信息共享,提高系统运行效率。数据库服务器端将处理的结果以用户需要的数据格式返回给中间层Web服务器,Web服务器将操作结果通过HTML页面的形式显示给用户,系统结构流程如图5.1所示。图6.1基于B/S的系统结构流程本系统采用的是三层的B/S结构模式开发,ASP.NET结构也是一个三层的系统:包括UI层、业务逻辑层和数据层。其中:UI层负责与用户交互,接收用户的输入并将服务器端传来的数据呈现给客户。业务逻辑层负责接收浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web表单、XMLWeb服务和组件服务组成。其中Web表单是ASP.NET应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户请求服务的基础。数据层是通过ADO.NET操纵数据为事务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。数据库设计数据库需求分析根据论坛所需要实现的功能,对其数据库的需求进行分析,得到以下结论:要存储的容包括用户信息,帖子信息、回复信息、论坛版块信息。一个用户可以发表多个帖子。一个用户可以回复多个帖子。一个帖子或者一个回复都只对应一个用户。一个帖子可以对应多个回复。经过以上分析,设计如下数据库:用户信息:包括用户名、密码等一系列确认用户身份的信息。帖子信息:包括该论坛中所有帖子的标题、容、作者、发表时间等,并且要能把每一个帖子与相应的论坛版块相应的对应起来。回帖信息:包括该论坛中所有的回复信息,包括回复容、作者、回复时间等,并且要能把每一条回复信息与其回复的帖子信息相应对应起来。论坛版块信息:包括该论坛中所有版块的标题、说明、帖子数、回复数、版主等一系列信息。在明确了数据库信息之后,下面开始构建数据表。数据表的结构在程序开发过程中,设计数据库的表结构是非常重要的一个环节。一个设计良好的数据库结构,可以提高效率,方便维护,并且为以后进行功能的扩展留有余地。这就好比高楼大厦一样,有稳固的基础,才能有优秀的成果。下面设计论坛的数据库。通过数据表的关系、详细字段结构。以及相关的数据库扩展设计由浅入深讲解,并对主要的数据库表结构及数据库关系图进行详细的介绍。本系统采用SQLServer2005数据库系统,在该系统中新建一个数据库,将其命名为db_BBS。本系统中共用到7个数据表。在数据库表设计过程中,可以把握几条原则,数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体可以再划分,实体的划分原则是最好能够比当前系统开发的实体颗粒度要小;数据表的信息结构一定要适合,表的字段数量一定不要过多;扩展信息和动态变化的信息一定要分开在不同的表里;对于出现多对多这样的表关系系统,尽量不要出现等。根据上面的数据库需求分析,BBS论坛数据库中各个表的设计结果如下。tb_User(用户信息表)需要包括的字段如图6.2所示。图6.2tb_User表(2)tb_Card(帖子信息表)用于保存各类帖子的详细信息,包括的字段如图6.3所示。图6.3tb_Card表(3)tb_Revert(回帖信息表)用于保存对帖子的回复信息,包括的字段如图6.4所示。图6.4tb_Revert表(4)tb_Module(版块信息表)用于保存该论坛所包含的版块信息,包括字段如图6.5所示。图6.5tb_Module表数据表之间关系图设计数据库表间的关系主要是考虑论坛中各个对象的相互关系,帖子属于版块,回复帖子从属于主题帖,帖子的作者属于用户,因此版块、主题帖、回复帖是一层层的从属依赖关系,帖子的作者必须是论坛的用户,帖子不能脱离版块、用户而单独存在。最后得到的数据表之间关系图如图6.6所示。图6.7数据表关系图数据库操作类设计数据库操作类主要实现的功能有:打开数据库连接、关闭数据库连接、释放数据库连接资源、传入参数并且转换为SqlParameter类型、执行参数命令文本(无返回值)、执行参数命令文本(有返回值)、将命令文本添加到SqlDataAdapter和将命令文本添加到SqlCommand。在命名空间区域引用usingSystem.Data.SqlClient命名空间。为了精确的控制释放未托管资源必须实现DataBase类的System.IDisposable接口,IDisposable接口声明了一个方法Dispose,该方法不带参数,返回Void。建立数据库的连接主要通过SqlConnection类实现,并初始化数据库连接字符串,然后通过State属性来判断连接状态,如果数据库连接状态为关,则打开数据库连接。关闭数据库连接主要通过SqlConnection对象的Close方法实现。因为DataBase类使用System.IDisposable接口,IDisposable接口声明了一个方法IDisposable,所以在此应该完善IDisposable接口的IDisposable方法,用来释放数据库连接资源。本系统向数据库中读取数据是以参数形式实现的。MakeInParam方法用于传入参数,MakeParam方法用于转换参数。RunProc方法为可重载方法,功能分别为执行带参数SqlParameter的命令文本,RunProc(stringprocName,SqlParameter[]params)方法主要用于执行添加、修改和删除;RunProc(stringprocName)方法用来直接执行SQL语句,如数据库备份与数据库恢复。RunProcReturn方法为可重载方法,返回值为DataSet类型。功能分别为执行带参数SqlParameter的命令文本。RunProcReturn(stringprocName,SqlParameter[]params,stringtbName)方法主要用于执行带参数SqlParameter的查询命令文本;RunProcReturn(stringprocName,stringtbName)用于直接执行查询SQL语句。CreateDataAdapter方法将带参数SqlParameter的命令文本添加到SqlAdapter中,并执行命令文本。CreateCommond方法将带参数SqlParameter的命令文本添加到CreateCommond中,并执行命令文本。论坛注册设计论坛注册的流程是这样的,为了能登录论坛,一个用户必须在该论坛上有合法身份,当一个用户没有这个身份时,必须进入注册页面进行登录。当进入注册页面时,用户开始填写资料并单击“注册”按钮,首先检查输入完整性,即该填的信息都填完了并且正确填写,如果信息不完整或有错误,则会做出相应的提示,如果完整性检验通过,则会提示注册成功并进入登录页面。具体流程如图6.8所示。图6.8论坛注册流程图论坛登录设计用户使用论坛时,需要3种角色:游客(即没有注册的用户)、已经注册的用户和后台管理员。管理员用户:管理员用户可以对论坛的注册用户进行管理,可以直接添加用户,赋予相关权限,也可以修改已注册用户的权限,对于违规的用户可以删除;另外,管理员还可以对论坛模块和论坛帖子进行添加、修改和删除等权利。普通用户:这里的普通用户可以分为游客(即没有注册的用户)和已经注册的用户。没有注册的用户在进入论坛之后,只能浏览模块、主题贴,而已经注册的用户在登录进入论坛后,还可以对各类帖子发表自己的评论、发表帖子并加以编辑等。具体流程图如图6.9所示。图6.9论坛登录流程图帖子标题显示设计在用户登录后,会进入论坛版块列表,选择论坛版块后,会进入相应的论坛版块帖子列表,同时在帖子列表中会显示一走些有关帖子的基本信息,包括题目、作者、时间、回复数。在帖子标题显示模块中,如果单击帖子标题,则进入帖子浏览界面;如果单击右上负的“发表帖子”,则进入发表帖子模块。新帖子发表模块设计进入新帖子发表页面后,填写发表帖子的名称、所属版块和容,单击“提交”按钮。首先检查输入完整性,如果输入不完整,则提示用户填写相应项,如果通过完整性检验,则提示发表成功。系统实现发表帖子的实现实现的关键技术主要技术的应用为:FreeTextBox组件的使用和使用Image控件显示头像。功能实现发表帖子的页面(Deliver.aspx)实现了在指定版块中发表帖子的功能,该页面运行结果如图7.1所示。图7.1发表帖子页面主要相关代码点击“提交”按钮触发其Click事件,在该事件中实现发表帖子功能,代码如下。protectedvoidbtnSubmit_Click(objectsender,EventArgse){stringstrName="";stringstrPop="";if(txtCName.Text==string.Empty){Response.Write("<scriptlanguage=javascript>alert('帖子名称不能为空!')</script>");return;}if(Session["Name"]==null){strName="匿名";strPop="游客";}else{strName=Session["Name"].ToString();strPop=Session["Pop"].ToString();}cardmanage.CardID=cardmanage.GetCID();cardmanage.CardName=txtCName.Text;modulemanage.ModuleName=ddlMName.SelectedValue;cardmanage.ModuleID=modulemanage.FindModuleByName(modulemanage,"tb_Module").Tables[0].Rows[0][0].ToString();cardmanage.CardContent=FreeTextBox1.Text;cardmanage.CardTime=DateTime.Now;cardmanage.CardPeople=strName;cardmanage.Pop=strPop;cardmanage.AddCard(cardmanage);Response.Write("<scriptlanguage=javascript>alert('帖子发表成功!')</script>");txtCName.Text=FreeTextBox1.Text=string.Empty;}浏览帖子的实现实现的关键技术实现的关键技术:DataBinder.Eval方法绑定数据和DataList控件分页。功能实现浏览帖子页面(CardInfo.aspx)实现了显示指定帖子及其回复信息的功能,该页面运行结果如图7.2所示。图7.2浏览帖子页面主要相关代码为了实现帖子显示及其回复信息的功能,本系统自定义了以下4个方法,分别为:cardBind、dataBind、pageCount、getPhoto方法。下面例举出其中那一个。cardBind自定义方法用于显示帖子信息,并根据发帖人显示其头像,代码如下。publicvoidcardBind(stringstr){try{cardmanage.CardID=str;Label1.Text=Convert.ToDateTime(cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][4].ToString()).ToLongDateString();Label2.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][5].ToString();Label4.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][1].ToString();Label8.Text=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][3].ToString();stringstrPop=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][6].ToString().Trim();stringstrPhoto="";if(strPop=="游客"){strPhoto="../Images/Visiter.jpg";}if(strPop=="用户"){usermanage.UserName=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][5].ToString();strPhoto=usermanage.FindUserByName(usermanage,"tb_User").Tables[0].Rows[0][8].ToString();}if(strPop=="版主"){hostmanage.HostName=cardmanage.FindCardByID(cardmanage,"tb_Card").Tables[0].Rows[0][5].ToString();strPhoto=hostmanage.FindHostByName(hostmanage,"tb_Host").Tables[0].Rows[0][9].ToString();}if(strPop=="管理员"){strPhoto="../Images/Admin.jpg";}Image2.ImageUrl=strPhoto;}catch{}}系统测试系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案.。它的的任务是近可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样?”。测试方案及测试用例测试方法介绍软件测试有两种方法:白盒法和黑盒法如果知道了产品应该具有的功能,可以通过测试来检测是否每个功能都能实现,这种测试方法叫作黑盒测试法;如果知道产品的部工作过程,可以通过测试来检验是否按照规格说明说的规定正常运行,这个方法叫白盒测试法。对于软件而言,黑盒测试法是把程序看成一个黑盒子,完全不考虑程序的部结构和处理过程。也就是说黑盒测试是在程序的接口进行测试,它只检查程序的功能是否按照规格说明说的说明正常运行,程序是否能恰当的接受输入数据,产生正确的输出信息,并且保持外部信息的完整性。黑盒测试又称为功能测试。与黑盒测试法相反,白盒测试法是把程序看成是装在一个透明的白盒子里。也就是完全了解程序的结构和处理过程,这种方法按照程序部的逻辑测试程序,检验程序中的每条通路是否能按预定的要求正确工作,白盒测试又称为结构测试。粗看起来,不论采用上述那种测试方法,只要对每一种可能的情况都进行测试,就可以得到完全正确的程序。包含所有可能情况的测试成为穷尽测试,对于实际程序而言,穷尽测试通常是不可能做到的。使用黑盒测试法为了做到穷尽测试,至少对所有输入数据的各种可能值的排列组合都进行测试,但是,由此得到的应该测试的情况,数字往往达到实际上根本无法测试的程度。实践表明,用无效的输入数据比有效的输入数据进行测试往往能发现更多的错误。使用白盒测试法和使用黑盒测试法一样也不可能做到穷尽测试。因为不能做到穷尽测试,所以软件测试不可能发现程序中的所有错误。也就是所通过测试并不能证明程序是完全正确的。但是,我们的目的是要通过测试保证软件爱你的可靠性,因此,必须仔细设计测试方案,力争用尽可能少的测试发现尽可能多的错误。单元测试测试一:在用户登录时,用户填写错误的登录名或密码或验证码,系统是否给出提示信息。具体操作:点击进入登录界面,填写错误的登录名或密码或验证码。结果:系统弹出文字提示框,提示登录名或密码错误,用户登录失败。结论:要求用户以正确的登录名、密码和验证码进行登录。测试二:在用户注册时,用已存在的用户名进行注册,系统是否提示该用户已存在。具体操作:用同一个用户名连续注册两次。结果:系统弹出文字提示框,提示该用户已存在,用户注册失败。结论:用户名不可以重复。测试三:在用户以游客(未登录BBS论坛管理系统)方式进入BBS论坛管理系统的某个版块并回复某个帖子时,系统是否会提示用户没有这个权限。具体操作:用户不进行登录直接进入某个版块,然后对某个帖子进行回复。结果:系统提示用户没有这个权限,回复帖子失败。结论:要求用户必须先登录,才可以对某个帖子进行回复。测试四:以正确的普通用户的登录名和密码进行版主登录,是否能够成功登录。具体操作:注册一个普通用户,以这个登录名和密码进行版主登录。结果:系统弹出文字提示框,提示版主用户名或密码错误,版主登录失败。结论:用户不可以跨越自己的权限进行登录。测试总结本系统的各个功能现已基本实现,代码基本无误。但,通过对本系统的测试发现,该系统仍然存在一些细节问题。例如,有些地方的设计还是不够人性化。这些问题主要还是由于对系统开发缺乏经验,以后会继续努力。结论本文主要介绍了网上在线论坛的设计过程。在设计过程中应用了IFrame框架技术,并引入了第三方组件FreeTextBox,该组件是一个在线文本编辑器,可以对文字以及图片容进行处理,并将数据保存到数据库中。另外,本文着重介绍了系统数据库的设计和公用模块的编写,其中公用模块的编写包含数据库连接模块编写,即在应用程序配置文件Web.Config文件中添加数据库连接信息等;在论坛典型模块设计中应用了3个主要模块,即浏览帖子、回复帖子和发表帖子3大模块。本系统是一个具有实际意义的论坛系统。本系统大部分是应用ASP.NET2.0技术完成的,本文主要讨论了BBS论坛管理系统的设计与开发,把面向对象思想恰当结合进.NET技术,实现了OOA和OOD。本系统采用ASP.NET+ADO.NET技术,协同采用SQLServer2005技术,在设计和实现过程中充分利用B/S三层架构的优势来优化系统结构,运行速度快,减少了无用的网络传输,保证了系统的稳定运行。实际应用表明,本系统使用方便,执行效率较高。参考文献[1]萨师煊,王珊.数据库系统概论.第三版.:高等教育,2007:38-[2]施伯乐,丁宝康.数据库系统教程.第二版.:高等教育,2006:120-145[3]海藩.软件工程导论.第三版.:清华大学,2009:39-59[4]跃廷,房大伟,苏宇.ASP.NET2.0网络编程自学手册.:人民邮电,2008:350-400[5]龚赤兵.ASP.NET2.0开发实例教程.:人民邮电,2006:200-220[6]KarliWatson等.C#入门经典.第3版.:清华大学,2006:-146[7]耀东.ASP.NET2.0编程指南.:人民邮电,2007:58-68[8]刚.CSS标准网页布局开发指南.:清华大学,2007:102-113[9]网冠科技.ASP.NET2.0+SQLServer2005网络应用编程二合一百例.:机械工业,2007:123-[10]MichaelOtey,DenielleOtey.MicrosoftSQLServer2005开发指南.:清华大学,2007:58-76[11]鑫.CSS代码效果对比学习.:中国青年,2007:45-60[12]JasonBeaird等.完美网页设计艺术.:人民邮电,2008:32-42[13]雷波,闫琳,邱启红.PhotoshopCS3中文版标准教程.:科学,2008:66-76[14]庞娅娟,房大伟,吕双.ASP.NET从入门到精通.:清华大学,2010.7:123-130[15]跃廷,苏宇,贯伟.ASP.NET程序开发例宝典:C#.:人民邮电,2009:56-66[16]德莱尼,金成姬,绍英.MicrosoftSQLServer2005技术幕:查询、调整和优化.:电子工业,2009:112-130[17]郝安林,许勇,康会光.SQLServer2005基础教程与实验指导.:清华大学,2008:78-88[18]王欣,徐腾飞,唐连章.SQLServer2005数据挖掘实例分析.:中国水利水电,2008:35-48致谢经过一阶段时间的不懈努力,我的毕业设计终于结束了。毕业设计的结束也标志着我大学生活的完结。经过了大学的洗礼,我发现我自己成熟了许多,长大了许多。这不仅表现在学习上的进步,还表现在思想上的改变。总之,对我来说是受益良多。大学时光真的是我人生最宝贵的财富。这一切的一切和大家对我的支持与帮助是分不开的。特别是老师对我的帮助,实在是太多了。比如说这次毕业设计,老师对我的帮助真的是非常非常多。在这次毕业设计的过程中,从选题到开题报告,从写作提纲,到一遍又一遍地指出论文中的具体问题,严格把关,循循善诱,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。最后,我最应该感谢的应该是我的母校,工业大学,感谢母校给我提供了这么好的学习生活环境,让我在这里快乐的成长、学习,真的很感谢。谢谢。附录外文资料CHAPTER8ErrorHandling,Logging,andTracingNosoftwarecanrunfreefromerror,andASP.NETapplicationsarenoexception.Soonerorlateryourcodewillbeinterruptedbyaprogrammingmistake,invaliddata,unexpectedcircumstances,orevenhardwarefailure.Noviceprogrammersspendsleeplessnightsworryingabouterrors.Professionaldevelopersrecognizethatbugsareaninherentpartofsoftwareapplicationsandcodedefensively,testingassumptions,loggingproblems,andwritingerrorhandlingcodetodealwiththeunexpected.Inthischapter,you’lllearntheerror-handlinganddebuggingpracticesthatyoucanusetodefendyourASP.NETapplicationsagainstcommonerrors,trackuserproblems,andsolvemysteriousissues.You’lllearnhowtousestructuredexceptionhandling,howtouselogstokeeparecordofunrecoverableerrors,andhowtosetupwebpageswithcustomerrormessagesforcommonHTTPerrors.You’llalsolearnhowtousepagetracingtoseediagnosticinformationaboutASP.NETpages.CommonErrorsErrorscanoccurinavarietyofsituations.Someofthemostcommoncausesoferrorsincludeattemptstodividebyzero(usuallycausedbyinvalidinputormissinginformation)andattemptstoconnecttoalimitedresourcesuchasafileoradatabase(whichcanfailifthefiledoesn’texist,thedatabaseconnectiontimesout,orthecodehasinsufficientsecuritycredentials).Oneinfamoustypeoferroristhenullreferenceexception,whichusuallyoccurswhenaprogramattemptstouseanuninitializedobject.Asa.NETprogrammer,you’llquicklylearntorecognizeandresolvethiscommonbutannoyingmistake.Thefollowingcodeexampleshowstheprobleminaction,withtwoSqlConnectionobjectsthatrepresentdatabaseconnections://DefineavariablenamedconOneandcreatetheobject.privateSqlConnectionconOne=newSqlConnection();//DefineavariablenamedconTwo,butdon'tcreatetheobject.privateSqlConnectionconTwo;publicvoidcmdDoSomething_Click(objectsender,EventArgse){//Thisworks,becausetheobjecthasbeencreated//withthenewkeyword.conOne.ConnectionString="...";...//Thefollowingstatementwillfailandgeneratea//nullreferenceexception.//Youcannotmodifyaproperty(oruseamethod)ofan//objectthatdoesn'texist!conTwo.ConnectionString="...";...}Whenanerroroccursinyourcode,.NETcheckstoseewhetheranyerrorhandlersappearinthecurrentscope.Iftheerroroccursinsideamethod,.NETsearchesforlocalerrorhandlersandthenchecksforanyactiveerrorhandlersinthecallingcode.Ifnoerrorhandlersarefound,thepageprocessingisabortedandanerrorpageisdisplayedinthebrowser.Dependingonwhethertherequestisfromthelocalcomputeroraremoteclient,theerrorpagemayshowadetaileddescription(asshowninFigure8-1)oragenericmessage.You’llexplorethistopicalittlelaterinthe“ErrorPages”sectionofthischapter.Evenifanerroristheresultofinvalidinputorthefailureofathird-partycomponent,anerrorpagecanshattertheprofessionalappearanceofanyapplication.Theapplicationusersendupwithafeelingthattheapplicationisunstable,insecure,orofpoorquality—andthey’reatleastpartiallycorrect.IfanASP.NETapplicationiscarefullydesignedandconstructed,anerrorpagewillalmostneverappear.Errorsmaystilloccurbecauseofunforeseencircumstances,buttheywillbecaughtinthecodeandidentified.Iftheerrorisacriticalonethattheapplicationcannotsolveonitsown,itwillreportamoreuseful(anduser-friendly)pageofinformationthatmightincludealinktoasupportoraphonenumberwherethecustomercanreceiveadditionalassistance.You’lllookatthosetechniquesinthischapter.ExceptionHandlingMost.NETlanguagessupportstructuredexceptionhandling.Essentially,whenanerroroccursinyourapplication,the.NETFrameworkcreatesanexceptionobjectthatrepresentstheproblem.Youcancatchthisobjectusinganexceptionhandler.Ifyoufailtouseanexceptionhandler,yourcodewillbeaborted,andtheuserwillseeanerrorpage.Structuredexceptionhandlingprovidesseveralkeyfeatures:Exceptionsareobject-based:Eachexceptionprovidesasignificantamountofdiagnosticinformationwrappedintoaneatobject,insteadofasimplemessageandanerrorcode.TheseexceptionobjectsalsosupportanInnerExceptionpropertythatallowsyoutowrapagenericerroroverthemorespecificerrorthatcausedit.Youcanevencreateandthrowyourownexceptionobjects.Exceptionsarecaughtbasedontheirtype:Thisallowsyoutostreamlineerror-handlingcodewithoutneedingtosiftthroughobscureerrorcodes.Exceptionhandlersuseamodernblockstructure:Thismakesiteasytoactivateanddeactivatedifferenterrorhandlersfordifferentsectionsofcodeandhandletheirerrorsindividually.Exceptionhandlersaremultilayered:Youcaneasilylayerexceptionhandlersontopofotherexceptionhandlers,someofwhichmaycheckonlyforaspecializedsetoferrors.Exceptionsareagenericpartofthe.NETFramework:Thismeansthey’recompletelycrosslanguagecompatible.Thus,a.NETcomponentwritteninC#canthrowanexceptionthatyoucancatchinawebpagewritteninVB.NoteExceptionhandlersareakeyprogrammingtechnique.Theyallowyoutoreacttoproblemsthatoccuratruntimeduetofactorsoutsideyourcontrol.However,youobviouslyshouldn’tuseexceptionhandlerstohidethebugsthatmightcropupinyourcode!Instead,youneedtotrackdowntheseprogrammermistakesatdevelo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论