研究生學(xué)位信息研究論文

時(shí)間:2022-06-23 08:39:00

導(dǎo)語(yǔ):研究生學(xué)位信息研究論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀(guān)點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。

研究生學(xué)位信息研究論文

摘要作者開(kāi)發(fā)的基于Web的研究生學(xué)位信息管理系統(tǒng)具有數(shù)據(jù)錄入、數(shù)據(jù)處理、信息查詢(xún)、信息輸出、數(shù)據(jù)導(dǎo)出等基本功能。介紹了系統(tǒng)體系結(jié)構(gòu)以及開(kāi)發(fā)的關(guān)鍵技術(shù),包括基于窗體身份驗(yàn)證、基于角色的用戶(hù)管理以及基于存儲(chǔ)過(guò)程的分頁(yè)顯示技術(shù)等。

關(guān)鍵詞學(xué)位信息管理系統(tǒng);身份驗(yàn)證;用戶(hù)管理;分頁(yè)顯示

1引言

研究生學(xué)位管理是研究生教育的一個(gè)重要環(huán)節(jié),是一項(xiàng)涉及多學(xué)科知識(shí),需多部門(mén)協(xié)調(diào)工作的管理系統(tǒng)工程。它主要完成數(shù)據(jù)錄入、數(shù)據(jù)處理、信息輸出和數(shù)據(jù)導(dǎo)出等工作。學(xué)位管理部門(mén)要求:可以從其它部門(mén)獲取已有的學(xué)生信息,也可以手工錄入學(xué)位信息;數(shù)據(jù)經(jīng)過(guò)處理后以適當(dāng)?shù)男问捷敵鱿嚓P(guān)文件或表格,如學(xué)位申請(qǐng)表、授予學(xué)位文件、授予學(xué)位名單、學(xué)位證明等,同時(shí)將處理后的數(shù)據(jù)按一定格式上報(bào)教育部。

針對(duì)上述需求,我們開(kāi)發(fā)了基于Web的研究生學(xué)位管理信息系統(tǒng)。該系統(tǒng)采用2.0開(kāi)發(fā)平臺(tái)、C#語(yǔ)言、SQLServer2000數(shù)據(jù)庫(kù)管理系統(tǒng),在基于Intranet/Intranet的校園網(wǎng)環(huán)境下運(yùn)行。

2系統(tǒng)設(shè)計(jì)

本系統(tǒng)采用三層B/S體系結(jié)構(gòu),如圖1所示,其中:

圖1系統(tǒng)體系結(jié)構(gòu)圖

表示層:相當(dāng)于用戶(hù)界面,為客戶(hù)端提供對(duì)整個(gè)應(yīng)用程序的訪(fǎng)問(wèn)。在本系統(tǒng)中表示層由Web窗體和代碼隱藏文件組成。在.aspx文件中只有html代碼和服務(wù)器控件,在頁(yè)面程序代碼文件(.cs文件)中調(diào)用.dll組件中的數(shù)據(jù)庫(kù)操作方法,返回滿(mǎn)足條件的結(jié)果。

中間層:是整個(gè)系統(tǒng)的核心部分,擔(dān)當(dāng)主要的應(yīng)用處理,包括處理表示層的HTTP請(qǐng)求以及對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)。

在設(shè)計(jì)系統(tǒng)時(shí),我們把應(yīng)用程序中的業(yè)務(wù)邏輯放在中間層應(yīng)用服務(wù)器上,這樣業(yè)務(wù)邏輯和用戶(hù)界面分開(kāi)。如果要修改應(yīng)用程序代碼,只須對(duì)應(yīng)用服務(wù)器進(jìn)行修改,而不用修改成千上萬(wàn)的客戶(hù)端應(yīng)用程序。同時(shí)由于只支持面向?qū)ο?組件也可以看作類(lèi),因此可以在Web項(xiàng)目中添加對(duì)數(shù)據(jù)庫(kù)操作的組件,并將其編譯為.dll,這樣就把數(shù)據(jù)庫(kù)的操作過(guò)程封裝起來(lái),便于代碼的安全管理和維護(hù)。因此,我們把中間層進(jìn)一步分解為業(yè)務(wù)外觀(guān)、業(yè)務(wù)規(guī)則、數(shù)據(jù)訪(fǎng)問(wèn)等層進(jìn)行處理,并且把它們封裝在了獨(dú)立的.dll組件中。

