国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ASP.NET的三層架構(gòu)信息傳遞策略解析與實現(xiàn)

2020-05-21 05:54歐陽元東
電腦知識與技術(shù) 2020年9期
關(guān)鍵詞:信息傳遞

歐陽元東

摘要:三層架構(gòu)開發(fā)模式不易理解,為解決學(xué)生掌握困難問題,筆者通過類比法講授三層架構(gòu)相關(guān)知識,把三層架構(gòu)的用戶界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層三層類比成飯店的用戶點菜,服務(wù)員處理菜單,廚師煮飯菜來講授三層架構(gòu)理論知識,通過在VisuaIStudi02013平臺下創(chuàng)建實例實現(xiàn)基于三層架構(gòu)間信息傳遞完成用戶登錄功能來講授三層軟件開發(fā)技能技術(shù)。

關(guān)鍵詞:三層架構(gòu);信息傳遞;ASP.NET

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2020)09-0079-02

1 問題

目前,MVC是軟件開發(fā)使用的一種時髦框架,是web應(yīng)用程序的一種時尚開發(fā)方式,它將Web應(yīng)用程序大致分割成3個主要單元,用戶界面層,業(yè)務(wù)邏輯層,數(shù)據(jù)訪問層。但是,筆者在講授ASP.NET課程的MVC開發(fā)模式時,學(xué)生問我,老師能講解一下,在MVC模式中,信息是如何從數(shù)據(jù)庫被傳送到網(wǎng)頁,而網(wǎng)頁信息(如學(xué)生注冊信息)如何傳遞并寫人數(shù)據(jù)庫中的?為了解決學(xué)生的提問,我決定拋開MVC深奧理論知識的講解方式,而是從教學(xué)角度,采用類比方式,立足中職生的基礎(chǔ),通過手動編程實現(xiàn)三層架構(gòu)間的信息傳遞,盡量讓學(xué)生比較輕易理解三層架構(gòu)的設(shè)計思想,從而讓學(xué)生更好地掌握MVC的程序開發(fā)模式。

2 三層架構(gòu)思想的理解

三層架構(gòu)就是在系統(tǒng)開發(fā)過程中根據(jù)代碼的不同功能,分別對進(jìn)行數(shù)據(jù)信息存儲與類對象調(diào)用,對于開發(fā)復(fù)雜軟件系統(tǒng)具有分工明確,條理清晰,易于調(diào)試,可擴展性強的優(yōu)點。它通常分為用戶界面層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層,有時還包括實體層和公共通用層。

數(shù)據(jù)訪問層,一般在該層實現(xiàn)基本的數(shù)據(jù)庫增刪改查的方法,不會出現(xiàn)在業(yè)務(wù)邏輯代碼。也就是說不面向業(yè)務(wù)處理。它主要實現(xiàn)soL及SQL組合的類封裝。

業(yè)務(wù)邏輯層,編寫業(yè)務(wù)邏輯代碼,根據(jù)用戶的需求決定如何調(diào)用數(shù)據(jù)訪問層的方法,不能出現(xiàn)任何soL語句及數(shù)據(jù)訪問代碼。它功能是處理業(yè)務(wù)邏輯,傳遞數(shù)據(jù)信息。它可以調(diào)用數(shù)據(jù)訪問層中類的方法,也可以調(diào)用用戶界面層類的方法。它是溝通數(shù)據(jù)訪問層與用戶界面層之間的橋梁。

用戶界面層,編寫獲取用戶操作信息、數(shù)據(jù)驗證、數(shù)據(jù)展示代碼。只能調(diào)用業(yè)務(wù)邏輯層的類方法,不能調(diào)用數(shù)據(jù)訪問層類的方法。該層封裝的對象向業(yè)務(wù)邏輯層傳遞,解析對象后展示數(shù)據(jù)信息。

根據(jù)系統(tǒng)的需求,往往需要開發(fā)公共通用層,該層一般是系統(tǒng)通用的輔助類和工具方法,如數(shù)據(jù)庫訪問工具方法,數(shù)據(jù)校驗方法,緩存處理、加密處理方法。

