李 强
(太原大学外语师范学院教务处,太原 030012)
随着教育信息化、电子化的不断加强,网上选课已经越来越多地被大多数高校所接受和使用,传统的选课方法也随之改变。有了网上选课系统,学生可以在规定时间内的任何地点,选修自己喜欢的任意课程。这样大大提高了教务管理人员的工作效率,学生选课也更加便捷和公平。
目前的数据库系统按照结构层次可分为两层架构和多层架构。两层架构的数据库应用系统包括BS模式和CS模式两种。它的特点是数据与应用端分离,数据存放在数据库服务器,客户机通过浏览器或客户端程序访问数据,这种架构可以满足数据访问量较小的企业,但如果在短时间内访问次数突然增多,这种架构存在着很大隐患,极有可能导致系统崩溃。
此选课系统有如下特点:(1)选课人数多,最大值为5000人左右;(2)选课时间比较集中(一周内完成网上选课)。根据以上要求,如果体系架构设计不合理,同时在线人数达到一个阈值时系统将无法负担,从而导致系统的崩溃。为了解决两层架构的不足,我们将选课系统设计为三层架构。
所谓三层架构,就是在客户端和数据库之间加入了一个“中间层”。一般情况下客户端通过与中间层建立连接,再由中间层与数据库进行交互,客户端与数据库隔离,提高了整个系统的安全性。这里的三层,不是物理意义上的三层,不是简单的把三台计算机放在一起就组成了三层架构,而是指的是逻辑上的三层,如图1所示。
图1 三层体系模式图
鉴于本系统的实际需求,选课系统主体采用BS结构,从Web数据库应用系统的功能角度划分,具体构建了三层结构,同时基于系统性能的考虑,进行相应软件优化设计,由此给出了一类简化的Web数据库应用系统的软硬件构建框架,即数据库服务器、Web服务器、前台浏览器。其中应用系统服务器与Web服务器是完全分开的。这种分开有两种含义:一种是应用系统服务器和Web服务器各自所基于的硬件计算机是分开的,这有利于充分发挥各自服务器的性能;另外一种含义是应用系统服务器和Web服务器各自所实现的业务功能分开,应用系统服务器全权负责具体的选课业务规则本身,而web服务器不参与选课核心业务。尽管ASP访问数据库的开销比其他方式优越得多,但是它毕竟没有数据库本身提供的工具处理得快,所以还是分开有利于整个应用系统的性能提高,同时也有利于计算机层次功能的明确和系统的控制与维护。
选课系统为教务管理模块的子系统,系统的权限分配及参数设置由DBA在系统初始化时全部完成。选课系统有两类用户,教务管理人员需要对选修课的科目,上课时间,任课教师,上课地点,可容纳的人数等信息进行初始化。由于本校选修课程每学期都相对固定,故将其抽取成单独的数据源进行处理,可提高系统的检索速度。学生可通过个人选课查询查看自己所选课程的相应信息,以及对本学期所开课程的信息及任课教师信息进行查询。课表查询可以提供所以课程开设的时间、地点、任课教师等信息。选课系统模块如图2所示。
图2 选课系统模块图
ASP(Active Server Pages)是基于传统的HTML技术,提供了一个服务器端的脚本环境,能生成和运行动态的、交互的、高效的Web服务器应用程序。ASP是由客户端的浏览器请求,然后由IIS来处理,直到最终每一个组件都被具体实例化。然后IIS运用脚本解释器,把它变成HTML标记和文本。最终的效果页面不包含你的任何代码,访问者看见的只是浏览器。若脚本指令用到基于COM标准的组件(组件本身是经过编译的可重用二进制码)时,ADO(ActiveX Data Objects)通过 ODBC(Open Database Connect,开放式数据连接)与数据库连接,对数据库进行访问,并将访问结果返回给Web服务器。ASP引擎将脚本和组件的运行结果生成相应的HTML语法成分,与文件中原有的文本和HTML标记一起,组成标准HTML页面送至客户端浏览器,如图3所示。
图3 ASP.NET系统框架
后台数据库采用SQL SERVER2005的企业版,选课系统的E-R图如图4所示。
ADO具有支持建立CS和基于Web应用的关键特性,在ASP.NET中,ADO可以看作是一个服务器组件,ADO所提供的三个主要的独立对象是:连接对象Connection:提供对数据库服务器的连接;记录集对象Recordset:由数据库服务器所返回的记录集,实现对数据库的操作,主要包括添加、删除、修改等;命令对象Command:执行SQL语句和SQL Server存储,提供数据库服务器数据查询;灵活使用上述对象的方法和属性,可以实现对数据库的操作,其基本步骤是:
(1)建数据库源名(DSN)。DSN(Data Source Name)是连接ODBC和数据库的桥梁,ODBC通过DSN来找到要访问的数据库用户可以通过Windows的控制面板中的32位ODBC”进行配置。
(2)使用Connection打开数据库。要打开一个数据库的连接,首先创建连接对象的一个实例。然后通过调用连接对象的open方法,打开一个连接:
set cn=Server.CreateObject(”ADODB.Connection”)表示建立了连接对象的一个实例 。cn.Open(“Driver={SQL Server};database)=数据库名;uid=用户名;pwd=密码”打开SQL Server数据库。cn.open“DSN 名称”;”用户名”;”密码”。利用 ODBC的系统DSN来打开数据库。
图4 选课系统E-R图
(3)使用RecordSet对象操作数据库并创建数据对象。要创建记录集对象的一个实例,可以使用连接对象的Execute方法。当使用Execute方法从一个数据库返回查询结果时,一个记录集对象会被自动创建。用RecordSet对象实现对数据库的操作,主要包括添加、删除、修改等,其主要语法如下:
set rs=cn.Execute(”数据库表或 SQL语句”)使用SQL语句操作数据库,并将结果返回给一个recordset对象 rs。
rs.Delete“删除当前记录”;
rs(“字段名称”)=新的字段值
rs.Update‘修改当前记录,利用 RecordSet实现记录的修改。
(4)使用Command对象操作数据库利用Command来执行SQL语句和SQL Server的存储过程。Com and接口表示一个可以被数据源处理的命令,提供了一种简单而有效的方法来处理查询。
(5)关闭数据库对象和链接rs.close 。
系统测试是为了测试系统的功能性、抗压性、容错性、安全性,验证该系统能否满足学生在选课时正常运转,本系统进行了以下几项测试。
压力测试:模拟5000个进程同时对服务器进行访问,测试结果为系统等待短暂时间内可以完成选课任务。
功能测试:让开发人员及用户对所需功能进行测试,结果能够满足选课需求。
容错测试:当用户输入非法字符时,系统能提示相对应的错误信息。
安全测试:系统能防止外界的非法入侵。
选课系统是教务管理系统的一个重要模块,我们利用三层架构的设计方法解决了突发性大访问量所带来的隐患,该系统可以满足高职高专类院校网上选课的需求。