ASP.Net三层架构
一、三層架構(gòu)簡述
文章目錄
- 一、三層架構(gòu)簡述
- 1、三層架構(gòu)的概念
- 2、三層架構(gòu)的組成
- 3、三層架構(gòu)的優(yōu)勢
- 二、模型層
- 三、數(shù)據(jù)訪問層
- 四、業(yè)務(wù)邏輯層
- 五、表現(xiàn)層
1、三層架構(gòu)的概念
(1)生活場景:
A、班級管理:班級中有不同的班委、各個班委有不同的崗位和職責(zé),所有
的班委對班級的管理方式和態(tài)度決定了班級最終的形態(tài)和成果。
B、企業(yè)管理:企業(yè)中有不同的部門、各個部門有不同的業(yè)務(wù)和職責(zé)、所有
的部門對企業(yè)工作態(tài)度決定了企業(yè)最終的形態(tài)和成果。
(2)項(xiàng)目層面:
就是使用三個(多個)項(xiàng)目結(jié)合起來開發(fā)出一個應(yīng)用系統(tǒng)。下層項(xiàng)目為上層項(xiàng)
目提供了接口(說白了就是可以從上層類訪問下層類的方法),并且將結(jié)果返回
到上層。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
2、三層架構(gòu)的組成
Asp.net站點(diǎn)的設(shè)計開發(fā)中,通常采用三層架構(gòu)的設(shè)計,三層架構(gòu)包括:數(shù)據(jù)訪問層-DAL、業(yè)務(wù)邏輯層-BLL、表現(xiàn)層-UI。
(1)數(shù)據(jù)訪問層–DAL
A、概念:封裝了所有與數(shù)據(jù)庫的交互操作。數(shù)據(jù)交互包括增、刪、改、查
數(shù)據(jù)訪問層就針對每個數(shù)據(jù)表提供增、刪、改、查操作,不做業(yè)務(wù)邏輯的判斷。
B、應(yīng)用:類似于企業(yè)中的財務(wù)部門、只做薪酬的發(fā)放,不做企業(yè)員工績效
的審核。
(2)業(yè)務(wù)邏輯層–BLL
A、概念:封裝了所有與業(yè)務(wù)的交互操作,對業(yè)務(wù)具體問題進(jìn)行邏輯判斷與
執(zhí)行操作。業(yè)務(wù)操作形式包括業(yè)務(wù)場景判定、業(yè)務(wù)執(zhí)行條件管理、業(yè)務(wù)執(zhí)行結(jié)果
封裝。
B、應(yīng)用:類似于于企業(yè)中技術(shù)部、市場部的管理者對下屬員工的工作進(jìn)行
評審。
(3)表現(xiàn)層–UI
A、概念:表現(xiàn)層又稱作UI層,位于三層架構(gòu)的最上層,與用戶直接溝通。
換句話說表現(xiàn)層就是實(shí)現(xiàn)用戶界面功能,將用戶的需求傳達(dá)和反饋、保證用戶的
體驗(yàn)。
B、應(yīng)用:類似于企業(yè)中各個員工最終在工資卡上當(dāng)月發(fā)放的薪水金額。
3、三層架構(gòu)的優(yōu)勢
(1)適應(yīng)變化、利于維護(hù):項(xiàng)目需求往往隨市場的變化而發(fā)生變化,三層架構(gòu)通過將各功
能模塊分離,提高了項(xiàng)目的可維護(hù)性和代碼的可重用性。
(2)適用于協(xié)作開發(fā)。目前,多數(shù)項(xiàng)目是團(tuán)隊多人協(xié)作開發(fā)的,有的負(fù)責(zé)界面設(shè)計,有的
負(fù)責(zé)數(shù)據(jù)庫操作模塊,三層架構(gòu)將各個功能模塊分離,各自負(fù)責(zé)各層的模塊,有利于協(xié)作
開發(fā)。
(3)主流趨勢,越來越多的企業(yè)在開發(fā)項(xiàng)目時采用三層架構(gòu)作為項(xiàng)目的基礎(chǔ)架構(gòu)。三層架
構(gòu)在將來會有更多的市場
二、模型層
1、模型層概念
模型層是三層(DAL數(shù)據(jù)訪問層、BLL業(yè)務(wù)邏輯層、UI表現(xiàn)層)的連接工具,是數(shù)據(jù)庫和應(yīng)用程序之間數(shù)據(jù)相互連接和傳輸?shù)拿浇?#xff0c;三層之間通過傳輸實(shí)體類對象來實(shí)現(xiàn)通信。
2、模型層命名
(1)常見的命名方式有Model、Models或解決方案+Model的格式命名。
(2)模型層是單個C#類庫項(xiàng)目,模型層中的實(shí)體類和數(shù)據(jù)表相互對應(yīng)。
3、實(shí)體類結(jié)構(gòu)
(1)實(shí)體類的編寫只需對應(yīng)數(shù)據(jù)表字段編寫出實(shí)體類的屬性即可。
(2)除了構(gòu)造方法,實(shí)體類通常不包括其他方法。
(3)由于實(shí)體類對象作為層之間數(shù)據(jù)通信的載體,常需要在不同的場景下行類型轉(zhuǎn)換,可以使用 Serializable 特性標(biāo)識實(shí)體類為可序列化,以便轉(zhuǎn)換實(shí)體類對象。
4、實(shí)體類編寫
[Serializable] 2 public class User 3 { 4 public int Id { get; set; } 5 6 public string Name { get; set; } 7 8 public string Phone { get; set; } 9 10 public int RoleId { get; set; } 11 12 public int ClassId { get; set; } 13 14 15 public User(int id, string name, string phone, int roleId, int classId) 16 { 17 Id = id; 18 Name = name; 19 Phone = phone; 20 RoleId = roleId; 21 ClassId = classId; 22 } 23 }三、數(shù)據(jù)訪問層
1、數(shù)據(jù)訪問層命名
(1)數(shù)據(jù)訪問層以DAL命名或以解決方案名稱+DAL的格式命名。
(2)數(shù)據(jù)庫中的每張表,在數(shù)據(jù)訪問層都有相對應(yīng)的數(shù)據(jù)訪問類。
2、數(shù)據(jù)訪問層編寫
數(shù)據(jù)新增 2 public static bool AddUser(User user){ 3 //數(shù)據(jù)庫操作 4 } 5 數(shù)據(jù)修改 6 public static bool UpdateUser(User user){ 7 //數(shù)據(jù)庫操作 8 } 9 數(shù)據(jù)刪除 10 public static bool DeleteUser(int Id){ 11 //數(shù)據(jù)庫操作 12 } 13 數(shù)據(jù)查詢 14 public static bool FindAllUser(){ 15 //數(shù)據(jù)庫操作 16 } 17 數(shù)據(jù)查詢‐指定條件 18 public static bool FindAllUserBy條件(條件參數(shù)){ 19 //數(shù)據(jù)庫操作 20 }四、業(yè)務(wù)邏輯層
1、業(yè)務(wù)邏輯層命名
(1)業(yè)務(wù)邏輯層通常命名為BLL或解決方案+BLL的格式命名
(2)每個實(shí)體類在業(yè)務(wù)邏輯層有對應(yīng)的業(yè)務(wù)邏輯類,類的格式為實(shí)體類名稱+Manager。
2、業(yè)務(wù)邏輯層編寫
數(shù)據(jù)新增 public static bool AddUser(User user){ 3 //DAL層調(diào)用 4 } 5 數(shù)據(jù)修改 6 public static bool UpdateUser(User user){ 7 //DAL層調(diào)用 8 } 9 數(shù)據(jù)刪除 10 public static bool DeleteUser(int Id){ 11 //DAL層調(diào)用 12 } 13 數(shù)據(jù)查詢 14 public static bool FindAllUser(){ 15 //DAL層調(diào)用 16 } 17 數(shù)據(jù)查詢‐指定條件 18 public static bool FindAllUserBy條件(條件參數(shù)){ 19 //DAL層調(diào)用 20 }五、表現(xiàn)層
1、表現(xiàn)層命名
(1)表現(xiàn)層通常命名為解決方案名稱+Web或解決方案+UI的格式命名
(2)每個實(shí)體類在業(yè)務(wù)邏輯層有對應(yīng)的業(yè)務(wù)邏輯類,類的格式為實(shí)體類名稱+Manager。
總結(jié)
以上是生活随笔為你收集整理的ASP.Net三层架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 萧红_拔剑-浆糊的传说_新浪博客
- 下一篇: 基于asp.net的电影院订票售票管理系