其中,業(yè)務(wù)外觀(guān)層用作隔離層,它將用戶(hù)界面與各種業(yè)務(wù)功能的實(shí)現(xiàn)隔離開(kāi)來(lái),它除了為表示層提供服務(wù),還可以訪(fǎng)問(wèn)業(yè)務(wù)規(guī)則和數(shù)據(jù)訪(fǎng)問(wèn)層,是系統(tǒng)的公共入口點(diǎn)。業(yè)務(wù)規(guī)則層包含了各種業(yè)務(wù)規(guī)則和邏輯的實(shí)現(xiàn)。數(shù)據(jù)訪(fǎng)問(wèn)層為業(yè)務(wù)外觀(guān)層和業(yè)務(wù)規(guī)則層提供數(shù)據(jù)服務(wù),其中包含了各種數(shù)據(jù)訪(fǎng)問(wèn)的類(lèi)。

數(shù)據(jù)層:位于底層,以為接口,SQLServer2000為后臺(tái),主要處理應(yīng)用層對(duì)數(shù)據(jù)的請(qǐng)求。

系統(tǒng)運(yùn)行時(shí),客戶(hù)端瀏覽器發(fā)出對(duì)頁(yè)面的訪(fǎng)問(wèn)請(qǐng)求,訪(fǎng)問(wèn)表示層各aspx文件,再將各請(qǐng)求事件發(fā)送到業(yè)務(wù)外觀(guān)層,業(yè)務(wù)外觀(guān)層根據(jù)需要訪(fǎng)問(wèn)業(yè)務(wù)規(guī)則層或數(shù)據(jù)訪(fǎng)問(wèn)層。而業(yè)務(wù)規(guī)則層只能訪(fǎng)問(wèn)數(shù)據(jù)訪(fǎng)問(wèn)層,數(shù)據(jù)訪(fǎng)問(wèn)層通過(guò)訪(fǎng)問(wèn)數(shù)據(jù)層的存儲(chǔ)過(guò)程以達(dá)到對(duì)數(shù)據(jù)庫(kù)的操作。由于整個(gè)系統(tǒng)由相互交互的各層實(shí)現(xiàn),因此可以實(shí)現(xiàn)系統(tǒng)的分布式部署,以達(dá)到分布式應(yīng)用來(lái)減輕各層的壓力。

由于客戶(hù)端向服務(wù)器請(qǐng)求頁(yè)面時(shí),其復(fù)雜的邏輯處理在服務(wù)器端進(jìn)行,在客戶(hù)端只能看到該網(wǎng)頁(yè)的最終表現(xiàn)和HTML,而不能看到該網(wǎng)頁(yè)的程序邏輯,這樣可以有效地保護(hù)程序代碼的安全。

圖1對(duì)應(yīng)的研究生學(xué)位信息管理軟件模塊結(jié)構(gòu)如圖2所示。

圖2學(xué)位系統(tǒng)功能模塊圖

其中,各模塊實(shí)現(xiàn)的功能如下:

(1)數(shù)據(jù)導(dǎo)入:輔助學(xué)位辦工作人員從其它部門(mén)(招生辦、培養(yǎng)科)導(dǎo)入學(xué)生已有的基本信息,包括學(xué)籍信息和培養(yǎng)信息。

(2)數(shù)據(jù)錄入:輔助學(xué)位辦工作人員通過(guò)研究生部局域網(wǎng),以及研究生通過(guò)互聯(lián)網(wǎng)錄入相關(guān)信息。

(3)數(shù)據(jù)處理:實(shí)現(xiàn)學(xué)位證書(shū)號(hào)碼自動(dòng)生成、數(shù)據(jù)轉(zhuǎn)存數(shù)據(jù)維護(hù)等操作。

(4)用戶(hù)管理:實(shí)現(xiàn)各種登錄用戶(hù)的角色、權(quán)限管理以及密碼修改。

(5)數(shù)據(jù)查詢(xún):實(shí)現(xiàn)從數(shù)據(jù)庫(kù)查找相關(guān)學(xué)生記錄,并按一定格式顯示和打印。