實體層是面向每個數(shù)據(jù)庫的每個表編寫的類,類中往往只有對應(yīng)數(shù)據(jù)表中的字段的類屬性。一般是多少個數(shù)據(jù)表就對應(yīng)多少個實體類。

三層架構(gòu)類似于飯店工作流程,顧客跟前臺服務(wù)員進(jìn)行點菜(即表現(xiàn)層與業(yè)務(wù)邏輯層的交互),服務(wù)員把菜單提交給廚師(即業(yè)務(wù)邏輯層與數(shù)據(jù)訪問層的交互)。廚師根據(jù)菜單去取食材并做菜(類似于數(shù)據(jù)訪問層讀寫數(shù)據(jù)庫),這中間顧客不與廚師直接發(fā)生關(guān)系。實體層類似于廚房做好的飯菜,會跟顧客、服務(wù)員、廚師和食物原材料發(fā)生關(guān)系。

3 用戶登錄功能的ASP.NET三層架構(gòu)手動編程實現(xiàn)

筆者手動編程實現(xiàn)用戶登錄功能來體驗ASP.NET三層架構(gòu)優(yōu)越和魅力。

3.1 數(shù)據(jù)庫創(chuàng)建

在sql server中創(chuàng)建userLoginDB。數(shù)據(jù)表userLoginTb有三個字段,分別是id,int類型,自動增長,主鍵。userName,nchar(20)類型,存放用戶姓名。Pwd,nchar(20)類型,存放用戶密碼。此操作類似于飯店準(zhǔn)備食物原材料。

3.2 創(chuàng)建項目ModuleDemo.搭建三層基本結(jié)構(gòu)

打開Visual Studi0 2010開發(fā)平臺,新建解決方案Modul-eDemo,同時添加數(shù)據(jù)訪問層類庫(存放類的文件夾)ModuleDe-moDAL。右擊解決方案ModuleDemo,添加業(yè)務(wù)邏輯層類庫ModuleDemoBLL。右擊解決方案ModuleDemo,添加用戶界面層ASP.NET空web應(yīng)用程序ModuleDemoUI。右擊解決方案ModuleDemo.添加實體層Moduel。右擊解決方案ModuleDemo,添加公共通用層Common。

3.3 在Common層中添加公共數(shù)據(jù)訪問工具類

把工具類SqlHelper復(fù)制到Common層中,并添加引用Sys-tem.Configuration和添加命名空間using System.Configuration,SqlHelper所在命名空間。最后在解決方案里找到Web.Config文件,增加連接數(shù)據(jù)庫字符串。

3.4 在Model層中添加表實體類

Model用于存放實體類的文件夾。在實際開發(fā)中有大量數(shù)據(jù)表,每個數(shù)據(jù)表需要進(jìn)行增刪改查操作,每個實體類對接著一個數(shù)據(jù)表,因此需要創(chuàng)建多個實體類,這些實體類放在數(shù)據(jù)庫實體模型層里。

在Model層里添加“userLogin.cs”類文件,該類對接數(shù)據(jù)庫表userLoginTb,叫表實體類。實體類往往作為數(shù)據(jù)容器,在層間傳遞。實體類需要加public修飾符。

3.5 實現(xiàn)數(shù)據(jù)訪問層功能

添加ModuleDemoDAL層的引用,點擊添加引用,右側(cè)選擇解決方案,再選擇到Model。還要在ModuleDemoDAL層的類文件中添加相應(yīng)類所在的命名空間( Modle)。

在ModuleDemoDAL中創(chuàng)建userLoginDal.cs類文件,為該類添加方法SelectUserLogin()方法。方法的關(guān)鍵代碼如下。

string sql=”select*from UserLogin where serName=@userName";

SqIParameter para= new SqlParameter(“@userName”, User-Name);

