首页 > 范文大全 > 正文

剖析基于ASP.NET三层架构的上海发行竞赛软件系统的设计和实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇剖析基于ASP.NET三层架构的上海发行竞赛软件系统的设计和实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文以2011上海出版物发行员竞赛软件系统的开发为实例,通过采用的三层架构模式部署WEB应用系统,最终实现竞赛考核和竞赛管理的整个过程。本文通过图例的方式来详细分析三层架构的设计和应用,并结合本次项目剖析各层之间的关系并分析三层架构中优缺点,最后完成项目部署工作。

关键词:三层架构;;发行员大奖赛

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 19-0000-02

Analyze Based on Three-tier ofShanghai Issue Competition Software system Design and Implementation

Liu Xiang

(Shanghai Press and Publication Education and Training Center,Shanghai200235,China)

Abstract:Members of publications issued by Shanghai race 2011 software system development as an example,by using of three-tier deployment of WEB applications,and ultimately the management of contests and competitions throughout the assessment process.In this paper,a detailed analysis of the legend of the three-tier approach to the design and application,combined with analysis of this project and to analyze the relationship between the layers advantages and disadvantages of three-tier system,and finally complete the project deployment.

Keywords:Three-tier architecture;;Release member Grand Prix

一、项目简介

2011上海出版物发行竞赛软件系统是上海市新闻出版局主办的面向上海新闻出版物发行员大奖赛中实训操作技能考核而研发的软件应用项目。软件系统设计的目的是为参赛考生提供一个上机联网训练和考试平台,通过考核能了解考生在发行领域中计算机实际应用能力。考核要求在规定时间内完成5种不同类型的试题,根据竞赛学员的考核分数及考试时间来最终评定学员分数。系统功能主要包括:学员现场考试管理,试卷管理,阅卷评分管理,考场监控管理,学员信息管理,维护管理等子系统。系统建设采用了微软的的三层架构模式进行应用开发和部署。开发工具采用vs2008,数据库采用SqlServer2000sp4,Web Server采用IIS6.0版本。

二、三层架构的概述

根据项目开发的规范,在项目的设计上我采用了微软的基于的三层架构设计模式。采用这种经典的成熟的模型以及至下而上设计思想进行开发,可以将各个层次的关系梳理的很清晰,并确保开发进度。

三层架构模式基本设计思想是将原来两层B/S架构中客户端和服务器端的中间再引入业务中间层。通过引入中间层,将复杂的商业逻辑从传统的双层结构应用模型中剥离出来,并提供了可伸缩、易于访问、易于管理的方法,实现了便捷、高效、安全、稳定的企业级系统应用。

整个WEB应用三层架构可分成表示层(User Interface Layer)、业务中间层(Business Layer)和数据库层(Database Layer)。

表示层主要负责处理用户的界面设计和界面的规则。如设计登陆界面时,需要有各类元素,如登陆框、登陆规则、按钮方法事件、跳转页面等。这些设计分布在ASPX页面以及css文件中。表示层实际上将界面和业务代码进行分离,并利于开发人员多层次的分工开发。

业务中间层是业务的核心、是连接其他两层的纽带。该层封装了用户对数据库的请求,这一层实际上可分为业务逻辑层和数据访问层。使用业务逻辑层进行相关业务逻辑的处理,如业务规则、数据访问、繁琐的合法性校验等事务。数据访问层主要是处理原始数据的操作,是为业务逻辑层提供数据服务。数据访问层在设计中建议不要出现业务逻辑设计,也就是说要保证“数据访问层”函数功能的原子性,即最小性和不可再分。

数据库层是指采用的数据库管理系统(DBMS),其中主要的对象有表、视图、存储过程、触发器等。

三、实际案例的分析

本节将通过发行员竞赛软件系统来详细介绍三层架构实现方法,并通过代码和图例来说明各层之间的调用关系。

首先,在vs2008中新建项目,选择“ Web应用程序”模板。笔者认为,在设计Web应用系统时,选择此模板比选择新建“Web网站”更能在WEB类项目的设计、Build、调试、项目打包等方面上体现灵活性和便捷性。

新建项目名称定为“fxjswebapp”,文件夹命名为“d:\发行大奖赛项目\”。这样一个空白的项目框架已经初步建好。

然后,还需要建类库文件。目的是为了建立业务中间层的业务逻辑类包文件和数据访问类包文件。笔者将本项目的业务中间层需要的类打包成2个主要的Package。1个定义为BusinessLogicLayer包而另一个则为DataAccessHelper包。

(一)数据库层

本层主要实现对数据库的操作。整个项目的建表工作在此完成。可以将复杂的查询或者数据写入,都封装为存储过程,而将数据写入前后要进行的附加操作用触发器实现。对于表的创建一般应以数据库原理的第三范式规范来创建,允许一定的冗余。

(二)业务中间层

1.数据访问层

主要任务是实现数据操作即获取数据,访问底层数据库的存取。在这个层中笔者建立了2个类database类和safedata类合并1个包文件Data Access Helper包。2个类作用不同,database类负责底层数据存取,safedata负责数据安全转换。将这个层的类打包,可以让程序结构层次分明,并且程序在引用时,可以通过命名空间(Name Space)的方法来调用。