(6)數(shù)據(jù)輸出:實(shí)現(xiàn)學(xué)位申請(qǐng)表的打印、學(xué)位信息導(dǎo)入、上報(bào)庫(kù)dbf表等功能。

3系統(tǒng)實(shí)現(xiàn)

1)中的安全機(jī)制

學(xué)位系統(tǒng)采用安全架構(gòu)中的表單驗(yàn)證方式實(shí)現(xiàn)用戶(hù)登錄。使用表單身份驗(yàn)證時(shí),通過(guò)指定的登錄頁(yè)面收集用戶(hù)的憑證信息,如果未驗(yàn)證身份的用戶(hù)試圖訪(fǎng)問(wèn)受保護(hù)的文件或資源(其中,URL授權(quán)拒絕用戶(hù)訪(fǎng)問(wèn))將被重新定向到該登錄頁(yè)面,用戶(hù)在此處嘗試通過(guò)身份驗(yàn)證。用戶(hù)提供憑據(jù)并提交該窗體,如果應(yīng)用程序?qū)φ?qǐng)求進(jìn)行身份驗(yàn)證,系統(tǒng)會(huì)發(fā)出一個(gè)Cookie,其中包含用于重新獲取標(biāo)識(shí)的憑據(jù)或密鑰。隨后發(fā)出的請(qǐng)求在請(qǐng)求頭中具有該Cookie,事件處理程序使用應(yīng)用程序開(kāi)發(fā)人員指定的任何驗(yàn)證方法對(duì)這些請(qǐng)求進(jìn)行身份驗(yàn)證和授權(quán)。其驗(yàn)證流程如圖3所示。

圖3基于窗體的身份驗(yàn)證流程

基于窗體的身份驗(yàn)證開(kāi)發(fā)步驟如下:

(1)將IIS配置為使用匿名訪(fǎng)問(wèn)。

(2)將配置為使用表單身份驗(yàn)證。在Web.config文件中配置authentication元素的屬性,設(shè)置為身份驗(yàn)證模式。

<authenticationmode="Forms">

<formsname=".ASPXAUTH"protection="Encryption"timeout="15"loginUrl="Login.aspx"/>

</authentication>

(3)檢索數(shù)據(jù)存儲(chǔ)驗(yàn)證用戶(hù),從自定義數(shù)據(jù)存儲(chǔ)中檢索角色列表(不是基于角色可不用)。

(4)使用FormsAuthenticationTicket創(chuàng)建一個(gè)Cookie并回發(fā)到客戶(hù)端,并存儲(chǔ)角色到票中。

FormsAuthentication.SetAuthCookie(Username,true|false)

HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires=DateTime.Now.AddDays(1)//cookies保存時(shí)間

如果需要存儲(chǔ)角色,采用:

FormsAuthenticationTicketauthTicket=newFormsAuthenticationTicket(

1,//版本號(hào),設(shè)置為1

txtUserName.Text,//用戶(hù)標(biāo)示

DateTime.Now,//Cookie的發(fā)出時(shí)間,設(shè)置為DateTime.Now

DateTime.Now.AddMinutes(20),//Cookie的有效時(shí)間

false,//是否持久性

roles);//roles為存儲(chǔ)的用逗號(hào)分割的角色串

stringencryptedTicket=FormsAuthentication.Encrypt(authTicket);//把身份驗(yàn)證票加密

//設(shè)置驗(yàn)證票cookie,第一個(gè)參數(shù)為cookie的名字,第二個(gè)參數(shù)為cookie的值也就是加密后的票

HttpCookieauthCookie=

newHttpCookie(FormsAuthentication.FormsCookieName,

encryptedTicket);

Response.Cookies.Add(authCookie);//把cookie加進(jìn)Response對(duì)象發(fā)生到客戶(hù)端

(5)在Global.asax內(nèi)的Application_AuthenticateRequest事件中處理程序中(Global.asax)中,使用票創(chuàng)建IPrincipal對(duì)象并存在HttpContext.User中。

HttpCookieauthCookie=Context.Request.Cookies[FormsAuthentication.FormsCookieName];

FormsAuthenticationTicketauthTicket=FormsAuthentication.Decrypt(authCookie.Value);//解密

