研究生學位信息研究論文

時間:2022-06-23 08:39:00

導語:研究生學位信息研究論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

研究生學位信息研究論文

摘要作者開發的基于Web的研究生學位信息管理系統具有數據錄入、數據處理、信息查詢、信息輸出、數據導出等基本功能。介紹了系統體系結構以及開發的關鍵技術,包括基于窗體身份驗證、基于角色的用戶管理以及基于存儲過程的分頁顯示技術等。

關鍵詞學位信息管理系統;身份驗證;用戶管理;分頁顯示

1引言

研究生學位管理是研究生教育的一個重要環節,是一項涉及多學科知識,需多部門協調工作的管理系統工程。它主要完成數據錄入、數據處理、信息輸出和數據導出等工作。學位管理部門要求:可以從其它部門獲取已有的學生信息,也可以手工錄入學位信息;數據經過處理后以適當的形式輸出相關文件或表格,如學位申請表、授予學位文件、授予學位名單、學位證明等,同時將處理后的數據按一定格式上報教育部。

針對上述需求,我們開發了基于Web的研究生學位管理信息系統。該系統采用2.0開發平臺、C#語言、SQLServer2000數據庫管理系統,在基于Intranet/Intranet的校園網環境下運行。

2系統設計

本系統采用三層B/S體系結構,如圖1所示,其中:

圖1系統體系結構圖

表示層:相當于用戶界面,為客戶端提供對整個應用程序的訪問。在本系統中表示層由Web窗體和代碼隱藏文件組成。在.aspx文件中只有html代碼和服務器控件,在頁面程序代碼文件(.cs文件)中調用.dll組件中的數據庫操作方法,返回滿足條件的結果。

中間層:是整個系統的核心部分,擔當主要的應用處理,包括處理表示層的HTTP請求以及對數據庫的訪問。

在設計系統時,我們把應用程序中的業務邏輯放在中間層應用服務器上,這樣業務邏輯和用戶界面分開。如果要修改應用程序代碼,只須對應用服務器進行修改,而不用修改成千上萬的客戶端應用程序。同時由于只支持面向對象,組件也可以看作類,因此可以在Web項目中添加對數據庫操作的組件,并將其編譯為.dll,這樣就把數據庫的操作過程封裝起來,便于代碼的安全管理和維護。因此,我們把中間層進一步分解為業務外觀、業務規則、數據訪問等層進行處理,并且把它們封裝在了獨立的.dll組件中。

其中,業務外觀層用作隔離層,它將用戶界面與各種業務功能的實現隔離開來,它除了為表示層提供服務,還可以訪問業務規則和數據訪問層,是系統的公共入口點。業務規則層包含了各種業務規則和邏輯的實現。數據訪問層為業務外觀層和業務規則層提供數據服務,其中包含了各種數據訪問的類。

數據層:位于底層,以為接口,SQLServer2000為后臺,主要處理應用層對數據的請求。

系統運行時,客戶端瀏覽器發出對頁面的訪問請求,訪問表示層各aspx文件,再將各請求事件發送到業務外觀層,業務外觀層根據需要訪問業務規則層或數據訪問層。而業務規則層只能訪問數據訪問層,數據訪問層通過訪問數據層的存儲過程以達到對數據庫的操作。由于整個系統由相互交互的各層實現,因此可以實現系統的分布式部署,以達到分布式應用來減輕各層的壓力。

由于客戶端向服務器請求頁面時,其復雜的邏輯處理在服務器端進行,在客戶端只能看到該網頁的最終表現和HTML,而不能看到該網頁的程序邏輯,這樣可以有效地保護程序代碼的安全。

圖1對應的研究生學位信息管理軟件模塊結構如圖2所示。

圖2學位系統功能模塊圖

其中,各模塊實現的功能如下:

(1)數據導入:輔助學位辦工作人員從其它部門(招生辦、培養科)導入學生已有的基本信息,包括學籍信息和培養信息。

(2)數據錄入:輔助學位辦工作人員通過研究生部局域網,以及研究生通過互聯網錄入相關信息。

