很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。
首先,先來看一下是哪三層。表示層(ui,user inte***ce),業務邏輯層(bll businesslogiclayer),資料訪問層(dal data access layer)。三層的劃分是物理上的劃分。
表示層(ui),這個最容易理解,就是使用者看到的主介面。
資料訪問層(dal),也不難理解,主要是負責資料的增刪改查。
業務邏輯層(bll),算是表示層和資料訪問層的橋梁吧。裡面主要存放一些業務流程。也就是邏輯。主要作用就是從dal中獲取資料,然後顯示到ui上。
舉乙個例子,三層結構可以用飯店的例項來理解。
ui指的是服務員,
bll是廚師,
dal是採購員。
在顧客的眼裡,只能看到服務員為他們服務。並不知道後台廚師和採購員
是如何做的。對於上述三種不同的角色來說,無論哪個環節出了問題,只需要更換乙個員工就可以照常營業的。
三層架構的優勢,還是職責分離,降低耦合。
接下來,看乙個使用三層結構的登陸例項。首先,需要宣告一下。這個例項中有很多
bug需要優化。不過對於展示三層的主要思想足夠了。僅僅是乙個例項而已。
資料庫表:
這是資料模組圖:
細心的讀者肯定會發現,除了
ui,bll,dal
這三個之外還有乙個
moudel
存在,這個
moudel
不屬於任何一層,只是為了更好地鏈結三層而存在的。這個類只儲存,與以上三類共同使用的東西。起乙個
協調的作用。
moudel
類,也就是實體類。
下面是這幾個層次的關係。
接下來需要看一下,他們分別是如何實現各自的分工的。
entity類:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.model
public string username
public string password
public string email }}
u層:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
namespace loginui
private void label1_click(object sender, eventargs e)
private void btnlogin_click(object sender, eventargs e)
catch (exception ex) //如果登陸有異常 則登陸失敗}}
}
b層:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.bll //業務邏輯層
else //如果資料庫中沒有該使用者名稱,則登陸失敗}}
}
d層:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace login.dal //資料訪問層
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data;
using system.data.sqlclient;
namespace login.dal
user.id=reader.getint32(0);
user.username=reader.getstring(1);
user.password=reader.getstring(2);
if(!reader.isdbnull(3)) //不要求一定要有email,也可以返回
}return user;}}
}}
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data.sqlclient;
namespace login.dal}}
}
接下來,看一下執行結果:
執行成功的情況:
輸入錯誤資訊:
雖然這是乙個很小的例項,但是用來學習三層卻足夠了。有寫的不好的地方可以理解。
總結:對於使用三層架構的程式來說,哪層出錯改**。極大程度的降低了系統的耦合性。當然,具有層次的程式,維護起來必然要方便許多。
C 三層架構登陸例項
很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。首先,先來看一下是哪三層。表示層 ui,user inte ce 業務邏輯層 bll businesslogiclayer 資料訪問層 dal ...
三層登陸例項
在理論篇我們已經知道了,實體類作為三層之間的傳遞和處理物件 封裝引數 在系統中三層建立對實體類的引用,上層建立對下層的引用 ui bll dal。1 系統說明 功能 以機房收費系統的資料庫 user info 表為基礎實現基本的系統登陸,如果登陸成功則彈出提示框顯示登入成功,否則則顯示 使用者名稱和...
c mysql三層架構例項 三層架構例項
一 概要 這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。二 demo 1 實現語言 vb.net 2 需求 學校機房收費系統 中的乙個功能 操作員為學...