string[]roles=authTicket.UserData.Split(newchar[]{'''',''''});//根據(jù)存入時(shí)的格式分解角色

Context.User=newGenericPrincipal(Context.User.Identity,Roles);//存入HttpContext.User

2)基于角色的用戶(hù)管理

基于角色的訪(fǎng)問(wèn)控制已經(jīng)相當(dāng)成熟,作為策略中立的鑒別和授權(quán)機(jī)制,通過(guò)角色的繼承和職責(zé)分離等控制約束條件可以實(shí)現(xiàn)多種控制策略?;诮巧脑L(fǎng)問(wèn)控制引入角色這個(gè)中介,安全管理人員根據(jù)需要定義各種角色,并設(shè)置合適的訪(fǎng)問(wèn)權(quán)限,而用戶(hù)根據(jù)其職責(zé)被指派為不同的角色。由于實(shí)現(xiàn)了用戶(hù)與訪(fǎng)問(wèn)權(quán)限的邏輯分離,基于角色的策略極大地方便了權(quán)限管理,而且對(duì)實(shí)際應(yīng)用環(huán)境的訪(fǎng)問(wèn)控制需求的描述更自然,而對(duì)一個(gè)組織來(lái)說(shuō),其行為特征和功能是比較穩(wěn)定的,因此其角色是比較穩(wěn)定的。由于角色/權(quán)限之間的變化比角色/用戶(hù)關(guān)系之間的變化相對(duì)要慢得多。

本學(xué)位管理系統(tǒng)包含了多種數(shù)據(jù)操作功能,并且擁有不同種類(lèi)的多個(gè)用戶(hù),從總體上考慮可以分為管理員、教師(普通教師、研究生秘書(shū))和研究生(碩士、博士、專(zhuān)業(yè)碩士等)。不同類(lèi)別的用戶(hù)對(duì)系統(tǒng)功能的使用權(quán)限是不同的,因此要求系統(tǒng)提供一種對(duì)多用戶(hù)的權(quán)限管理,以確保具有權(quán)限的用戶(hù)能夠獲取或處理數(shù)據(jù)和信息,禁止所有未授權(quán)用戶(hù)操作數(shù)據(jù)。針對(duì)系統(tǒng)的這一特點(diǎn),我們?cè)陂_(kāi)發(fā)過(guò)程中,采用了兩級(jí)控制機(jī)制分別對(duì)頁(yè)面資源和數(shù)據(jù)進(jìn)行控制。在用戶(hù)成功登錄系統(tǒng)后根據(jù)用戶(hù)角色所具有的權(quán)限動(dòng)態(tài)生成菜單頁(yè)面,從而限制了用戶(hù)對(duì)未授權(quán)頁(yè)面的訪(fǎng)問(wèn);在用戶(hù)訪(fǎng)問(wèn)同一頁(yè)面時(shí),對(duì)于不同的用戶(hù)所獲取的數(shù)據(jù)信息是不一樣的。例如,對(duì)于不同學(xué)院的研究生秘書(shū)進(jìn)入系統(tǒng)后,他們只能操作所在學(xué)院的學(xué)生數(shù)據(jù)。

在研究生學(xué)位管理系統(tǒng)中,我們把所有系統(tǒng)用戶(hù)的角色信息保存在數(shù)據(jù)庫(kù)的用戶(hù)表中。其次,將系統(tǒng)中所有的功能模塊及其子功能訪(fǎng)問(wèn)接口的訪(fǎng)問(wèn)權(quán)限信息都存放在數(shù)據(jù)庫(kù)中的訪(fǎng)問(wèn)權(quán)限表中。

當(dāng)用戶(hù)登錄學(xué)位管理系統(tǒng)時(shí),權(quán)限管理的系統(tǒng)流程如圖4所示。

圖4權(quán)限管理的系統(tǒng)流程

3)基于存儲(chǔ)過(guò)程分頁(yè)顯示技術(shù)