(3)數據處理:實現學位證書號碼自動生成、數據轉存數據維護等操作。

(4)用戶管理:實現各種登錄用戶的角色、權限管理以及密碼修改。

(5)數據查詢:實現從數據庫查找相關學生記錄,并按一定格式顯示和打印。

(6)數據輸出:實現學位申請表的打印、學位信息導入、上報庫dbf表等功能。

3系統實現

1)中的安全機制

學位系統采用安全架構中的表單驗證方式實現用戶登錄。使用表單身份驗證時,通過指定的登錄頁面收集用戶的憑證信息,如果未驗證身份的用戶試圖訪問受保護的文件或資源(其中,URL授權拒絕用戶訪問)將被重新定向到該登錄頁面,用戶在此處嘗試通過身份驗證。用戶提供憑據并提交該窗體,如果應用程序對請求進行身份驗證,系統會發出一個Cookie,其中包含用于重新獲取標識的憑據或密鑰。隨后發出的請求在請求頭中具有該Cookie,事件處理程序使用應用程序開發人員指定的任何驗證方法對這些請求進行身份驗證和授權。其驗證流程如圖3所示。

圖3基于窗體的身份驗證流程

基于窗體的身份驗證開發步驟如下:

(1)將IIS配置為使用匿名訪問。

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

<authenticationmode="Forms">

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

</authentication>

(3)檢索數據存儲驗證用戶,從自定義數據存儲中檢索角色列表(不是基于角色可不用)。

(4)使用FormsAuthenticationTicket創建一個Cookie并回發到客戶端,并存儲角色到票中。

FormsAuthentication.SetAuthCookie(Username,true|false)

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

如果需要存儲角色,采用:

FormsAuthenticationTicketauthTicket=newFormsAuthenticationTicket(

1,//版本號,設置為1

txtUserName.Text,//用戶標示

DateTime.Now,//Cookie的發出時間,設置為DateTime.Now

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

false,//是否持久性

roles);//roles為存儲的用逗號分割的角色串

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

//設置驗證票cookie,第一個參數為cookie的名字,第二個參數為cookie的值也就是加密后的票

HttpCookieauthCookie=

newHttpCookie(FormsAuthentication.FormsCookieName,

encryptedTicket);

Response.Cookies.Add(authCookie);//把cookie加進Response對象發生到客戶端

(5)在Global.asax內的Application_AuthenticateRequest事件中處理程序中(Global.asax)中,使用票創建IPrincipal對象并存在HttpContext.User中。

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

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

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

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

2)基于角色的用戶管理

基于角色的訪問控制已經相當成熟,作為策略中立的鑒別和授權機制,通過角色的繼承和職責分離等控制約束條件可以實現多種控制策略。基于角色的訪問控制引入角色這個中介,安全管理人員根據需要定義各種角色,并設置合適的訪問權限,而用戶根據其職責被指派為不同的角色。由于實現了用戶與訪問權限的邏輯分離,基于角色的策略極大地方便了權限管理,而且對實際應用環境的訪問控制需求的描述更自然,而對一個組織來說,其行為特征和功能是比較穩定的,因此其角色是比較穩定的。由于角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多。

本學位管理系統包含了多種數據操作功能,并且擁有不同種類的多個用戶,從總體上考慮可以分為管理員、教師(普通教師、研究生秘書)和研究生(碩士、博士、專業碩士等)。不同類別的用戶對系統功能的使用權限是不同的,因此要求系統提供一種對多用戶的權限管理,以確保具有權限的用戶能夠獲取或處理數據和信息,禁止所有未授權用戶操作數據。針對系統的這一特點,我們在開發過程中,采用了兩級控制機制分別對頁面資源和數據進行控制。在用戶成功登錄系統后根據用戶角色所具有的權限動態生成菜單頁面,從而限制了用戶對未授權頁面的訪問;在用戶訪問同一頁面時,對于不同的用戶所獲取的數據信息是不一樣的。例如,對于不同學院的研究生秘書進入系統后,他們只能操作所在學院的學生數據。