在database类中,封装了一系列方便业务逻辑层访问数据存取的函数和读取Web.config配置文件的数据库连接池。例如要完成一个查询动作并返回查询结果的数据集,只要通过调用方法“GetDataSet(存储过程名,参数集)”,就能返回一个正确的Dataset数据集。类的设计完成后,通过编译将自动形成DataAccessLayer.dll文件。该文件将必须被本项目直接“添加引用”。

2.业务逻辑层

业务逻辑层一般是在数据访问层之上,其作用主要负责从数据访问层获取数据并完成相应的业务操作而不是从数据库直接存取。在业务逻辑层中建立了Business Layer包,并在此包中建立业务类,如books类、students类、exampaper类等。

在books类中,我定义了各类查询图书关键字的方法。如在实际竞赛中有一道试题是要求考生通过书名精确查询的方法在整个库中查到一本图书。我在books类中定义了BookConQueryForTitleDataSet精确查询图书书名的方法,在该类中调用数据访问层database类中的GetDataSet()方法,访问数据库层的存储过程“Proc_BookConQueryForTitle”。最后将结果数据集返回到业务逻辑层,以及表示层。

(三)表示层

根据前文建好的 Web应用程序项目,即可创建表示层的ASPX页面和设计页面的规则。在表示层要做的工作是规划所有的页面布局如页面背景、文字属性、对话框,基本的输入规则判断,编写增删改查各类按钮事件,取得查询数据结果集、页面跳转等功能都需要在表示层完成。

例如在项目中建立登录页面login.aspx。页面布局中需要加入登录对话框和登录按钮。在设计文档login.aspx.vb中,可以编写登录页面访问中间层以及实现页面的跳转的代码。页面实现方法如下。

Imports BusinessLogiclayer.BusinessLogicLayer'调用业务逻辑层

Protected Sub imgBtnLogin_Click(ByVal sender As Object,ByVal e As System.Web.UI.ImageClickEventArgs)Handles imgBtnLogin.Click

Dim stu As New students'使用DAO的方法定义一个学员对象

If stu.CheckStudents(txtcertid.Text.Trim(),txtstno.Text.Trim())Then

'查询该学员是否存在,如果存在保存学员信息,并开始计算统计开考时间……

Response.Redirect("Default.aspx")'跳转到下一个页面

Else’如果不存在

lblMessage.Text=txtstno.Text+",您输入的考生信息有误!"'如果不存在则在页面显示错误信息

End If

End Sub

在项目的设计中,不要忘记使用“添加引用”功能,将此前设计的中间层包文件.dll引用到本项目,并且还需要在.vb文件的首行添加“imports BusinessLogiclayer”调用名空间的方法。这样业务逻辑层就能和表示层进行交互,同时通过上述的方法实现了三层的分离,极大的方便了项目开发时人员管理和后期升级维护工作。

四、系统压力测试和流量测算

本项目因为是现场竞赛考试系统,考生在上机考试时出现页面报错等系统错误是不允许的。因此为了防止这类问题的产生,在设计时一方面要采用成熟的架构,同时需要对系统承受的压力做测试和评估。根据测算系统处理总业务量峰值需要达到每分钟完成至少100笔业务量。网络流量计算时根据公式测算实际每秒钟用户数据量预估为1Mbps,数据量占用网络带宽的大小按照1:8计算(1Byte=8bits),考虑到网络通信协议的开销和其他开销,实际占用带宽按照1.5倍计算,考生考试时数据量的占用的带宽为:1×8×1.5≈12Mbps。在百兆网络带宽中应该能够满足。在考前的上机训练中,所有考生同时上机训练,未对整个系统环境造成较大压力,系统运行呈现平稳状态,较好的达到设计要求。

五、三层架构的优点和不足分析

(一)三层架构优点

1.实现了外观,业务,数据的分离,隔离了系统的变化。

2.层次清晰,易于理解,维护,扩展。

3.各模块可以并行工作。

(二)不足之处

1.据了解效率比不分层的低20%左右。

2.表示层变化隔离不足。

如不能完全实现所有页面的跳转功能;表单数据的验证及封装问题;页面国际化语言的判断和显示划分界限不清晰。

而上述这些问题的提出在微软新提出MVC架构中部分已可以解决。当然三层架构和MVC架构究竟哪个更先进在因特网上讨论的非常多了,在本文中不再讨论。

六、项目总结

本文通过对2011上海出版物发行员竞赛软件系统的三层架构模式设计进行讨论,对每一层都做了详细的分析。如有不当,还请批评指正。开发人员在开发Web应用系统中完全可以使用J2EE或MVC等新的设计思想实现。

本项目在开发过程中得到了上海市新闻出版局和竞赛组委会领导的大力支持,并最终通过项目审核。系统在测试阶段以及全体考生同时上机操练时,表现出良好的稳定性和易操作性,得到了项目组成员的好评。在此也非常感谢项目组的领导和相关成员的大力帮助,共同完成此项目。

参考文献:

[1]BillEvjen,Scott Hanselman,Devin Rader著,姜奇平译 3.5SP1高级编程(第6版)[M].清华大学出版社,2010,1

[2]张跃廷等开发实战宝典[M].清华大学出版社,2010,1