兼具三層結(jié)構(gòu)是哪三層?
三層體系結(jié)構(gòu)是在客戶端和數(shù)據(jù)庫(kù)之間加入了一個(gè)“中間層”,這里所說(shuō)的三層體系是指邏輯上的三層,即把這三個(gè)層放置到一臺(tái)機(jī)器上。
三層體系的應(yīng)用程序?qū)I(yè)務(wù)規(guī)則、數(shù)據(jù)訪問、合法性校驗(yàn)等工作放到了中間層進(jìn)行處理。
通常情況下,客戶端不直接與數(shù)據(jù)庫(kù)進(jìn)行交互,而是通過(guò)COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫(kù)進(jìn)行交互。
UI表示層
User Interface layer(UI)
第一層是用戶界面:它包含了用戶界面,讓使用者輸入,輸出,查詢等工作.
負(fù)責(zé)接收用戶的輸入,將輸出呈現(xiàn)給用戶,以及訪問安全性驗(yàn)證,并對(duì)輸入的數(shù)據(jù)的正確性,有效性及呈現(xiàn)樣式負(fù)責(zé),但對(duì)輸出的數(shù)據(jù)的正確性不負(fù)責(zé).
主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,WEB方式也可以表現(xiàn)成:aspx,如果邏輯層相當(dāng)強(qiáng)大和完善,無(wú)論表現(xiàn)層如何定義和更改,邏輯層都能完善地提供服務(wù)
位于最外層(最上層),最接近用戶。用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。
界面層提供給用戶一個(gè)視覺上的界面,通過(guò)界面層,用戶輸入數(shù)據(jù)、獲取數(shù)據(jù)。界面層同時(shí)也提供一定的安全性,確保用戶不用看到不必要的機(jī)密信息。
BLL業(yè)務(wù)邏輯層
Business Logic Layer(BLL)
第二層是商務(wù)邏輯層(中間層):
傳統(tǒng)的兩層構(gòu)架根本沒有能力承擔(dān)巨大的工作壓力,必須通過(guò)某種中間系統(tǒng)實(shí)現(xiàn)壓力平衡.
中間層是沒有圖形界面設(shè)計(jì)的代碼編寫,并且是OOP方式的代碼編寫,不僅要熟悉后臺(tái)數(shù)據(jù)庫(kù)的特性,還要考慮前臺(tái)界面工具的特性,最重要的是商務(wù)邏輯的構(gòu)架,同時(shí)還要求懂得IIS、MTS(COM+)、NT的安全設(shè)置等復(fù)雜枯燥的東西。
負(fù)責(zé)系統(tǒng)領(lǐng)域業(yè)務(wù)的處理,負(fù)責(zé)邏輯性邏輯的生成,處理及轉(zhuǎn)換。對(duì)所輸入的邏輯性數(shù)據(jù)的正確性及有效性負(fù)責(zé),但對(duì)輸出的邏輯性數(shù)據(jù)及用戶性數(shù)據(jù)的正確性不負(fù)責(zé)任,對(duì)數(shù)據(jù)的呈現(xiàn)樣式不負(fù)責(zé)。
要是針對(duì)具體的問題的操作,也可以理解成對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理,如果說(shuō)數(shù)據(jù)層是積木,那邏輯層就是對(duì)這些積木的搭建。
業(yè)務(wù)邏輯層(Business Logic Layer)無(wú)疑是系統(tǒng)架構(gòu)中體現(xiàn)核心價(jià)值的部分。它的關(guān)注點(diǎn)主要集中在業(yè)務(wù)規(guī)則的制定、業(yè)務(wù)流程的實(shí)現(xiàn)等與業(yè)務(wù)需求有關(guān)的系統(tǒng)設(shè)計(jì),也即是說(shuō)它是與系統(tǒng)所應(yīng)對(duì)的領(lǐng)域(Domain)邏輯有關(guān),很多時(shí)候,也將業(yè)務(wù)邏輯層稱為領(lǐng)域?qū)印?/p>
業(yè)務(wù)邏輯層在體系架構(gòu)中的位置很關(guān)鍵,它處于數(shù)據(jù)訪問層與表示層中間,起到了數(shù)據(jù)交換中承上啟下的作用。由于層是一種弱耦合結(jié)構(gòu),層與層之間的依賴是向下的,底層對(duì)于上層而言是“無(wú)知”的,改變上層的設(shè)計(jì)對(duì)于其調(diào)用的底層而言沒有任何影響。如果在分層設(shè)計(jì)時(shí),遵循了面向接口設(shè)計(jì)的思想,那么這種向下的依賴也應(yīng)該是一種弱依賴關(guān)系。因而在不改變接口定義的前提下,理想的分層式架構(gòu),應(yīng)該是一個(gè)支持可抽取、可替換的“抽屜”式架構(gòu)。正因?yàn)槿绱耍瑯I(yè)務(wù)邏輯層的設(shè)計(jì)對(duì)于一個(gè)支持可擴(kuò)展的架構(gòu)尤為關(guān)鍵,因?yàn)樗缪萘藘蓚€(gè)不同的角色。對(duì)于數(shù)據(jù)訪問層而言,它是調(diào)用者;對(duì)于表示層而言,它卻是被調(diào)用者。
邏輯層是界面層和數(shù)據(jù)層的橋梁,它響應(yīng)界面層的用戶請(qǐng)求,執(zhí)行任務(wù)并從數(shù)據(jù)層抓取數(shù)據(jù),并將必要的數(shù)據(jù)傳送給界面層。
DAL數(shù)據(jù)訪問層
Data Access Layer(DAL)
第三層是資料層:它就是用來(lái)放資料的地方,一般是指后端數(shù)據(jù)庫(kù),主要有包括 Oracle、SQL Server 等,它主要是提供一個(gè)很大的地方,來(lái)有規(guī)則的存放數(shù)據(jù).
負(fù)責(zé)與數(shù)據(jù)源的交互,即數(shù)據(jù)的插入,刪除,修改,以及從數(shù)據(jù)庫(kù)中讀出數(shù)據(jù)等操作,但對(duì)數(shù)據(jù)的正確性和有效性不付責(zé)任,對(duì)數(shù)據(jù)的用途不了解,不負(fù)擔(dān)任何業(yè)務(wù)邏輯的處理。
主要是對(duì)原始數(shù)據(jù)(數(shù)據(jù)庫(kù)或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說(shuō),是對(duì)數(shù)據(jù)的操作,而不是數(shù)據(jù)庫(kù),具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù).
有時(shí)候也稱為是持久層,其功能主要是負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問,可以訪問數(shù)據(jù)庫(kù)系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔。
簡(jiǎn)單的說(shuō)法就是實(shí)現(xiàn)對(duì)數(shù)據(jù)表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就會(huì)包括對(duì)象和數(shù)據(jù)表之間的mapping,以及對(duì)象實(shí)體的持久化。
數(shù)據(jù)層定義、維護(hù)數(shù)據(jù)的完整性、安全性,它響應(yīng)邏輯層的請(qǐng)求,訪問數(shù)據(jù)。這一層通常由大型的數(shù)據(jù)庫(kù)服務(wù)器實(shí)現(xiàn),如Oracle 、Sybase、MS SQl Server等