在研究生學位管理系統中,我們把所有系統用戶的角色信息保存在數據庫的用戶表中。其次,將系統中所有的功能模塊及其子功能訪問接口的訪問權限信息都存放在數據庫中的訪問權限表中。

當用戶登錄學位管理系統時,權限管理的系統流程如圖4所示。

圖4權限管理的系統流程

3)基于存儲過程分頁顯示技術

顯示數據查詢的結果時,為了縮短頁面數據的顯示時間,我們利用分頁的方法來顯示查詢結果。傳統的數據分頁方法是ADO紀錄集分頁法,也就是利用ADO自帶的分頁功能(利用游標)來實現分頁。但這種分頁方法僅適用于較小數據量的情形,因為游標本身有缺點:游標是存放在內存中,很費內存。游標一經建立,就將相關的記錄鎖住,直到取消游標。

對于數據量大的數據源而言,分頁檢索時,如果按照傳統的每次都加載整個數據源的方法是非常浪費資源的。因此在分頁的時候可以檢索當前頁面所需數據,而非檢索所有的數據,然后單步執行當前行,這就是我們所說的基于存儲過程的分頁顯示技術。最早較好地實現這種根據頁面大小和頁碼來提取數據的方法是“俄羅斯存儲過程”。這個存儲過程用了游標,由于游標的局限性,該方法沒有得到很好的應用。

事實上,在查詢和提取超大容量的數據集時,影響數據庫響應時間的最大因素不是數據查找,而是物理的I/0操作。例如我們取出學科名為計算機應用技術的前十名學生信息:

selecttop10*from(

selecttop10000Xh,Xm,HsxwrqfromXueWeiXinXiwhereXkm=''''計算機應用技術''''

orderbyXhdesc)asaorderbyXhasc

從理論上講,整條查詢語句的執行時間應該比子句的執行時間長,但事實相反。因為,子句執行后返回的是10000條記錄,而整條語句僅返回10條語句,所以影響數據庫響應時間最大的因素是物理I/O操作。而限制物理I/O操作此處的最有效方法之一就是使用TOP關鍵詞了。TOP關鍵詞是SQLSERVER中經過系統優化過的一個用來提取前幾條或前幾個百分比數據的詞。由于使用Top執行查詢操作的效率很高。因此我們可以考慮使用Top關鍵詞來進行分頁查找,由此可以得到如下分頁算法:

SELECTTOP頁大小*FROMTableWHERE(IDNOTIN

(SELECTTOP頁大小*頁數idFROM表ORDERBYid))ORDERBYID

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

列名操作符<常數或變量>或<常數或變量>操作符列名

如果一個表達式不能滿足SARG的形式,那它就無法限制搜索的范圍了,也就是SQLSERVER必須對每一行都判斷它是否滿足WHERE子句中的所有條件。因此在該分頁存儲過程中,notin操作會掃描全表,因此在執行速度上依然不是很理想。

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

SELECTTOP頁大小FROMTable

WHERE(ID>(SELECTMAX(id)FROM

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

其中ID是數據庫表的主鍵。如果加上索引,查詢效率會有很大的提高。

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

表1兩種分頁方案執行速度對比

11010010001萬

方案一30167204704500

方案二7663130250140

從表1中,我們可以看出,兩種存儲過程在執行1000頁以下的分頁命令時,都是可以信任的,速度都很好。但第一種方案在執行分頁1萬頁以上后速度開始降了下來,而第二種方案卻始終沒有大的變化,在大數據量的情況下,特別是在查詢最后幾頁的時候,查詢時間一般不會超過9秒,非常適用于大容量數據庫的查詢。

4結束語

本文介紹的基于Web的研究生學位管理信息系統已經投入實際運行中。實踐證明,本系統使用方便,易于管理,安全性高、可移植性好,有效地提高了研究生學位管理工作的自動化水平與工作效率,得到用戶的好評。

參考文獻

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

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

[3]張曉輝,王培康.大型信息系統用戶權限管理[J].計算機應用.2000,20(11):35-36