三層架構(gòu):基礎(chǔ)知識(shí)

三層架構(gòu)剛學(xué)一星期,有點(diǎn)迷糊。對(duì)于三層我左思右想,如何理清思路?如何與實(shí)際生活聯(lián)系?今天稍微簡(jiǎn)單的整理了一下思路。

一、典型三層架構(gòu)應(yīng)用場(chǎng)景。

服務(wù)員:只管接待客人;

廚師:只管做客人點(diǎn)的菜;

采購(gòu)員:只管按客人點(diǎn)菜的要求采購(gòu)食材;

他們各負(fù)其職,服務(wù)員不用了解廚師如何做菜,不用了解采購(gòu)員如何采購(gòu)食材;廚師不用知道服務(wù)員接待了哪位客人,不用知道采購(gòu)員如何采購(gòu)食材;同樣,采購(gòu)員不用知道服務(wù)員接待了哪位客人,不用知道廚師如何做菜。

二、什么是三層架構(gòu)?

表現(xiàn)層(view視圖層):主要是指用戶交互的界面。用于接收用戶輸入的數(shù)據(jù)和顯示處理后用戶需要的數(shù)據(jù)。簡(jiǎn)單說(shuō),給用戶看,展示的就是一個(gè)界面,如aspx\html

業(yè)務(wù)邏輯層(control控制層):dal業(yè)務(wù)邏輯具體包含:驗(yàn)證、計(jì)算、業(yè)務(wù)規(guī)則等等。主要實(shí)現(xiàn)對(duì)數(shù)據(jù)的增、刪、改、查(主要是ado.net內(nèi)容)。

實(shí)體層(model層):用于便于層和層之間的數(shù)據(jù)傳遞.實(shí)際上是對(duì)應(yīng)著數(shù)據(jù)庫(kù)里的每張表的,我們把表里的字段封裝在1個(gè)實(shí)體對(duì)象里 當(dāng)你想用哪個(gè)字段 你就就通過(guò)該實(shí)體對(duì)象的get() set() 把那個(gè)字段提取出來(lái)。

注意:1)Model層對(duì)應(yīng)的是類、及字段,和數(shù)據(jù)庫(kù)一一對(duì)應(yīng)。

2)數(shù)據(jù)庫(kù)對(duì)應(yīng)的是表及字段

3)內(nèi)存就是一個(gè)對(duì)象,程序中的一個(gè)對(duì)象,就是數(shù)據(jù)表中的某一行數(shù)據(jù)

三、層框架原理

1、用戶在界面視圖層,輸入內(nèi)容,例如把用戶名,密碼等傳到控制層dal

2、dal控制層調(diào)用增刪改查的方法,實(shí)現(xiàn)增刪改查(實(shí)質(zhì)用的是ado.net)。

3、運(yùn)行之后,把數(shù)據(jù)存在內(nèi)存中,再經(jīng)過(guò)cpu處理,跟數(shù)據(jù)庫(kù)處理。

四、三層框架搭建實(shí)操

1、搭建Model層

第一步:創(chuàng)建一個(gè)model文件夾

第二步:拷入model.base

第三步:在vs中添加model文件,并添加Model.Base.csproj文件

第四步:添加一個(gè)和我們數(shù)據(jù)庫(kù)對(duì)應(yīng)的一個(gè)model—新建項(xiàng)—windows—類庫(kù)—路徑放在剛才建好的model文件夾中,然后取名字,跟上面對(duì)應(yīng)(數(shù)據(jù)庫(kù)的名字,即和數(shù)據(jù)庫(kù)一一對(duì)應(yīng)),如Model.fuzhifang

注意:Model.fuzhifang是基于Model.Base的

第五步:Model層就建好了

2、搭建dal層

第一步:創(chuàng)建一個(gè)dal文件夾,需要兩個(gè)東西Dal.Base和Utility,拷入兩個(gè)類庫(kù)文件

第二步:在vs中新建dal文件

1)添加dal.base中的DAL.Base.csproj文件

2)添加utility中Utility.csproj文件

第三步:創(chuàng)建一個(gè)類庫(kù)文件,就是和數(shù)據(jù)庫(kù)進(jìn)行交互的,增刪改查全部都放在里面

