.net三層結(jié)構(gòu)初探分析第1/4頁
更新時間:2008年09月08日 20:42:54 作者:
最近開始對架構(gòu)開始了研究,當然由于水平不夠,先研究了“簡單的三層結(jié)構(gòu)”,至于“抽象工廠模式”放后面來研究吧!
對于學習,我選擇了ACCESS數(shù)據(jù)庫+存儲過程的方式,這里記錄的是我個人的學習體會和筆記,與網(wǎng)上的可能有不同之處,觀點也不可能全部相同。
為什么使用三層結(jié)構(gòu):
首先要明確,三層結(jié)構(gòu)并不能使系統(tǒng)變快,實際上它會比起“單類結(jié)構(gòu)”慢。但越來越多人使用三層結(jié)構(gòu)開發(fā),為啥呢?我在使用中,發(fā)現(xiàn)三層結(jié)構(gòu)十分清晰,一個類,一個文件你該放在哪層就放哪層,不會象單類結(jié)構(gòu)那樣全部放到App_Data中,造成結(jié)構(gòu)混亂。當然,使用三層結(jié)構(gòu)的原因肯定不是那么膚淺,它對團隊開發(fā),系統(tǒng)可維護性有十分重要的意義。
三層結(jié)構(gòu)是代碼量增多,且代碼多重復?
確實,三層代碼要寫很多很白癡,很簡單的代碼,比如MODEL這個實體類,如果你需要一個admin的實體,那么你需要寫這樣的代碼:
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; }
}
}
而有多個實體的話,你要再寫這些白癡代碼,為什么叫它白癡代碼?因為這些代碼你看著個表就可以寫出來了。一次和老湯討論中,介紹了一個軟件,叫做“動軟.Net代碼生成器”,這些白癡代碼讓這個軟件自己去生成吧!在這里也推薦大家用這個軟件,可以減少很多代碼量,BLL,DAL,WEB層的代碼都可以去生成,但要完全符合使用的話,還需要自己做些修改。
下面講講我理解的三層,先上張圖1:
WEB :界面層,其實就是一個網(wǎng)站。
BLL:邏輯處理層。
DAL:數(shù)據(jù)訪問層
DBUtility:數(shù)據(jù)層基類
Model:實體類
Common:存放公用函數(shù)
圖2
這里需要講講那個DBUtility這個層,你可以看到有4個文件:
1、DbHelperOleDb.cs:用于SQL語句
2、DbHelperOleDbP.cs:用于存儲過程
3、DbHelperOleDbS.cs:用于具體實現(xiàn),比如“根據(jù)條件判斷是否存在”、“返回最大的ID”...
4、PubConstant.cs:數(shù)據(jù)庫連接代碼
為什么使用三層結(jié)構(gòu):
首先要明確,三層結(jié)構(gòu)并不能使系統(tǒng)變快,實際上它會比起“單類結(jié)構(gòu)”慢。但越來越多人使用三層結(jié)構(gòu)開發(fā),為啥呢?我在使用中,發(fā)現(xiàn)三層結(jié)構(gòu)十分清晰,一個類,一個文件你該放在哪層就放哪層,不會象單類結(jié)構(gòu)那樣全部放到App_Data中,造成結(jié)構(gòu)混亂。當然,使用三層結(jié)構(gòu)的原因肯定不是那么膚淺,它對團隊開發(fā),系統(tǒng)可維護性有十分重要的意義。
三層結(jié)構(gòu)是代碼量增多,且代碼多重復?
確實,三層代碼要寫很多很白癡,很簡單的代碼,比如MODEL這個實體類,如果你需要一個admin的實體,那么你需要寫這樣的代碼:
復制代碼 代碼如下:
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; }
}
}
而有多個實體的話,你要再寫這些白癡代碼,為什么叫它白癡代碼?因為這些代碼你看著個表就可以寫出來了。一次和老湯討論中,介紹了一個軟件,叫做“動軟.Net代碼生成器”,這些白癡代碼讓這個軟件自己去生成吧!在這里也推薦大家用這個軟件,可以減少很多代碼量,BLL,DAL,WEB層的代碼都可以去生成,但要完全符合使用的話,還需要自己做些修改。
下面講講我理解的三層,先上張圖1:

BLL:邏輯處理層。
DAL:數(shù)據(jù)訪問層
DBUtility:數(shù)據(jù)層基類
Model:實體類
Common:存放公用函數(shù)

這里需要講講那個DBUtility這個層,你可以看到有4個文件:
1、DbHelperOleDb.cs:用于SQL語句
2、DbHelperOleDbP.cs:用于存儲過程
3、DbHelperOleDbS.cs:用于具體實現(xiàn),比如“根據(jù)條件判斷是否存在”、“返回最大的ID”...
4、PubConstant.cs:數(shù)據(jù)庫連接代碼
相關(guān)文章
asp.net使用WebAPI和EF框架結(jié)合實現(xiàn)數(shù)據(jù)的基本操作
這篇文章介紹了asp.net使用WebAPI和EF框架結(jié)合實現(xiàn)數(shù)據(jù)基本操作的案例,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04asp.net 數(shù)據(jù)庫連接類代碼(SQL)
asp.net數(shù)據(jù)庫連接類(SQL) 代碼,需要的朋友可以參考下。2010-03-03TreeView創(chuàng)建IHierarchicalDataSource類型的數(shù)據(jù)源實現(xiàn)
為TreeView創(chuàng)建IHierarchicalDataSource類型的數(shù)據(jù)源實現(xiàn)2009-01-01關(guān)于Asp.net頁面Page_Load被執(zhí)行兩次的問題分享
這篇文章介紹了關(guān)于Asp.net頁面Page_Load被執(zhí)行兩次的問題,有需要的朋友可以參考一下2013-09-09ASP.NET2.0緩存(Cache)技術(shù)深入理解
緩存技術(shù)是ASP.NET2.0非常重要的一個特性,它提供了一種非常好的本地數(shù)據(jù)緩存機制,從而有效的提高數(shù)據(jù)訪問的性能2012-11-11