三層架構(gòu)解析圖文教程

三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分三層,其主要的目的就是為了“高內(nèi)聚低耦合”的思想;架構(gòu)就是軟件架構(gòu),是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,主要用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì),它是對(duì)對(duì)存儲(chǔ)在Active Directory中的對(duì)象類(lèi)別和屬性的描述。
通過(guò)幾個(gè)問(wèn)題,來(lái)初步的學(xué)習(xí)一下三層架構(gòu)
1、什么是三層架構(gòu)
在軟件體系架構(gòu)設(shè)計(jì)中,分層式結(jié)構(gòu)是最常見(jiàn),也是最重要的一種結(jié)構(gòu)。三層從下至上分別為:數(shù)據(jù)訪(fǎng)問(wèn)層(DAL)、業(yè)務(wù)邏輯層(BLL)、表示層(UI)。
表現(xiàn)層(UI):展現(xiàn)給用戶(hù)的界面,即用戶(hù)在使用一個(gè)系統(tǒng)的時(shí)候他的所見(jiàn)所得。
業(yè)務(wù)邏輯層(BLL):對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理。
數(shù)據(jù)訪(fǎng)問(wèn)層(DAL):對(duì)數(shù)據(jù)庫(kù)的操作,數(shù)據(jù)的增添、刪除、修改、查找等。
2、應(yīng)用場(chǎng)景——為什么要用三層架構(gòu)?
解析:
不是所有的程序都需要使用三層架構(gòu),沒(méi)必要把簡(jiǎn)單的問(wèn)題復(fù)雜化。
先來(lái)說(shuō)一下解耦,舉例:修電腦
電腦硬盤(pán)壞了?我們要做的就是換掉電腦硬盤(pán)
內(nèi)存條壞了?只要換內(nèi)存條就好
這些部件出現(xiàn)問(wèn)題,都不會(huì)影響別的部件的正常使用,這個(gè)就是讓他們之間解耦。而和電腦不同的收音機(jī),任何部件壞了,都會(huì)影響別的部件,這個(gè)體現(xiàn)的就是他們之間的耦合比較高。從這個(gè)例子里面就可以看出解耦的好處,在三層中就是用的解耦的思想。
3、三層作用
數(shù)據(jù)訪(fǎng)問(wèn)層:從數(shù)據(jù)源加載(Select),寫(xiě)入(Insert/Update),刪除(Delete)數(shù)據(jù)。僅限于和數(shù)據(jù)源打交道,讓程序簡(jiǎn)單明了。
顯示層(UI):向用戶(hù)展現(xiàn)特定業(yè)務(wù)數(shù)據(jù),采集用戶(hù)的輸入信息和操作。
原則:用戶(hù)至上,兼顧簡(jiǎn)潔。
業(yè)務(wù)邏輯層(BLL):從DAL中獲取數(shù)據(jù),以供UI顯示用,從UI中獲取用戶(hù)指令和數(shù)據(jù),執(zhí)行業(yè)務(wù)邏輯、從UI中獲取用戶(hù)指令和數(shù)據(jù),通過(guò)DAL寫(xiě)入數(shù)據(jù)源。
4、各個(gè)層之間的關(guān)系:
UI->BLL->UI:UI提供數(shù)據(jù)指令到業(yè)務(wù)邏輯,若自己可以搞定,則直接反饋到UI
UI->BLL->DAL->BLL->DAL:UI提供用戶(hù)指令和數(shù)據(jù),提出請(qǐng)求并搜集一定的數(shù)據(jù)BLL,BLL處理不了時(shí)
5、三層聯(lián)系——引用
以登陸為例子,說(shuō)明三層之間的引用關(guān)系:
實(shí)體層(entity):定義的用戶(hù)名和密碼。
U層:向?qū)?yīng)的文本框中輸入賬號(hào)和密碼
B層:判斷U層輸入的賬號(hào)和密碼是否存在。
D層:連接數(shù)據(jù)庫(kù)的語(yǔ)句,查詢(xún)數(shù)據(jù)庫(kù)。
他們之間的聯(lián)系是通過(guò)實(shí)體傳遞來(lái)進(jìn)行的,。
DAL所在程序集不引用BLL和UI
BLL需要引用DAL
UI直接引用DAL,可能引用BLL
非常忌諱互相引用,為了避免這個(gè)問(wèn)題所有出現(xiàn)了實(shí)體層(業(yè)務(wù)數(shù)據(jù)模型,里面的數(shù)據(jù)和數(shù)據(jù)庫(kù)的有所差異)
應(yīng)用原則:DAL只提供基本的數(shù)據(jù)訪(fǎng)問(wèn),不包含任何業(yè)務(wù)相關(guān)的邏輯處理。UI只負(fù)責(zé)顯示和采集用戶(hù)操作,不包含任何的業(yè)務(wù)相關(guān)的邏輯處理,BLL負(fù)責(zé)處理業(yè)務(wù)邏輯,通過(guò)獲取UI傳來(lái)的操作指令,決定執(zhí)行業(yè)務(wù)邏輯,在需要訪(fǎng)問(wèn)數(shù)據(jù)源的時(shí)候直接交給DAL處理。處理完成后,返回必要數(shù)據(jù)給UI。
6、各層是如何調(diào)用的
表示層(UI)是用戶(hù)需要的界面,用戶(hù)有什么需求都是在這個(gè)上面進(jìn)行的改動(dòng),一旦有改動(dòng),首先U層向B層發(fā)送用戶(hù)請(qǐng)求的說(shuō)明,到達(dá)B層,B層再將U層的用戶(hù)請(qǐng)求發(fā)送到D層,D層接受到用戶(hù)請(qǐng)求的指令后,對(duì)它進(jìn)行處理,發(fā)送數(shù)據(jù)反饋到B層,B層再發(fā)給U層,將這一變化反應(yīng)出來(lái)。
舉例:
小菜和大鳥(niǎo)吃羊肉串的例子,小菜和大鳥(niǎo)就是用戶(hù),服務(wù)員為表示層(U層),烤肉師父為業(yè)務(wù)邏輯層(U層引用B層的方法或者參數(shù)),老板娘為數(shù)據(jù)訪(fǎng)問(wèn)層(D層),負(fù)責(zé)給烤肉師父從庫(kù)房拿烤串。大鳥(niǎo)點(diǎn)了羊肉串5串(參數(shù)),服務(wù)員把羊肉串5串(參數(shù)傳遞)傳遞給烤肉師父(數(shù)據(jù)請(qǐng)求),烤肉師父再傳遞給老板娘(對(duì)參數(shù)進(jìn)行處理),老板娘得到請(qǐng)求后,拿羊肉串給烤肉師父(數(shù)據(jù)反饋),烤肉師父將烤好的羊肉串給服務(wù)員(數(shù)據(jù)反饋),服務(wù)員再將5串羊肉串給大鳥(niǎo)(U層展現(xiàn)出來(lái)),他們之間通過(guò)調(diào)用來(lái)實(shí)現(xiàn)聯(lián)系。
7、三層PK二層二層架構(gòu):
業(yè)務(wù)邏輯簡(jiǎn)單,沒(méi)有真正的數(shù)據(jù)存儲(chǔ)層
三層架構(gòu):抽象出業(yè)務(wù)邏輯層,當(dāng)業(yè)務(wù)復(fù)雜到一定程度,當(dāng)數(shù)據(jù)存儲(chǔ)到相應(yīng)的存儲(chǔ)介質(zhì),數(shù)據(jù)存儲(chǔ)脫離開(kāi)業(yè)務(wù)邏輯,把業(yè)務(wù)邏輯脫離開(kāi)UI單獨(dú)存在,UI只需要呼叫業(yè)務(wù)訪(fǎng)問(wèn)層,就可以實(shí)現(xiàn)跟用戶(hù)的交互。
三層的好處:
1、開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;
2、可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn);
3、可以降低層與層之間的依賴(lài);
4、有利于標(biāo)準(zhǔn)化;
5、利于各層邏輯的復(fù)用。
6、結(jié)構(gòu)更加的明確
7、在后期維護(hù)的時(shí)候,極大地降低了維護(hù)成本和維護(hù)時(shí)間。
這幾點(diǎn)的中心思想就是“高內(nèi)聚,低耦合”,類(lèi)之間的耦合越弱,越有利于復(fù)用,一個(gè)處在弱耦合的類(lèi)被修改,不會(huì)對(duì)有關(guān)系的類(lèi)造成波及。
以上就是腳本之家為大家講解的對(duì)三層的簡(jiǎn)單認(rèn)識(shí), 想了解更多精彩教程請(qǐng)繼續(xù)關(guān)注腳本之家網(wǎng)站!
相關(guān)文章
ASP.NET架構(gòu)及開(kāi)發(fā)技術(shù)詳細(xì)講解教程
ASP.net構(gòu)架是可以用Microsoft(R)公司最新的產(chǎn)品 Visual Studio.net開(kāi)發(fā)環(huán)境進(jìn)行開(kāi)發(fā),ASP.net是基于通用語(yǔ)言的編譯運(yùn)行的程序,它的強(qiáng)大性和適應(yīng)性,可以使它運(yùn)行在Web2014-03-03如何構(gòu)建安全的網(wǎng)絡(luò)架構(gòu)的方案
這篇文章主要為大家介紹了如何構(gòu)建安全的網(wǎng)絡(luò)架構(gòu)的方案,網(wǎng)絡(luò)的安全核心,提供邊界安全防護(hù)和訪(fǎng)問(wèn)權(quán)限控制;網(wǎng)絡(luò)防病毒系統(tǒng):杜絕病毒傳播,提供全網(wǎng)同步的病毒更新和策略2014-09-25DCN校園網(wǎng)大二層架構(gòu)的設(shè)計(jì)方案
校園網(wǎng)是為學(xué)校師生提供快捷高效的教學(xué)、科研和綜合信息服務(wù)的網(wǎng)絡(luò),那么校園網(wǎng)大二層架構(gòu)是怎么設(shè)計(jì)的呢?請(qǐng)和腳本之家的小編一起來(lái)看一下2014-09-26fast無(wú)線(xiàn)路由器設(shè)置方法 FAST FW300R無(wú)線(xiàn)路由器設(shè)置圖解
下面介紹下Fast FW300R無(wú)線(xiàn)路由器寬帶共享上網(wǎng)的設(shè)置圖解。隨著網(wǎng)絡(luò)的發(fā)展無(wú)線(xiàn)路由器已近逐步的普及到家庭用戶(hù)中了。本網(wǎng)站主要介紹各類(lèi)路由器設(shè)置的圖解教程,下面開(kāi)始介2015-05-12怎么做網(wǎng)線(xiàn),網(wǎng)線(xiàn)水晶頭接法和線(xiàn)序(圖文詳解)
公司搬家了, 網(wǎng)線(xiàn)需要重新做下了,經(jīng)常不做網(wǎng)線(xiàn)了對(duì)水晶頭的排序都忘了,特從網(wǎng)上整理了一些資料,方便需要的朋友。2022-11-04水星MW300R 11N無(wú)線(xiàn)路由器的設(shè)置詳細(xì)方法 視頻圖文教程
水星MW300R無(wú)線(xiàn)路由器,該產(chǎn)品有高達(dá)300M的網(wǎng)絡(luò)帶寬和雙天線(xiàn)設(shè)計(jì),可以極大的滿(mǎn)足了對(duì)帶寬和信號(hào)覆蓋范圍要求比較苛刻的用戶(hù)的需要,市場(chǎng)參考價(jià)格僅售108元,無(wú)論是家庭、S2012-05-11- 根據(jù)網(wǎng)上的調(diào)查,發(fā)現(xiàn)還有很多電腦的新手朋友,還不知道原來(lái)電腦是可以給手機(jī)發(fā)短信的,下面小編將針對(duì)“如何用電腦給手機(jī)發(fā)短信”這一主題給大家詳細(xì)講解2011-12-31
- 談?wù)勎覀兊倪M(jìn)程間通信,上次我們談進(jìn)程是什么?進(jìn)程是社會(huì)的一個(gè)個(gè)人,每個(gè)都有自己的財(cái)產(chǎn),都有自己的空間,那么人需要通信嗎2012-05-11
添加局域網(wǎng)打印機(jī)(網(wǎng)絡(luò)打印機(jī))的圖文方法
辦公室里有一臺(tái)打印機(jī),連接到我的電腦上,其他同事在需要打印的時(shí)候,是不是必須把文件傳給我,讓我來(lái)打印呢?不是的,其他同事的電腦,只要連接到我的打印機(jī),在自己電腦2011-09-20如何設(shè)置開(kāi)機(jī)寬帶自動(dòng)連接 自動(dòng)寬帶連接設(shè)置圖文步驟
設(shè)置開(kāi)機(jī)時(shí)寬帶自動(dòng)連接(適用WindowsXP),很多人在使用包月的寬帶,都想一開(kāi)機(jī)就能自動(dòng)進(jìn)行寬帶連接。沒(méi)有購(gòu)買(mǎi)路由器或沒(méi)有將寬帶貓配置路由的朋友,其實(shí)也可以實(shí)現(xiàn)這一目2013-03-04