歐陽元東



摘要:三層架構開發模式不易理解,為解決學生掌握困難問題,筆者通過類比法講授三層架構相關知識,把三層架構的用戶界面層、業務邏輯層、數據訪問層三層類比成飯店的用戶點菜,服務員處理菜單,廚師煮飯菜來講授三層架構理論知識,通過在VisuaIStudi02013平臺下創建實例實現基于三層架構間信息傳遞完成用戶登錄功能來講授三層軟件開發技能技術。
關鍵詞:三層架構;信息傳遞;ASP.NET
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)09-0079-02
1 問題
目前,MVC是軟件開發使用的一種時髦框架,是web應用程序的一種時尚開發方式,它將Web應用程序大致分割成3個主要單元,用戶界面層,業務邏輯層,數據訪問層。但是,筆者在講授ASP.NET課程的MVC開發模式時,學生問我,老師能講解一下,在MVC模式中,信息是如何從數據庫被傳送到網頁,而網頁信息(如學生注冊信息)如何傳遞并寫人數據庫中的?為了解決學生的提問,我決定拋開MVC深奧理論知識的講解方式,而是從教學角度,采用類比方式,立足中職生的基礎,通過手動編程實現三層架構間的信息傳遞,盡量讓學生比較輕易理解三層架構的設計思想,從而讓學生更好地掌握MVC的程序開發模式。
2 三層架構思想的理解
三層架構就是在系統開發過程中根據代碼的不同功能,分別對進行數據信息存儲與類對象調用,對于開發復雜軟件系統具有分工明確,條理清晰,易于調試,可擴展性強的優點。它通常分為用戶界面層、業務邏輯層、數據訪問層,有時還包括實體層和公共通用層。
數據訪問層,一般在該層實現基本的數據庫增刪改查的方法,不會出現在業務邏輯代碼。也就是說不面向業務處理。它主要實現soL及SQL組合的類封裝。
業務邏輯層,編寫業務邏輯代碼,根據用戶的需求決定如何調用數據訪問層的方法,不能出現任何soL語句及數據訪問代碼。它功能是處理業務邏輯,傳遞數據信息。它可以調用數據訪問層中類的方法,也可以調用用戶界面層類的方法。它是溝通數據訪問層與用戶界面層之間的橋梁。
用戶界面層,編寫獲取用戶操作信息、數據驗證、數據展示代碼。只能調用業務邏輯層的類方法,不能調用數據訪問層類的方法。該層封裝的對象向業務邏輯層傳遞,解析對象后展示數據信息。
根據系統的需求,往往需要開發公共通用層,該層一般是系統通用的輔助類和工具方法,如數據庫訪問工具方法,數據校驗方法,緩存處理、加密處理方法。
實體層是面向每個數據庫的每個表編寫的類,類中往往只有對應數據表中的字段的類屬性。一般是多少個數據表就對應多少個實體類。
三層架構類似于飯店工作流程,顧客跟前臺服務員進行點菜(即表現層與業務邏輯層的交互),服務員把菜單提交給廚師(即業務邏輯層與數據訪問層的交互)。廚師根據菜單去取食材并做菜(類似于數據訪問層讀寫數據庫),這中間顧客不與廚師直接發生關系。實體層類似于廚房做好的飯菜,會跟顧客、服務員、廚師和食物原材料發生關系。
3 用戶登錄功能的ASP.NET三層架構手動編程實現
筆者手動編程實現用戶登錄功能來體驗ASP.NET三層架構優越和魅力。
3.1 數據庫創建
在sql server中創建userLoginDB。數據表userLoginTb有三個字段,分別是id,int類型,自動增長,主鍵。userName,nchar(20)類型,存放用戶姓名。Pwd,nchar(20)類型,存放用戶密碼。此操作類似于飯店準備食物原材料。
3.2 創建項目ModuleDemo.搭建三層基本結構
打開Visual Studi0 2010開發平臺,新建解決方案Modul-eDemo,同時添加數據訪問層類庫(存放類的文件夾)ModuleDe-moDAL。右擊解決方案ModuleDemo,添加業務邏輯層類庫ModuleDemoBLL。右擊解決方案ModuleDemo,添加用戶界面層ASP.NET空web應用程序ModuleDemoUI。右擊解決方案ModuleDemo.添加實體層Moduel。右擊解決方案ModuleDemo,添加公共通用層Common。
3.3 在Common層中添加公共數據訪問工具類
把工具類SqlHelper復制到Common層中,并添加引用Sys-tem.Configuration和添加命名空間using System.Configuration,SqlHelper所在命名空間。最后在解決方案里找到Web.Config文件,增加連接數據庫字符串。
3.4 在Model層中添加表實體類
Model用于存放實體類的文件夾。在實際開發中有大量數據表,每個數據表需要進行增刪改查操作,每個實體類對接著一個數據表,因此需要創建多個實體類,這些實體類放在數據庫實體模型層里。
在Model層里添加“userLogin.cs”類文件,該類對接數據庫表userLoginTb,叫表實體類。實體類往往作為數據容器,在層間傳遞。實體類需要加public修飾符。
3.5 實現數據訪問層功能
添加ModuleDemoDAL層的引用,點擊添加引用,右側選擇解決方案,再選擇到Model。還要在ModuleDemoDAL層的類文件中添加相應類所在的命名空間( Modle)。
在ModuleDemoDAL中創建userLoginDal.cs類文件,為該類添加方法SelectUserLogin()方法。方法的關鍵代碼如下。
string sql=”select*from UserLogin where serName=@userName";
SqIParameter para= new SqlParameter(“@userName”, User-Name);
SqlDataReader reader= SqlHelper.ExecuteReader(sql, pa-ra》
如果reader.Read0結果為TRUE,則把結果取出來放在user對象中。既把ID號保存在user. ID中,用戶賬號保存在user.UserName中。
SelectUserLogin()方法實現根據從用戶界面層的用戶姓名數據查詢對應的數據,把查詢到的數據保存在實體類對象中,返回值是實體對象類。
3.5 實現業務邏輯層功能
調用ModuleDemoDAL層中SelectUserLogin()方法獲取到數據庫中的數據后,接下來就可以在ModuleDemoBLL業務邏輯層來調用數據訪問層返回的數據,并返回給用戶界面層。業務邏輯層要對數據訪問層進行訪問,因此要在業務邏輯層添加對數據訪問層的引用,還要添加對Model層的引用。在邏輯業務層中添加類userLoginBIl。
創建業務邏輯類:public class UserLoginBIl
實例化數據訪問類:private UserLoginDal dal= new User-LoginDal0;
創建方法:public UserLogin GetUserLogin(string UserName)返回值為
return daI.SelectUserLogin(UserName).
3.6 實現用戶界面層功能
在用戶界面層ModuleDemoUI層中添加web窗體userLogin.aspx,設置好基本布局,css樣式。用戶界面層調用業務邏輯層,因此要先添加對業務層和實體模型層的引用及引入相應的命名空間。
在登錄按鈕中添加Client事件。事件關鍵代碼主要是完成界面用戶數據與業務邏輯層傳過來的數據比較,比較結果為TRUE這進入下一個Web界面。否則重新刷新userLogin.aspx。實例化業務邏輯層的類,用來傳遞數據訪問層讀取的用戶姓名和用戶密碼的信息。在登錄點擊事件中,先接收用戶姓名,用戶密碼接著判斷用戶姓名和用戶密碼是否為空。若為空,則提示用戶名密碼不為空。然后判斷用戶名和密碼是否與業務邏輯層傳過來的用戶名密碼是否一致。是則保存用戶名保存在客戶端的Session中同時跳轉到下一個Web頁面。
public UserLoginBlI bll= new UserLoginBIIO;
string userName= txtUserName.Text.Trim0;
string pwd= txtP,^rd.Text.Trim0;
if (String.IsNullOrEmpty(userName)ll String.IsNullOrEmpty(pwd))
Response.Write(”alert('用戶名密碼不為空1 ')”);
elsef userLogin user= blI.GetUserLogin(userName);
if (user!= null)( if (user.Pwd==pwd){
Session[”UserName”]=user.UserName;
Re-sponse. Redirect(”登錄成果后的web頁?UserName=”+user-Name);}
把用戶界面層UI設置為啟動項,并設置相關頁為起始頁,最后右擊userLogin.aspx頁面,選擇在瀏覽器中查看。
4 結束語
通過上述實例可以讓我們知道,三層架構中,層與層之間是層層調用的關系,用戶界面層調用業務邏輯層,通過業務邏輯層調用數據訪問層的方法返回數據,在數據訪問層中從數據源獲取數據并封裝到實體類的對象中,依次將對象返回到用戶表現層。本實例具有普遍性,只需要在三層中任意增加類就能實現不同的功能,比如用戶信息修改,用戶信息刪除,用戶信息增加,用戶信息查詢等功能。當然,筆者通過類比的方法,學生比較容易地理解了三層架構理論知識,也為教師提供了一種可參考的講授課程思路。
參考文獻:
[1]郭宏錦.基于B/S架構的教師信息管理系統設計與實現[Jl-電腦編程技巧與維護,2016(14):74-76.
[2]陳煥彬.淺談.NET三層架構在系統開發中的應用[J].電腦與信息技術,2016,24(5):45-47.
[3]徐照興.ASP.NET就業實例教程[EB/OL].https://edu.csdn.net/combo/detail/721.
【通聯編輯:光文玲】