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