.NET三層架構(gòu)的概念,作用及區(qū)分方法
.NET三層架構(gòu)的概念
◆用戶界面表示層(USL)
◆業(yè)務(wù)邏輯層(BLL)
◆數(shù)據(jù)訪問層(DAL)
BLL將USL與DAL隔開了,并且加入了業(yè)務(wù)規(guī)則
各層的作用
1:數(shù)據(jù)數(shù)據(jù)訪問層:主要是對原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說,是對數(shù)據(jù)的操作,而不是數(shù)據(jù)庫,具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù).
2:業(yè)務(wù)邏輯層:主要是針對具體的問題的操作,也可以理解成對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯處理,如果說數(shù)據(jù)層是積木,那邏輯層就是對這些積木的搭建。
3:表示層:主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,WEB方式也可以表現(xiàn)成:aspx, 如果邏輯層相當(dāng)強(qiáng)大和完善,無論表現(xiàn)層如何定義和更改,邏輯層都能完善地提供服務(wù)。
.NET三層架構(gòu)具體的區(qū)分方法
1:數(shù)據(jù)數(shù)據(jù)訪問層:主要看你的數(shù)據(jù)層里面有沒有包含邏輯處理,實(shí)際上他的各個(gè)函數(shù)主要完成各個(gè)對數(shù)據(jù)文件的操作。而不必管其他操作。
2:業(yè)務(wù)邏輯層:主要負(fù)責(zé)對數(shù)據(jù)層的操作。也就是說把一些數(shù)據(jù)層的操作進(jìn)行組合。
3:表示層:主要對用戶的請求接受,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問。
.NET三層架構(gòu)概念的解釋
所謂三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個(gè)中間層,也叫組件層。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺機(jī)器就是三層體系結(jié)構(gòu),也不僅僅有B/S應(yīng)用才是三層體系結(jié)構(gòu),三層是指邏輯上的三層,即使這三個(gè)層放置到一臺機(jī)器上。 三層體系的應(yīng)用程序?qū)I(yè)務(wù)規(guī)則、數(shù)據(jù)訪問、合法性校驗(yàn)等工作放到了中間層進(jìn)行處理。通常情況下,客戶端不直接與數(shù)據(jù)庫進(jìn)行交互,而是通過COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進(jìn)行交換.
開發(fā)人員可以將應(yīng)用的商業(yè)邏輯放在中間層應(yīng)用服務(wù)器上,把應(yīng)用的業(yè)務(wù)邏輯與用戶界面分開。在保證客戶端功能的前提下,為用戶提供一個(gè)簡潔的界面。這意味著如果需要修改應(yīng)用程序代碼,只需要對中間層應(yīng)用服務(wù)器進(jìn)行修改,而不用修改成千上萬的客戶端應(yīng)用程序。從而使開發(fā)人員可以專注于應(yīng)用系統(tǒng)核心業(yè)務(wù)邏輯的分析、設(shè)計(jì)和開發(fā),簡化了應(yīng)用系統(tǒng)的開發(fā)、更新和升級工作。
那么為什么要應(yīng)用“中間業(yè)務(wù)層”呢?舉些例子:
我們假設(shè)有一段登錄代碼,則可以這樣處理Web程序,外觀層負(fù)責(zé)接收前臺頁面的數(shù)據(jù),然后傳給中間層,中間層對數(shù)據(jù)進(jìn)行處理,比如格式化,防SQL注入等等一些,這樣的數(shù)據(jù)再傳給數(shù)據(jù)訪問層然后與數(shù)據(jù)庫進(jìn)行操作,比如與數(shù)據(jù)庫的用戶名和密碼匹配等等一些代碼。
“中間業(yè)務(wù)層”的用途有很多,例如:驗(yàn)證用戶輸入數(shù)據(jù)、緩存從數(shù)據(jù)庫中讀取的數(shù)據(jù)等等……但是,“中間業(yè)務(wù)層”的實(shí)際目的是將“數(shù)據(jù)訪問層”的最基礎(chǔ)的存儲邏輯組合起來,形成一種業(yè)務(wù)規(guī)則。例如:“在一個(gè)購物網(wǎng)站中有這樣的一個(gè)規(guī)則:在該網(wǎng)站第一次購物的用戶,系統(tǒng)為其自動(dòng)注冊”。這樣的業(yè)務(wù)邏輯放在中間層最合適:
在“數(shù)據(jù)訪問層”中,最好不要出現(xiàn)任何“業(yè)務(wù)邏輯”!也就是說,要保證“數(shù)據(jù)訪問層”的中的函數(shù)功能的原子性!即最小性和不可再分。“數(shù)據(jù)訪問層”只管負(fù)責(zé)存儲或讀取數(shù)據(jù)就可以了。
以上就是.NET三層架構(gòu)的概念,作用及區(qū)分方法。
【編輯推薦】