顯示數(shù)據(jù)查詢(xún)的結(jié)果時(shí),為了縮短頁(yè)面數(shù)據(jù)的顯示時(shí)間,我們利用分頁(yè)的方法來(lái)顯示查詢(xún)結(jié)果。傳統(tǒng)的數(shù)據(jù)分頁(yè)方法是ADO紀(jì)錄集分頁(yè)法,也就是利用ADO自帶的分頁(yè)功能(利用游標(biāo))來(lái)實(shí)現(xiàn)分頁(yè)。但這種分頁(yè)方法僅適用于較小數(shù)據(jù)量的情形,因?yàn)橛螛?biāo)本身有缺點(diǎn):游標(biāo)是存放在內(nèi)存中,很費(fèi)內(nèi)存。游標(biāo)一經(jīng)建立,就將相關(guān)的記錄鎖住,直到取消游標(biāo)。

對(duì)于數(shù)據(jù)量大的數(shù)據(jù)源而言,分頁(yè)檢索時(shí),如果按照傳統(tǒng)的每次都加載整個(gè)數(shù)據(jù)源的方法是非常浪費(fèi)資源的。因此在分頁(yè)的時(shí)候可以檢索當(dāng)前頁(yè)面所需數(shù)據(jù),而非檢索所有的數(shù)據(jù),然后單步執(zhí)行當(dāng)前行,這就是我們所說(shuō)的基于存儲(chǔ)過(guò)程的分頁(yè)顯示技術(shù)。最早較好地實(shí)現(xiàn)這種根據(jù)頁(yè)面大小和頁(yè)碼來(lái)提取數(shù)據(jù)的方法是“俄羅斯存儲(chǔ)過(guò)程”。這個(gè)存儲(chǔ)過(guò)程用了游標(biāo),由于游標(biāo)的局限性,該方法沒(méi)有得到很好的應(yīng)用。

事實(shí)上,在查詢(xún)和提取超大容量的數(shù)據(jù)集時(shí),影響數(shù)據(jù)庫(kù)響應(yīng)時(shí)間的最大因素不是數(shù)據(jù)查找,而是物理的I/0操作。例如我們?nèi)〕鰧W(xué)科名為計(jì)算機(jī)應(yīng)用技術(shù)的前十名學(xué)生信息:

selecttop10*from(

selecttop10000Xh,Xm,HsxwrqfromXueWeiXinXiwhereXkm=''''計(jì)算機(jī)應(yīng)用技術(shù)''''

orderbyXhdesc)asaorderbyXhasc

從理論上講,整條查詢(xún)語(yǔ)句的執(zhí)行時(shí)間應(yīng)該比子句的執(zhí)行時(shí)間長(zhǎng),但事實(shí)相反。因?yàn)?子句執(zhí)行后返回的是10000條記錄,而整條語(yǔ)句僅返回10條語(yǔ)句,所以影響數(shù)據(jù)庫(kù)響應(yīng)時(shí)間最大的因素是物理I/O操作。而限制物理I/O操作此處的最有效方法之一就是使用TOP關(guān)鍵詞了。TOP關(guān)鍵詞是SQLSERVER中經(jīng)過(guò)系統(tǒng)優(yōu)化過(guò)的一個(gè)用來(lái)提取前幾條或前幾個(gè)百分比數(shù)據(jù)的詞。由于使用Top執(zhí)行查詢(xún)操作的效率很高。因此我們可以考慮使用Top關(guān)鍵詞來(lái)進(jìn)行分頁(yè)查找,由此可以得到如下分頁(yè)算法:

SELECTTOP頁(yè)大小*FROMTableWHERE(IDNOTIN

(SELECTTOP頁(yè)大小*頁(yè)數(shù)idFROM表ORDERBYid))ORDERBYID

和游標(biāo)存儲(chǔ)過(guò)程比起來(lái),該存儲(chǔ)過(guò)程在速度上有了很大的提高,而且每次查詢(xún)只需要取出當(dāng)前頁(yè)面所需的數(shù)據(jù),不需要加載整個(gè)數(shù)據(jù)源,是一個(gè)非常優(yōu)秀的分頁(yè)存儲(chǔ)過(guò)程。但是在該存儲(chǔ)過(guò)程中,使用了NOTIN關(guān)鍵字進(jìn)行數(shù)據(jù)讀取。SQL中的關(guān)鍵詞in不符合SARG,SARG是用于限制搜索的一個(gè)操作,它通常是指一個(gè)特定的匹配,一個(gè)值的范圍內(nèi)的匹配或者兩個(gè)以上條件的AND連接。形式如下:

