摘 要: 通過對基于.NET的B/S管理系統一般項目的分析,給出了一個基于.NET的原型系統的設計過程。分析了該原型系統的數據庫設計、數據層、業務邏輯和Web頁面設計。以蘇州大學應用技術學院項目實驗教學為例,探討了采用基于該原型系統的實驗方法和步驟。
關鍵詞: 原型系統; 實驗實訓; .NET; 管理系統
中圖分類號:TP393.07 文獻標志碼:B 文章編號:1006-8228(2013)04-60-03
Discussion on .NET development experiment based on projects
He Jun
(School of Computer Science Technology, Computing Center, Soochow University, Suzhou, Jiangsu 215006, China)
Abstract: Through analysis of .NET B/S management system, a design process which based on .NET prototype system is presented. The prototype system is analyzed by the database design, data layer, the design of business logic and web page. Taking the experimental teaching of Applied Technology College of Soochow University as example, the method and procedure of experiment for this prototype system are discussed in this paper.
Key words: prototype system; training teaching; .Net; management system
1 基于.NET 的B/S管理系統項目分析
基于.NET B/S信息管理系統大多是基于數據庫的管理系統,該類系統的開發都有統一的套路:開發語言選擇VB或C#,后臺數據庫選擇Sql Server或Access等;體系結構通常為三層架構[1~2]:表示層、應用邏輯層(即中間層)、數據層[3];從開發者的角度看,表示層對應Web頁面或用戶控件的集合,數據層提供直接操作數據庫的全體對象集合,而應用邏輯層提供表示層和數據層之間的訪問接口,該層起到承上啟下的作用,采用類庫方式向上提供訪問接口,向下包裝數據層接口?;?NET的B/S管理系統的通用體系結構如圖1所示。
三層體系結構是:表示層、應用邏輯層、數據層。在表示層,將各個功能頁面劃分成許多自定義用戶控件或服務器控件,將控件搭建成完整的功能頁面,并將數據安全訪問和功能操作、設置等驗證放在控件中,使用模塊表進行管理,其目的是便于裝配和安全控制。數據訪問及業務邏輯層主要采用微軟提供的標準數據應用訪問塊Application Blocks for .NET。該類庫集成數據庫的連接、方法重載返回DataSet和DataReader訪問數據庫、采用Execute或ExecuteScalar等方法重載更新和修改數據庫,以及ExecuteXmlReade方法處理XML文檔的輸入輸出。在本原型系統中擴充了標準數據應用訪問塊的功能,使其能夠提供滿足數據訪問的要求和部分業務邏輯的實現。
在本原型系統中,都使用了數據訪問層中的SqlCommand對象調用存儲過程去執行數據庫操作,很少直接在程序中使用SQL語句執行數據庫操作。在一些例子中,可能見不到SqlCommand對象,因為存儲過程名直接傳遞給了數據訪問層相應的功能函數,但這仍將導致SqlCommand對象的創建。
2 基于.NET的B/S模式管理系統原型設計
我們選擇在Web開發中用的最多的通用權限子系統作為原型系統對學生進行講解, 通用權限子系統具有通用性,能夠方便地集成到其他系統中。我們對數據庫設計[4~5]、應用邏輯層和數據層、Web 頁面設計、Web菜單設計一系列開發過程給予詳細的分析。
2.1 數據庫設計
通用權限子系統數據設計如圖2所示。
⑴ 用戶(User)
User表的作用是提供可訪問Web應用系統的登錄帳戶和密碼。用戶是有權使用本系統的人。主要字段包括用戶ID(UserID)、密碼(Password)、用戶級別(UserLevel)、用戶名(Name),UserID為關鍵字。
⑵ 組(Group)
Group表的意圖是提供對資源的訪問權限,不同的組具有不同的訪問權限,同一類用戶定義為一個組。主要字段包括組名(GroupName)、讀取權限(ReadRight)、添加權限(AddRight)、編輯權限(EditRight)、刪除權限(DeleteRight)、審核權限(AuditRight)等,GroupName作為關鍵字。在我們的模型中將用戶組分為兩類:系統組和自定義組。系統組即系統一開始就設定的組。系統組包括:超級管理員組、普通管理員組、過客組等。
自定義組:由超級管理員用戶定義的組。例如,可以定義:全權瀏覽組、審核組等。
⑶ 用戶組成員(UserGroup)
UserGroup表是User表和Group表的關系表。GroupName和UserID是這個表的組合關鍵字。一個用戶可以隸屬于多個組。用戶與組的多對多聯系通過“用戶組成員”UserGroup表體現。用戶所在組的權限就是該用戶所具有的權限。
⑷ 系統模塊(Module)
系統模塊表Module是描述一個功能頁面、一個菜單項或一個文件等資源的實體。Module表的字段包括模塊ID(ModuleID),該字段為關鍵字、模塊名稱(ModuleName)、 Aspx或Ascx文件名稱或菜單名稱(FileName)、模塊類型(ModuleType),常用模塊類型主要分為菜單項、Web用戶控件、Web服務器控件、Web頁面、窗口、應用程序文件、資源文件等。
⑸ 用戶組模塊(GroupModule)
定義每個用戶組具有某個模塊的訪問權限。如果某個用戶組對某個模塊沒有相關記錄,則認為該用戶組對該模塊沒有任何權限。該表是Group表和Module表的關系表,GroupName和ModuleID為組合關鍵字。
2.2 數據層和業務邏輯層的設計
在基于SQL Server數據庫的邏輯和物理數據庫實現之后,就可用RapidTier等工具軟件快速生成具有標準格式的基于VB或C#三層架構的框架源代碼。我們采用RapidTier工具自動生成的項目中BuildSolution.bat批處理文件為編譯產生源代碼文件; InportSPs.bat批處理文件幫助產生Sql存儲過程(包括所有表的Insert、Add、Delete和Modify操作)。RapidTier工具產生的三層實現模式如圖3所示。
在RapidTier工具產生的解決方案中包括如下三個獨立的工程。
⑴ Model工程:該項目中的類為數據實體,類中只包含屬性,其屬性對應數據庫中表的各個字段信息。即數據實體類的實例通常對應表的一條記錄,可從數據庫提取記錄信息到該實體對象,或用該實體對象添加或修改數據庫中表的記錄。
⑵ DAL工程:該項目為數據訪問層,所有的類均從DaoBase基類繼承,該基類提供可擴展的數據訪問功能,如連接信息、共有屬性等。該項目中的每一個類中的接口(即方法)提供一個表的Select、Insert、Update、Delete等數據庫操作方法;Select方法通常返回DataTable或DataSet對象; Insert、Update、Delete方法返回Boolean或Integer。對于Insert和Update方法,參數類型為Model項目中的相應數據實體,該項目中實體對象的方法通常被BLL層(業務邏輯層)中的對象調用。底層操作數據庫所采用的技術為微軟提供的數據應用訪問塊Application Blocks for .NET,其中SqlHelper類中提供的共享方法直接操作數據庫。
⑶ BLL工程:該層為業務邏輯層,為表示層提供訪問接口。業務邏輯層控制如字段級的驗證,可能還有一些不能在單個列中表示的包含不同實體或概念的更高級的業務規則等,通常都放在該層中。業務邏輯層對象通過訪問DAL層中的方法返回DataTable、DataSet或數據實體到表示層。該層中的實體對象不會直接訪問數據庫。
三個工程的關系是:DAL工程負責直接與數據庫中的數據表進行存取操作。BLL工程通過調用DAL工程中的方法來實現對數據庫的間接操作,同時添加業務邏輯代碼,只有BLL工程可以直接調用DAL工程中的方法,不可以跨層調用(Web即表示層不能直接訪問DAL層中的對象)。 Web表示層(或桌面應用程序)通過調用BLL層的方法來實現與用戶的交互,同時Web層中對輸入數據進行一些初級驗證。Model提供數據實體供Web、BLL、DAL三層之間進行數據傳遞。DAL工程、BLL工程和Model工程均為類庫工程,編譯后為DLL動態連接庫。在ASP.NET中,它們的引用關系是WEB工程引用BLL工程和Model工程即包含Imports Tyqx.BLL和Imports Tyqx.Model語句;BLL工程引用DAL工程和Model工程,其中Tyqx為該項目的名稱空間。
2.3 Web頁面模版的設計
B/S管理信息系統的頁面框架模式如圖4所示。
頁面采用框架模式,或基于VS2008的母版頁方式建立;頁面頂部顯示系統名稱,底部顯示版權和其他信息,中間的左邊固定顯示功能菜單,中間的右邊區域為功能頁面的操作區。該頁面框架模式為通行的B/S信息管理系統的典型界面操作模式。
對于頁面的設計,首先我們遵循每個Page對應一張表的CRUD操作,在此基礎上增加表關系的查詢瀏覽和統計頁面等高級功能頁面。
2.4 菜單設計
采用sdmenu菜單開發工具可以非常方便地設計具有優秀界面的Web菜單。sdmenu菜單開發工具界面如圖5所示。在選擇好菜單模板后,編輯好自己的菜單,然后設置各菜單所對應的超連接頁面,再通過該工具中Publish菜單將Java腳本代碼直接發布到Web頁面中,之后將腳本文件和image圖片目錄拷貝到Web項目所在的目錄下即可。
3 基于原型設計的實驗過程
3.1 讓學生了解原型設計
教師通過上述原型設計系統中的數據庫文檔,對于三層開發模式、系統體系架構、Web設計模式、Web界面設計和Web菜單設計等應向學生詳盡描述一般項目的開發過程,為了提高學生的動手能力,我們還專門將原型系統的設計過程通過視頻軟件記錄下來,讓學生邊學邊做,起到了良好的教學效果。在.Net綜合實驗實訓課上,我們開發了數套從文檔到代碼的項目案例,以便學生課后研究并為項目開發提供參考。
3.2 以原型設計為模板,讓學生參照進行開發
按照數據庫簡單明了和與學生有密切關系的原則選擇典型項目,如表1所示。
3.3 基礎代碼的實現
⑴ 從典型項目中任意選擇一個項目,根據給定的邏輯表結構和表的關系的文檔,讓學生在Sql Server 2005中設計好關系數據庫;
⑵ RapidTier工具產生基于C#的三層架構原代碼項目框架,然后使用Visual Studio S2008打開項目,添加ASP.NET Web應用程序,并添加相應項目的引用;
⑶ 執行RapidTier工具自動生成的InportSPs.bat批處理文件,該批處理文件用來自動建立基于每張表的CRUD操作的存儲過程。項目中的數據庫操作全部通過存儲過程完成,避免在代碼中直接使用Sql語句;
⑷ 使用sdmenu菜單開發工具開發相應管理系統的Web菜單;
⑸ 根據給定的原型系統的Web頁面模版,讓學生設計登錄頁面、各相應數據表的CRUD操作頁面、部分高級功能頁面等。
3.4 上交實驗項目報告書
學生根據給定的步驟完成項目的開發,然后編寫開發過程,完成項目架構->數據庫設計->Web菜單->頁面設計->代碼編寫這一系列的過程,讓學生將這一系列過程書寫成實驗項目報告書,作為開發實例遞交作業,把作業的成績核定為占實訓總成績的40%。本實驗項目從2009年在蘇州大學應用技術學院實施以來,經過調查,有90%的學生反映教學效果非常好,另有10%學生反映原型系統有些簡單,與實際項目開發有一定的距離。
4 結束語
采用原型系統的教學方法,與在計算機專業課教學中采用“以任務驅動的教學模式”[8]進行專業實訓課教學具有相同的功效,能夠使學生真正成為課堂的主體,使教師成為學生學習的引導者。學生由被動接受者轉變為主動探究者,可促進學生的獨立性,讓學生從教師精選出的有限任務中,主動地獲得良好的開發體驗?!霸拖到y”教學法在任務的安排、人員分配、項目的功能定義等方面還有待進一步研究和提升。
參考文獻:
[1] 黃志軍,陳修亮,沈科宇.基于ADO.NET油料裝備管理系統多層架構的設計與實現[J].計算機與數字工程,2007.5:167-170
[2] 王海暉,杜卉.基于Visual C#.Net教學研究項目管理系統的開發[J].計算機與數字工程,2006.10:130-132
[3] 趙宏偉,秦昌明.基于B/S 3層體系結構的軟件設計方法研究[J].實驗技術與管理,2011.7:64-66
[4] 嚴悍,張宏,許滿武.基于角色訪問控制對象建模及實現[J].計算機學報,2000.23(10):1064-1071
[5] 蔣瑋,胡仁杰.基于角色的訪問控制模型在實驗室教學管理系統中的應用[J].實驗室研究與探索,2007.6:4-6
[6] 皮之軍,李建海,于敏等.開放式實驗教學模式的研究與探索[J].實驗技術與管理,2010.27(5):27-29
[7] 張勇,劉軍山,黃啟來.實驗教學模式創新與課堂教學設計[J].實驗技術與管理,2010.27(6):15-17
[8] 田海梅,張燕.基于任務驅動的計算機專業課教學模式[J].實驗技術與管理,2011.5:145-147
[9] 毛玉萃,趙植武.校內IT項目實踐模式的探索[J].實驗室研究與探索,2007.26(3):103-104
[10] 蔡曉.高校實驗室MIS分析與設計[J].實驗技術與管理,2001.18(6):35-37