SqlDataReader reader= SqlHelper.ExecuteReader(sql, pa-ra》

如果reader.Read0結(jié)果為TRUE,則把結(jié)果取出來放在user對象中。既把ID號保存在user. ID中,用戶賬號保存在user.UserName中。

SelectUserLogin()方法實現(xiàn)根據(jù)從用戶界面層的用戶姓名數(shù)據(jù)查詢對應(yīng)的數(shù)據(jù),把查詢到的數(shù)據(jù)保存在實體類對象中,返回值是實體對象類。

3.5 實現(xiàn)業(yè)務(wù)邏輯層功能

調(diào)用ModuleDemoDAL層中SelectUserLogin()方法獲取到數(shù)據(jù)庫中的數(shù)據(jù)后,接下來就可以在ModuleDemoBLL業(yè)務(wù)邏輯層來調(diào)用數(shù)據(jù)訪問層返回的數(shù)據(jù),并返回給用戶界面層。業(yè)務(wù)邏輯層要對數(shù)據(jù)訪問層進(jìn)行訪問,因此要在業(yè)務(wù)邏輯層添加對數(shù)據(jù)訪問層的引用,還要添加對Model層的引用。在邏輯業(yè)務(wù)層中添加類userLoginBIl。

創(chuàng)建業(yè)務(wù)邏輯類:public class UserLoginBIl

實例化數(shù)據(jù)訪問類:private UserLoginDal dal= new User-LoginDal0;

創(chuàng)建方法:public UserLogin GetUserLogin(string UserName)返回值為

return daI.SelectUserLogin(UserName).

3.6 實現(xiàn)用戶界面層功能

在用戶界面層ModuleDemoUI層中添加web窗體userLogin.aspx,設(shè)置好基本布局,css樣式。用戶界面層調(diào)用業(yè)務(wù)邏輯層,因此要先添加對業(yè)務(wù)層和實體模型層的引用及引入相應(yīng)的命名空間。

在登錄按鈕中添加Client事件。事件關(guān)鍵代碼主要是完成界面用戶數(shù)據(jù)與業(yè)務(wù)邏輯層傳過來的數(shù)據(jù)比較,比較結(jié)果為TRUE這進(jìn)入下一個Web界面。否則重新刷新userLogin.aspx。實例化業(yè)務(wù)邏輯層的類,用來傳遞數(shù)據(jù)訪問層讀取的用戶姓名和用戶密碼的信息。在登錄點擊事件中,先接收用戶姓名,用戶密碼接著判斷用戶姓名和用戶密碼是否為空。若為空,則提示用戶名密碼不為空。然后判斷用戶名和密碼是否與業(yè)務(wù)邏輯層傳過來的用戶名密碼是否一致。是則保存用戶名保存在客戶端的Session中同時跳轉(zhuǎn)到下一個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設(shè)置為啟動項,并設(shè)置相關(guān)頁為起始頁,最后右擊userLogin.aspx頁面,選擇在瀏覽器中查看。

4 結(jié)束語

通過上述實例可以讓我們知道,三層架構(gòu)中,層與層之間是層層調(diào)用的關(guān)系,用戶界面層調(diào)用業(yè)務(wù)邏輯層,通過業(yè)務(wù)邏輯層調(diào)用數(shù)據(jù)訪問層的方法返回數(shù)據(jù),在數(shù)據(jù)訪問層中從數(shù)據(jù)源獲取數(shù)據(jù)并封裝到實體類的對象中,依次將對象返回到用戶表現(xiàn)層。本實例具有普遍性,只需要在三層中任意增加類就能實現(xiàn)不同的功能,比如用戶信息修改,用戶信息刪除,用戶信息增加,用戶信息查詢等功能。當(dāng)然,筆者通過類比的方法,學(xué)生比較容易地理解了三層架構(gòu)理論知識,也為教師提供了一種可參考的講授課程思路。

參考文獻(xiàn):

[1]郭宏錦.基于B/S架構(gòu)的教師信息管理系統(tǒng)設(shè)計與實現(xiàn)[Jl-電腦編程技巧與維護(hù),2016(14):74-76.

[2]陳煥彬.淺談.NET三層架構(gòu)在系統(tǒng)開發(fā)中的應(yīng)用[J].電腦與信息技術(shù),2016,24(5):45-47.

[3]徐照興.ASP.NET就業(yè)實例教程[EB/OL].https://edu.csdn.net/combo/detail/721.

【通聯(lián)編輯:光文玲】

猜你喜歡
信息傳遞
計算機網(wǎng)絡(luò)安全中存在的問題及防范對策