李 強(qiáng)
(太原大學(xué)外語(yǔ)師范學(xué)院教務(wù)處,太原 030012)
隨著教育信息化、電子化的不斷加強(qiáng),網(wǎng)上選課已經(jīng)越來(lái)越多地被大多數(shù)高校所接受和使用,傳統(tǒng)的選課方法也隨之改變。有了網(wǎng)上選課系統(tǒng),學(xué)生可以在規(guī)定時(shí)間內(nèi)的任何地點(diǎn),選修自己喜歡的任意課程。這樣大大提高了教務(wù)管理人員的工作效率,學(xué)生選課也更加便捷和公平。
目前的數(shù)據(jù)庫(kù)系統(tǒng)按照結(jié)構(gòu)層次可分為兩層架構(gòu)和多層架構(gòu)。兩層架構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)包括BS模式和CS模式兩種。它的特點(diǎn)是數(shù)據(jù)與應(yīng)用端分離,數(shù)據(jù)存放在數(shù)據(jù)庫(kù)服務(wù)器,客戶機(jī)通過(guò)瀏覽器或客戶端程序訪問(wèn)數(shù)據(jù),這種架構(gòu)可以滿足數(shù)據(jù)訪問(wèn)量較小的企業(yè),但如果在短時(shí)間內(nèi)訪問(wèn)次數(shù)突然增多,這種架構(gòu)存在著很大隱患,極有可能導(dǎo)致系統(tǒng)崩潰。
此選課系統(tǒng)有如下特點(diǎn):(1)選課人數(shù)多,最大值為5000人左右;(2)選課時(shí)間比較集中(一周內(nèi)完成網(wǎng)上選課)。根據(jù)以上要求,如果體系架構(gòu)設(shè)計(jì)不合理,同時(shí)在線人數(shù)達(dá)到一個(gè)閾值時(shí)系統(tǒng)將無(wú)法負(fù)擔(dān),從而導(dǎo)致系統(tǒng)的崩潰。為了解決兩層架構(gòu)的不足,我們將選課系統(tǒng)設(shè)計(jì)為三層架構(gòu)。
所謂三層架構(gòu),就是在客戶端和數(shù)據(jù)庫(kù)之間加入了一個(gè)“中間層”。一般情況下客戶端通過(guò)與中間層建立連接,再由中間層與數(shù)據(jù)庫(kù)進(jìn)行交互,客戶端與數(shù)據(jù)庫(kù)隔離,提高了整個(gè)系統(tǒng)的安全性。這里的三層,不是物理意義上的三層,不是簡(jiǎn)單的把三臺(tái)計(jì)算機(jī)放在一起就組成了三層架構(gòu),而是指的是邏輯上的三層,如圖1所示。
圖1 三層體系模式圖
鑒于本系統(tǒng)的實(shí)際需求,選課系統(tǒng)主體采用BS結(jié)構(gòu),從Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的功能角度劃分,具體構(gòu)建了三層結(jié)構(gòu),同時(shí)基于系統(tǒng)性能的考慮,進(jìn)行相應(yīng)軟件優(yōu)化設(shè)計(jì),由此給出了一類簡(jiǎn)化的Web數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的軟硬件構(gòu)建框架,即數(shù)據(jù)庫(kù)服務(wù)器、Web服務(wù)器、前臺(tái)瀏覽器。其中應(yīng)用系統(tǒng)服務(wù)器與Web服務(wù)器是完全分開(kāi)的。這種分開(kāi)有兩種含義:一種是應(yīng)用系統(tǒng)服務(wù)器和Web服務(wù)器各自所基于的硬件計(jì)算機(jī)是分開(kāi)的,這有利于充分發(fā)揮各自服務(wù)器的性能;另外一種含義是應(yīng)用系統(tǒng)服務(wù)器和Web服務(wù)器各自所實(shí)現(xiàn)的業(yè)務(wù)功能分開(kāi),應(yīng)用系統(tǒng)服務(wù)器全權(quán)負(fù)責(zé)具體的選課業(yè)務(wù)規(guī)則本身,而web服務(wù)器不參與選課核心業(yè)務(wù)。盡管ASP訪問(wèn)數(shù)據(jù)庫(kù)的開(kāi)銷比其他方式優(yōu)越得多,但是它畢竟沒(méi)有數(shù)據(jù)庫(kù)本身提供的工具處理得快,所以還是分開(kāi)有利于整個(gè)應(yīng)用系統(tǒng)的性能提高,同時(shí)也有利于計(jì)算機(jī)層次功能的明確和系統(tǒng)的控制與維護(hù)。
選課系統(tǒng)為教務(wù)管理模塊的子系統(tǒng),系統(tǒng)的權(quán)限分配及參數(shù)設(shè)置由DBA在系統(tǒng)初始化時(shí)全部完成。選課系統(tǒng)有兩類用戶,教務(wù)管理人員需要對(duì)選修課的科目,上課時(shí)間,任課教師,上課地點(diǎn),可容納的人數(shù)等信息進(jìn)行初始化。由于本校選修課程每學(xué)期都相對(duì)固定,故將其抽取成單獨(dú)的數(shù)據(jù)源進(jìn)行處理,可提高系統(tǒng)的檢索速度。學(xué)生可通過(guò)個(gè)人選課查詢查看自己所選課程的相應(yīng)信息,以及對(duì)本學(xué)期所開(kāi)課程的信息及任課教師信息進(jìn)行查詢。課表查詢可以提供所以課程開(kāi)設(shè)的時(shí)間、地點(diǎn)、任課教師等信息。選課系統(tǒng)模塊如圖2所示。
圖2 選課系統(tǒng)模塊圖
ASP(Active Server Pages)是基于傳統(tǒng)的HTML技術(shù),提供了一個(gè)服務(wù)器端的腳本環(huán)境,能生成和運(yùn)行動(dòng)態(tài)的、交互的、高效的Web服務(wù)器應(yīng)用程序。ASP是由客戶端的瀏覽器請(qǐng)求,然后由IIS來(lái)處理,直到最終每一個(gè)組件都被具體實(shí)例化。然后IIS運(yùn)用腳本解釋器,把它變成HTML標(biāo)記和文本。最終的效果頁(yè)面不包含你的任何代碼,訪問(wèn)者看見(jiàn)的只是瀏覽器。若腳本指令用到基于COM標(biāo)準(zhǔn)的組件(組件本身是經(jīng)過(guò)編譯的可重用二進(jìn)制碼)時(shí),ADO(ActiveX Data Objects)通過(guò) ODBC(Open Database Connect,開(kāi)放式數(shù)據(jù)連接)與數(shù)據(jù)庫(kù)連接,對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),并將訪問(wèn)結(jié)果返回給Web服務(wù)器。ASP引擎將腳本和組件的運(yùn)行結(jié)果生成相應(yīng)的HTML語(yǔ)法成分,與文件中原有的文本和HTML標(biāo)記一起,組成標(biāo)準(zhǔn)HTML頁(yè)面送至客戶端瀏覽器,如圖3所示。
圖3 ASP.NET系統(tǒng)框架
后臺(tái)數(shù)據(jù)庫(kù)采用SQL SERVER2005的企業(yè)版,選課系統(tǒng)的E-R圖如圖4所示。
ADO具有支持建立CS和基于Web應(yīng)用的關(guān)鍵特性,在ASP.NET中,ADO可以看作是一個(gè)服務(wù)器組件,ADO所提供的三個(gè)主要的獨(dú)立對(duì)象是:連接對(duì)象Connection:提供對(duì)數(shù)據(jù)庫(kù)服務(wù)器的連接;記錄集對(duì)象Recordset:由數(shù)據(jù)庫(kù)服務(wù)器所返回的記錄集,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,主要包括添加、刪除、修改等;命令對(duì)象Command:執(zhí)行SQL語(yǔ)句和SQL Server存儲(chǔ),提供數(shù)據(jù)庫(kù)服務(wù)器數(shù)據(jù)查詢;靈活使用上述對(duì)象的方法和屬性,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,其基本步驟是:
(1)建數(shù)據(jù)庫(kù)源名(DSN)。DSN(Data Source Name)是連接ODBC和數(shù)據(jù)庫(kù)的橋梁,ODBC通過(guò)DSN來(lái)找到要訪問(wèn)的數(shù)據(jù)庫(kù)用戶可以通過(guò)Windows的控制面板中的32位ODBC”進(jìn)行配置。
(2)使用Connection打開(kāi)數(shù)據(jù)庫(kù)。要打開(kāi)一個(gè)數(shù)據(jù)庫(kù)的連接,首先創(chuàng)建連接對(duì)象的一個(gè)實(shí)例。然后通過(guò)調(diào)用連接對(duì)象的open方法,打開(kāi)一個(gè)連接:
set cn=Server.CreateObject(”ADODB.Connection”)表示建立了連接對(duì)象的一個(gè)實(shí)例 。cn.Open(“Driver={SQL Server};database)=數(shù)據(jù)庫(kù)名;uid=用戶名;pwd=密碼”打開(kāi)SQL Server數(shù)據(jù)庫(kù)。cn.open“DSN 名稱”;”用戶名”;”密碼”。利用 ODBC的系統(tǒng)DSN來(lái)打開(kāi)數(shù)據(jù)庫(kù)。
圖4 選課系統(tǒng)E-R圖
(3)使用RecordSet對(duì)象操作數(shù)據(jù)庫(kù)并創(chuàng)建數(shù)據(jù)對(duì)象。要?jiǎng)?chuàng)建記錄集對(duì)象的一個(gè)實(shí)例,可以使用連接對(duì)象的Execute方法。當(dāng)使用Execute方法從一個(gè)數(shù)據(jù)庫(kù)返回查詢結(jié)果時(shí),一個(gè)記錄集對(duì)象會(huì)被自動(dòng)創(chuàng)建。用RecordSet對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,主要包括添加、刪除、修改等,其主要語(yǔ)法如下:
set rs=cn.Execute(”數(shù)據(jù)庫(kù)表或 SQL語(yǔ)句”)使用SQL語(yǔ)句操作數(shù)據(jù)庫(kù),并將結(jié)果返回給一個(gè)recordset對(duì)象 rs。
rs.Delete“刪除當(dāng)前記錄”;
rs(“字段名稱”)=新的字段值
rs.Update‘修改當(dāng)前記錄,利用 RecordSet實(shí)現(xiàn)記錄的修改。
(4)使用Command對(duì)象操作數(shù)據(jù)庫(kù)利用Command來(lái)執(zhí)行SQL語(yǔ)句和SQL Server的存儲(chǔ)過(guò)程。Com and接口表示一個(gè)可以被數(shù)據(jù)源處理的命令,提供了一種簡(jiǎn)單而有效的方法來(lái)處理查詢。
(5)關(guān)閉數(shù)據(jù)庫(kù)對(duì)象和鏈接rs.close 。
系統(tǒng)測(cè)試是為了測(cè)試系統(tǒng)的功能性、抗壓性、容錯(cuò)性、安全性,驗(yàn)證該系統(tǒng)能否滿足學(xué)生在選課時(shí)正常運(yùn)轉(zhuǎn),本系統(tǒng)進(jìn)行了以下幾項(xiàng)測(cè)試。
壓力測(cè)試:模擬5000個(gè)進(jìn)程同時(shí)對(duì)服務(wù)器進(jìn)行訪問(wèn),測(cè)試結(jié)果為系統(tǒng)等待短暫時(shí)間內(nèi)可以完成選課任務(wù)。
功能測(cè)試:讓開(kāi)發(fā)人員及用戶對(duì)所需功能進(jìn)行測(cè)試,結(jié)果能夠滿足選課需求。
容錯(cuò)測(cè)試:當(dāng)用戶輸入非法字符時(shí),系統(tǒng)能提示相對(duì)應(yīng)的錯(cuò)誤信息。
安全測(cè)試:系統(tǒng)能防止外界的非法入侵。
選課系統(tǒng)是教務(wù)管理系統(tǒng)的一個(gè)重要模塊,我們利用三層架構(gòu)的設(shè)計(jì)方法解決了突發(fā)性大訪問(wèn)量所帶來(lái)的隱患,該系統(tǒng)可以滿足高職高專類院校網(wǎng)上選課的需求。