列名操作符<常數(shù)或變量>或<常數(shù)或變量>操作符列名

如果一個(gè)表達(dá)式不能滿(mǎn)足SARG的形式,那它就無(wú)法限制搜索的范圍了,也就是SQLSERVER必須對(duì)每一行都判斷它是否滿(mǎn)足WHERE子句中的所有條件。因此在該分頁(yè)存儲(chǔ)過(guò)程中,notin操作會(huì)掃描全表,因此在執(zhí)行速度上依然不是很理想。

分頁(yè)優(yōu)化的最終目的就是避免產(chǎn)生過(guò)大的記錄集,使用TOP可實(shí)現(xiàn)對(duì)數(shù)據(jù)量的控制,因此在分頁(yè)算法中,影響查詢(xún)速度的關(guān)鍵因素有兩點(diǎn):TOP和NOTIN。TOP可以提高查詢(xún)速度,而notin會(huì)減慢查詢(xún)速度,所以要提高整個(gè)分頁(yè)算法的速度,就要使用其他方法替換notin。SQL中可以通過(guò)max(字段)或min(字段)來(lái)提取某個(gè)字段中的最大或最小值,所以如果某個(gè)字段值不重復(fù),那么就可以利用這些不重復(fù)字段的max或min值作為分頁(yè)算法中分頁(yè)的參照物。因此我們可以用操作符“>”或“<”使查詢(xún)語(yǔ)句符合SARG形式,于是可以得出如下分頁(yè)方案:

SELECTTOP頁(yè)大小FROMTable

WHERE(ID>(SELECTMAX(id)FROM

(SELECTTOP((頁(yè)碼-1)*頁(yè)大小)idFROMTableORDERBYid)AST))ORDERBYID

其中ID是數(shù)據(jù)庫(kù)表的主鍵。如果加上索引,查詢(xún)效率會(huì)有很大的提高。

表1列出了對(duì)有著10萬(wàn)以上數(shù)據(jù)的學(xué)位歷史表,在以SID(SID是主鍵,但并不是聚集索引)為排序列,提取Xh,Xm,Hsxwrq字段,分別以第1、10、100、1000、1萬(wàn)頁(yè)為例,測(cè)試以上兩種分頁(yè)方案的執(zhí)行速度:(單位:毫秒)

表1兩種分頁(yè)方案執(zhí)行速度對(duì)比

11010010001萬(wàn)

方案一30167204704500

方案二7663130250140

從表1中,我們可以看出,兩種存儲(chǔ)過(guò)程在執(zhí)行1000頁(yè)以下的分頁(yè)命令時(shí),都是可以信任的,速度都很好。但第一種方案在執(zhí)行分頁(yè)1萬(wàn)頁(yè)以上后速度開(kāi)始降了下來(lái),而第二種方案卻始終沒(méi)有大的變化,在大數(shù)據(jù)量的情況下,特別是在查詢(xún)最后幾頁(yè)的時(shí)候,查詢(xún)時(shí)間一般不會(huì)超過(guò)9秒,非常適用于大容量數(shù)據(jù)庫(kù)的查詢(xún)。

4結(jié)束語(yǔ)

本文介紹的基于Web的研究生學(xué)位管理信息系統(tǒng)已經(jīng)投入實(shí)際運(yùn)行中。實(shí)踐證明,本系統(tǒng)使用方便,易于管理,安全性高、可移植性好,有效地提高了研究生學(xué)位管理工作的自動(dòng)化水平與工作效率,得到用戶(hù)的好評(píng)。

參考文獻(xiàn)

[1]陳偉鶴,殷新春等.基于任務(wù)和角色的雙重Web訪(fǎng)問(wèn)控制模型[J].計(jì)算機(jī)研究與發(fā)展,2004,41(9):1466-1473

[2]趙燕飛,朱飛,孫玉星.一種基于Web的分布式應(yīng)用程序框架的構(gòu)建技術(shù)[J].計(jì)算機(jī)工程與應(yīng)用2004,36(36):168-170

[3]張曉輝,王培康.大型信息系統(tǒng)用戶(hù)權(quán)限管理[J].計(jì)算機(jī)應(yīng)用.2000,20(11):35-36