dal—新建項(xiàng)—windows—類庫(kù)—路徑放在剛才建好的dal文件夾中,然后取名字,dal.fuzhifang注意:創(chuàng)建一個(gè)類庫(kù)文件—即數(shù)據(jù)庫(kù)中對(duì)應(yīng)的內(nèi)容

第四步:所有文件建好了

3、修改程序集路徑

知識(shí)點(diǎn):類庫(kù)文件生成之后就是一個(gè)程序集,所以就要生成一個(gè)程序集。

原因:每個(gè)類庫(kù)文件默認(rèn)生成程序集的位置是不同的,不利于維護(hù),所以最好每個(gè)類庫(kù)文件統(tǒng)一在統(tǒng)一目錄下,調(diào)用的時(shí)候比較方便。

操作方法如下:

model文件修改路徑(全部放在Reference中)

Model.Base—右鍵—屬性—生成—輸出路徑--E:\study\mvcthress\Reference\(選擇修改即可)

4、各層間引用

1)Model層

第一步:生成Model.Base

第二步:生成Model.fuzhifang中則需要引用Model.Base

操作:Model.fuzhifang-引用-右鍵-添加引用—?jiǎng)偛沤ê玫腞eference 中的com.Model.Base.dll

第三步:Model.fuzhifang生成程序集

操作:Model.fuzhifang-右鍵-屬性-輸出路徑--E:\study\mvcthress\Reference\(選擇修改即可)--重新生成

2)DAL層

第一步:生成Utility? 里面封裝了很多方法,比如說(shuō)過(guò)濾內(nèi)容,比如SQL注入,也需要設(shè)置路徑

更改路徑:Model.fuzhifang-右鍵-屬性-輸出路徑--E:\study\mvcthress\Reference\(選擇修改即可)

第二步:生成DAL.Base ,引入com.Utility.dll\com.Model.Base.dll

需要把下面5個(gè)文件加到自己的Reference中E:\study\mvcthress\Reference\

DAL.Base不需要寫SQL語(yǔ)句,把表的名稱做一個(gè)變量傳進(jìn)來(lái)

第三步:生成DAL.fuzhifang(自己新建),引入com.Model.Base.dll、com.Utility.dll、Model.fuzhifang.dll、com.DAL.Base.dll

3)web網(wǎng)站層,則全部都要引入

"Model.fuzhifang.dll" "com.DAL.Base.dll" "com.Model.Base.dll" "com.Utility.dll" "dal.fuzhifang.dll"

五、三層架構(gòu)優(yōu)劣勢(shì)

優(yōu)勢(shì):1,結(jié)構(gòu)清晰、耦合度低,2,可維護(hù)性高,可擴(kuò)展性高;3,利于開(kāi)發(fā)任務(wù)同步進(jìn)行;容易適應(yīng)需求變化

劣勢(shì):1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過(guò)中間層來(lái)完成。2、有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層中都增加相應(yīng)的代碼3、增加了代碼量,增加了工作量

六、結(jié)束語(yǔ)

“三層結(jié)構(gòu)”開(kāi)發(fā)模式,入門難度夠高,難于理解和學(xué)習(xí)。這是對(duì)于初學(xué)程序設(shè)計(jì)的人來(lái)說(shuō)的。以這種模式開(kāi)發(fā)出來(lái)的軟件,代碼量通常要稍稍多一些。這往往會(huì)令初學(xué)者淹沒(méi)在茫茫的代碼之中。望之生畏,對(duì)其產(chǎn)生反感,也是可以理解的……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,179評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,932評(píng)論 25 709
  • 自打《金瓶梅》問(wèn)世四百年以來(lái),在各種褒揚(yáng)和爭(zhēng)論聲中,其“奇書”的魅力愈加彰顯。它立足于現(xiàn)實(shí)市井生活,反映人間世情,...
    凌千一閱讀 3,397評(píng)論 3 16
  • O:做約定要求:必須要每個(gè)人都同意這么做,否則就不能叫約定。 處理違反約定步驟:1.告知真相,“我違反了和你的約定...
    鄧男神AI賦能教練閱讀 252評(píng)論 0 0

友情鏈接更多精彩內(nèi)容