.net三層結(jié)構(gòu)初探分析第2/4頁(yè)
更新時(shí)間:2008年09月08日 20:42:54 作者:
最近開始對(duì)架構(gòu)開始了研究,當(dāng)然由于水平不夠,先研究了“簡(jiǎn)單的三層結(jié)構(gòu)”,至于“抽象工廠模式”放后面來研究吧!
三層結(jié)構(gòu)要求不能跨層訪問,在圖1中大家可以看到,3個(gè)層之間是逐層依賴的。與普通“單類結(jié)構(gòu)”最明顯的區(qū)別是,這里舉一個(gè)添加數(shù)據(jù)的例子(偽代碼):
單類結(jié)構(gòu)(直接依賴于數(shù)據(jù)基類):
string sname = "阿會(huì)楠";
string surl = "sosuo8.com";
string strSql = "insert into admin(sname,surl) values('" + sname + "','" + surl + ')";
DB.exeSQL(strSql);
string surl = "sosuo8.com";
string strSql = "insert into admin(sname,surl) values('" + sname + "','" + surl + ')";
DB.exeSQL(strSql);
我想對(duì)于單類結(jié)構(gòu)來說,總是在WEB層拼湊SQL語句,然后調(diào)用數(shù)據(jù)操作類執(zhí)行SQL語句,這樣速度確實(shí)快一些。
看看三層結(jié)構(gòu):
web層:
string sname = "阿會(huì)楠";
string surl = "sosuo8.com";
Model.admin model = new Model.admin();//實(shí)體類
model.sname = sname;
mode.surl = surl:
BLL.admin bll = new BLL.admin();
bll.Add(model);
string surl = "sosuo8.com";
Model.admin model = new Model.admin();//實(shí)體類
model.sname = sname;
mode.surl = surl:
BLL.admin bll = new BLL.admin();
bll.Add(model);
BLL層:
public void Add(MODEL.admin model)
{
dal.Add(model);
}
{
dal.Add(model);
}
DAL層(需要依賴于DBUtility數(shù)據(jù)基類):
public void Add(Model.admin model)
{
string strSql = "insert into admin(sname,surl) values('" + model.sname + "','" + model.surl + "')":
DB.executeSQL(strSql);
}
{
string strSql = "insert into admin(sname,surl) values('" + model.sname + "','" + model.surl + "')":
DB.executeSQL(strSql);
}
Model實(shí)體類:
private string _sname;
private string _surl:
public string sname
{
set{_sname = value;}
get{return _sname};
}
public string surl
{
set{_surl = value;}
get{return _surl;}
}
private string _surl:
public string sname
{
set{_sname = value;}
get{return _sname};
}
public string surl
{
set{_surl = value;}
get{return _surl;}
}
你看出之間一層層的依賴關(guān)系了嗎?“單類結(jié)構(gòu)”直接就是WEB->DBUtility,而三層是WEB->BLL->DAL->DBUtility,MODEL作為實(shí)體類都可以不算一個(gè)層,COMMON也是,DBUtlity也是,它們只能算是把具有共同使用功能的代碼堆放在一起。所以,三層就是WEB(界面層)->BLL(邏輯處理層)->DAL(數(shù)據(jù)訪問層),并且是層層依賴。而后面引申出來的項(xiàng)目(COMMON,MODEL,DBUtlity),并不算層。按我理解是這樣,如果有什么理解錯(cuò)誤或不妥的地方歡迎指出,大家一起討論。
最好的學(xué)習(xí)方法就是看代碼,我寫了比較簡(jiǎn)單的給大家學(xué)習(xí)下:
相關(guān)文章
ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹
這篇文章介紹了ASP.NET?Core?MVC中Form?Tag?Helpers的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
ASP.NET中防止頁(yè)面刷新造成表單重復(fù)提交執(zhí)行兩次操作
本文主要介紹在Session存儲(chǔ)唯一標(biāo)識(shí)Token,通過和后臺(tái)對(duì)比,以實(shí)現(xiàn)防止刷新提交表單的問題。2016-04-04
asp.net Web Services上傳和下載文件(完整代碼)
隨著Internet技術(shù)的發(fā)展和跨平臺(tái)需求的日益增加,Web Services的應(yīng)用越來越廣,我們不但需要通過Web Services傳遞字符串信息,而且需要傳遞二進(jìn)制文件信息。2008-12-12
使用.NET?6開發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建原理和思路
雖然TodoList是一個(gè)很簡(jiǎn)單的應(yīng)用,業(yè)務(wù)邏輯并不復(fù)雜,至少在這個(gè)系列文章中我并不想使其過度復(fù)雜,接下來通過本文給大家介紹使用.NET?6開發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建思路及原理,需要的朋友可以參考下2021-12-12
asp.net下使用jQuery.AutoComplete完成仿淘寶商品搜索自動(dòng)完成功能(改進(jìn)了鍵盤上下選擇體驗(yàn))
其實(shí)這個(gè)已經(jīng)是個(gè)比較常見的功能了,網(wǎng)上也有很多人做過這個(gè)了,但是很多都是僅僅做了一些基本的網(wǎng)頁(yè)上自動(dòng)完成功能,沒有與具體的數(shù)據(jù)庫(kù)進(jìn)行聯(lián)動(dòng),我今天所介紹這個(gè)自動(dòng)完成的就是我修改的jQuery.AutoComplete+數(shù)據(jù)庫(kù)的一個(gè)解決方案。2010-05-05
asp.net button 綁定多個(gè)參數(shù)
asp.net button 綁定多個(gè)參數(shù)的代碼2008-11-11

