三层架构秘籍
前言
? ? ? ? 關(guān)于三層架構(gòu),你想知道的,都在這里。
目錄
一、什么是三層架構(gòu)
二、三層架構(gòu)如何聯(lián)系在一起
三、為什么要使用三層架構(gòu)
四、三層架構(gòu)與兩層的區(qū)別
一、什么是三層架構(gòu)
? ? ? ?定義:
UI(表現(xiàn)層):?主要是指與用戶交互的界面。用于接收用戶輸入的數(shù)據(jù)和顯示處理后用戶需要的數(shù)據(jù)。
BLL:(業(yè)務(wù)邏輯層):?UI層和DAL層之間的橋梁。實(shí)現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯具體包含:驗(yàn)證、計(jì)算、業(yè)務(wù)規(guī)則等等。
DAL:(數(shù)據(jù)訪問層):?與數(shù)據(jù)庫打交道。主要實(shí)現(xiàn)對數(shù)據(jù)的增、刪、改、查。將存儲在數(shù)據(jù)庫中的數(shù)據(jù)提交給業(yè)務(wù)層,同時將業(yè)務(wù)層處理的數(shù)據(jù)保存到數(shù)據(jù)庫。(當(dāng)然這些操作都是基于UI層的。用戶的需求反映給界面(UI),UI反映給BLL,BLL反映給DAL,DAL進(jìn)行數(shù)據(jù)的操作,操作后再一一返回,直到將用戶所需數(shù)據(jù)反饋給用戶)
二、三層架構(gòu)如何聯(lián)系在一起
? ? ? ? 經(jīng)典用一個廚師案例輔助理解
? ? ? ?當(dāng)你某天去飯店吃飯,服務(wù)員拿到你們的菜單,菜單要求青椒炒肉,趕巧店里沒有青椒了,那么此時采購員就發(fā)揮作用了,采購員出去買青椒,交給廚師,廚師做好菜,交給服務(wù)員,服務(wù)員將菜端給我們,這就是完成了一個流程。如果當(dāng)客人對菜有要求,比如說青椒炒肉我要朝五花肉,那你是不是的更新一下菜單,那么這個菜單就可以是我們的實(shí)體類,通過實(shí)體類的參數(shù)傳遞完成對客人要求的滿足,因?yàn)榭腿瞬豢赡苊總€人都吃一樣的口味,有的人要辣,有的人要甜,就是這個道理。
?實(shí)體類層(Entity):它不屬于三層中的任何一層,但是它是必不可少的一層。
? ? ? ? 實(shí)體類層主要作用就是將生活中的常見事物封裝稱為一個類,那么我要用的時候,調(diào)用他的屬性即可。
? ? ? ? 實(shí)體類在三層之間做一個傳遞數(shù)據(jù)的作用,比如我買一件衣服,這件衣服的價(jià)格,尺寸,材料等等都給我封裝到衣服類中,我要看的時候我在UI界面能看到,搜索相關(guān)條件能搜到,并且能夠購買,數(shù)據(jù)庫那邊也有一一對應(yīng)的字段,我的一個類就可以看做是數(shù)據(jù)庫中的表。
? ? ? ? 三層之間的聯(lián)系主要還是看他們之間的引用,例如我們買衣服,我們在網(wǎng)上買衣服是不是只關(guān)心,衣服好不好看,便宜不,尺寸合身不,等等,不會去關(guān)心我買衣服是怎么操作的,以及數(shù)據(jù)是怎么來的,那么當(dāng)我發(fā)送了搜尋衣服,比如搜一件男裝冬天,那么請求就會發(fā)送得到業(yè)務(wù)邏輯層,邏輯層去處理我的請求,把請求發(fā)送到數(shù)據(jù)庫,數(shù)據(jù)訪問層找到衣服,返回衣服,衣服返回到業(yè)務(wù)邏輯層,邏輯層再做他相應(yīng)的處理之后,就到了我們的電腦屏幕前面。這就是整個三層架構(gòu)的聯(lián)系過程,且這三者是互不干擾,存數(shù)據(jù)的只存數(shù)據(jù),包裝的就只做包裝,就像工廠流水線一樣,這樣效率才高。
三、為什么要使用三層架構(gòu)
? ? ? ? 其主要目的就是解耦,讓三層之間的業(yè)務(wù)關(guān)系耦合度降低,每一層就只做自己的事情,提高效率,且就算你有一層的東西發(fā)生了變化,也不會影響整個系統(tǒng)的邏輯。
? ? ? ? 就比如說,廚師辭職,只要他會做菜,那老板也不用擔(dān)心,服務(wù)員換掉,也無關(guān)緊要,無非就是這個廚師做菜和那個口味可能有些許不同。
? ? ? ? 當(dāng)你的項(xiàng)目比較大,且涉及到后期的新功能添加或者后期的維護(hù),那么三層架構(gòu)不失為你的好選擇。
四、三層架構(gòu)與兩層的區(qū)別
? ? ? ? 在開發(fā)中,三層架構(gòu)代碼寫起來代碼量也是相當(dāng)大的,那么可不可以不要中間的處理層,我直接UI與數(shù)據(jù)庫進(jìn)行交互呢?答案當(dāng)然是可以的。
? ? ? ??兩層架構(gòu)一般用在小的項(xiàng)目,不需要后續(xù)的維護(hù),或者說更新其他的功能的項(xiàng)目,直接與數(shù)據(jù)庫交互就好,簡化代碼量。缺點(diǎn)就是如果某個大項(xiàng)目有地方需要維護(hù),由于沒有進(jìn)行分層,那維護(hù)成本是相當(dāng)高的。
? ? ? ? 三層:發(fā)生在哪一層的變化,只需更改該層,不需要更改整個系統(tǒng)。層次清晰,分工明確,每層之間耦合度低——提高了效率,適應(yīng)需求變化,可維護(hù)性高,可擴(kuò)展性高
? ? ? ? 那么很明顯,三層架構(gòu)的優(yōu)勢在于:
? ? ? ? 1,耦合性較低,后期維護(hù)成本低。
?? ?? ? 2,利于后期維護(hù)和增加新功能。
? ? ? ? 三層架構(gòu)的劣勢很明顯:
? ? ? ? 1.增加了代碼量和工作量,
? ? ? ? 2.可能導(dǎo)致級聯(lián)的修改,在三層架構(gòu)中,由于我們的業(yè)務(wù)邏輯是分層來做的,那么我們添加一個功能的時候,可能會涉及到修改三層中各級的功能。
? ? ? ? ?3.降低了系統(tǒng)的性能,因?yàn)槲覀儾粌H有操作層,才能進(jìn)入數(shù)據(jù)庫,如果直接繞過操作層,直接進(jìn)入數(shù)據(jù)庫,那么性能確實(shí)會更高。
秘籍全都交給你了,還不快去學(xué)習(xí)
????????
總結(jié)
- 上一篇: 计算机实训基地运行与管理,计算机实训基地
- 下一篇: ik 和hanlp_结巴分词和自然语言处