.net三層結(jié)構(gòu)初探分析第1/4頁(yè)
更新時(shí)間:2008年09月08日 20:42:54 作者:
最近開(kāi)始對(duì)架構(gòu)開(kāi)始了研究,當(dāng)然由于水平不夠,先研究了“簡(jiǎn)單的三層結(jié)構(gòu)”,至于“抽象工廠模式”放后面來(lái)研究吧!
對(duì)于學(xué)習(xí),我選擇了ACCESS數(shù)據(jù)庫(kù)+存儲(chǔ)過(guò)程的方式,這里記錄的是我個(gè)人的學(xué)習(xí)體會(huì)和筆記,與網(wǎng)上的可能有不同之處,觀點(diǎn)也不可能全部相同。
為什么使用三層結(jié)構(gòu):
首先要明確,三層結(jié)構(gòu)并不能使系統(tǒng)變快,實(shí)際上它會(huì)比起“單類結(jié)構(gòu)”慢。但越來(lái)越多人使用三層結(jié)構(gòu)開(kāi)發(fā),為啥呢?我在使用中,發(fā)現(xiàn)三層結(jié)構(gòu)十分清晰,一個(gè)類,一個(gè)文件你該放在哪層就放哪層,不會(huì)象單類結(jié)構(gòu)那樣全部放到App_Data中,造成結(jié)構(gòu)混亂。當(dāng)然,使用三層結(jié)構(gòu)的原因肯定不是那么膚淺,它對(duì)團(tuán)隊(duì)開(kāi)發(fā),系統(tǒng)可維護(hù)性有十分重要的意義。
三層結(jié)構(gòu)是代碼量增多,且代碼多重復(fù)?
確實(shí),三層代碼要寫(xiě)很多很白癡,很簡(jiǎn)單的代碼,比如MODEL這個(gè)實(shí)體類,如果你需要一個(gè)admin的實(shí)體,那么你需要寫(xiě)這樣的代碼:
public class admin
{
private int? _id;
private string _sname;
private string _spassword;
public int? id
{
set { _id = value; }
get { return _id; }
}
public string sname
{
set { _sname = value; }
get { return _sname; }
}
public string spassword
{
set { _spassword = value; }
get { return _spassword; }
}
}
而有多個(gè)實(shí)體的話,你要再寫(xiě)這些白癡代碼,為什么叫它白癡代碼?因?yàn)檫@些代碼你看著個(gè)表就可以寫(xiě)出來(lái)了。一次和老湯討論中,介紹了一個(gè)軟件,叫做“動(dòng)軟.Net代碼生成器”,這些白癡代碼讓這個(gè)軟件自己去生成吧!在這里也推薦大家用這個(gè)軟件,可以減少很多代碼量,BLL,DAL,WEB層的代碼都可以去生成,但要完全符合使用的話,還需要自己做些修改。
下面講講我理解的三層,先上張圖1:
WEB :界面層,其實(shí)就是一個(gè)網(wǎng)站。
BLL:邏輯處理層。
DAL:數(shù)據(jù)訪問(wèn)層
DBUtility:數(shù)據(jù)層基類
Model:實(shí)體類
Common:存放公用函數(shù)
圖2
這里需要講講那個(gè)DBUtility這個(gè)層,你可以看到有4個(gè)文件:
1、DbHelperOleDb.cs:用于SQL語(yǔ)句
2、DbHelperOleDbP.cs:用于存儲(chǔ)過(guò)程
3、DbHelperOleDbS.cs:用于具體實(shí)現(xiàn),比如“根據(jù)條件判斷是否存在”、“返回最大的ID”...
4、PubConstant.cs:數(shù)據(jù)庫(kù)連接代碼
為什么使用三層結(jié)構(gòu):
首先要明確,三層結(jié)構(gòu)并不能使系統(tǒng)變快,實(shí)際上它會(huì)比起“單類結(jié)構(gòu)”慢。但越來(lái)越多人使用三層結(jié)構(gòu)開(kāi)發(fā),為啥呢?我在使用中,發(fā)現(xiàn)三層結(jié)構(gòu)十分清晰,一個(gè)類,一個(gè)文件你該放在哪層就放哪層,不會(huì)象單類結(jié)構(gòu)那樣全部放到App_Data中,造成結(jié)構(gòu)混亂。當(dāng)然,使用三層結(jié)構(gòu)的原因肯定不是那么膚淺,它對(duì)團(tuán)隊(duì)開(kāi)發(fā),系統(tǒng)可維護(hù)性有十分重要的意義。
三層結(jié)構(gòu)是代碼量增多,且代碼多重復(fù)?
確實(shí),三層代碼要寫(xiě)很多很白癡,很簡(jiǎn)單的代碼,比如MODEL這個(gè)實(shí)體類,如果你需要一個(gè)admin的實(shí)體,那么你需要寫(xiě)這樣的代碼:
復(fù)制代碼 代碼如下:
public class admin
{
private int? _id;
private string _sname;
private string _spassword;
public int? id
{
set { _id = value; }
get { return _id; }
}
public string sname
{
set { _sname = value; }
get { return _sname; }
}
public string spassword
{
set { _spassword = value; }
get { return _spassword; }
}
}
而有多個(gè)實(shí)體的話,你要再寫(xiě)這些白癡代碼,為什么叫它白癡代碼?因?yàn)檫@些代碼你看著個(gè)表就可以寫(xiě)出來(lái)了。一次和老湯討論中,介紹了一個(gè)軟件,叫做“動(dòng)軟.Net代碼生成器”,這些白癡代碼讓這個(gè)軟件自己去生成吧!在這里也推薦大家用這個(gè)軟件,可以減少很多代碼量,BLL,DAL,WEB層的代碼都可以去生成,但要完全符合使用的話,還需要自己做些修改。
下面講講我理解的三層,先上張圖1:
WEB :界面層,其實(shí)就是一個(gè)網(wǎng)站。BLL:邏輯處理層。
DAL:數(shù)據(jù)訪問(wèn)層
DBUtility:數(shù)據(jù)層基類
Model:實(shí)體類
Common:存放公用函數(shù)
圖2這里需要講講那個(gè)DBUtility這個(gè)層,你可以看到有4個(gè)文件:
1、DbHelperOleDb.cs:用于SQL語(yǔ)句
2、DbHelperOleDbP.cs:用于存儲(chǔ)過(guò)程
3、DbHelperOleDbS.cs:用于具體實(shí)現(xiàn),比如“根據(jù)條件判斷是否存在”、“返回最大的ID”...
4、PubConstant.cs:數(shù)據(jù)庫(kù)連接代碼
相關(guān)文章
ASP.NET?Core?MVC中Form?Tag?Helpers用法介紹
這篇文章介紹了ASP.NET?Core?MVC中Form?Tag?Helpers的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
ASP.NET中防止頁(yè)面刷新造成表單重復(fù)提交執(zhí)行兩次操作
本文主要介紹在Session存儲(chǔ)唯一標(biāo)識(shí)Token,通過(guò)和后臺(tái)對(duì)比,以實(shí)現(xiàn)防止刷新提交表單的問(wèn)題。2016-04-04
asp.net Web Services上傳和下載文件(完整代碼)
隨著Internet技術(shù)的發(fā)展和跨平臺(tái)需求的日益增加,Web Services的應(yīng)用越來(lái)越廣,我們不但需要通過(guò)Web Services傳遞字符串信息,而且需要傳遞二進(jìn)制文件信息。2008-12-12
使用.NET?6開(kāi)發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建原理和思路
雖然TodoList是一個(gè)很簡(jiǎn)單的應(yīng)用,業(yè)務(wù)邏輯并不復(fù)雜,至少在這個(gè)系列文章中我并不想使其過(guò)度復(fù)雜,接下來(lái)通過(guò)本文給大家介紹使用.NET?6開(kāi)發(fā)TodoList應(yīng)用之領(lǐng)域?qū)嶓w創(chuàng)建思路及原理,需要的朋友可以參考下2021-12-12
asp.net下使用jQuery.AutoComplete完成仿淘寶商品搜索自動(dòng)完成功能(改進(jìn)了鍵盤(pán)上下選擇體驗(yàn))
其實(shí)這個(gè)已經(jīng)是個(gè)比較常見(jiàn)的功能了,網(wǎng)上也有很多人做過(guò)這個(gè)了,但是很多都是僅僅做了一些基本的網(wǎng)頁(yè)上自動(dòng)完成功能,沒(méi)有與具體的數(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

