架構(gòu)-三層架構(gòu):三層架構(gòu)

概述

顧名思義,三層架構(gòu)分為三層,分別是“數(shù)據(jù)訪問層”、“業(yè)務(wù)邏輯層”、“表示層”。

數(shù)據(jù)訪問層:數(shù)據(jù)訪問層在作業(yè)過程中訪問數(shù)據(jù)系統(tǒng)中的文件,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫中數(shù)據(jù)的讀取保存操作。

表示層:主要功能是顯示數(shù)據(jù)和接受傳輸用戶的數(shù)據(jù),可以在為網(wǎng)站的系統(tǒng)運(yùn)行提供交互式操作界面,表示層的應(yīng)用方式比較常見,例如Windows窗體和Web頁面。

業(yè)務(wù)邏輯層:將用戶的輸入信息進(jìn)行甄別處理,分別保存。建立新的數(shù)據(jù)存儲(chǔ)方式,在存儲(chǔ)過程中對(duì)數(shù)據(jù)進(jìn)行讀取,將“商業(yè)邏輯”描述代碼進(jìn)行包含

三層架構(gòu)軟件系統(tǒng)為用戶的數(shù)據(jù)傳輸、提取、儲(chǔ)存創(chuàng)造了便利條件。在應(yīng)用數(shù)據(jù)時(shí),信息劃分架構(gòu)開發(fā)項(xiàng)目,對(duì)各層次之間的工作職責(zé)進(jìn)行清晰規(guī)劃這樣就降低了網(wǎng)站系統(tǒng)的維護(hù)風(fēng)險(xiǎn)。

三層原理

3個(gè)層次中,系統(tǒng)主要功能和業(yè)務(wù)邏輯都在業(yè)務(wù)邏輯層進(jìn)行處理。

所謂三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個(gè)“中間層”,也叫組件層。這里所說的三層體系,不是指物理上的三層,不是簡單地放置三臺(tái)機(jī)器就是三層體系結(jié)構(gòu),也不僅僅有B/S應(yīng)用才是三層體系結(jié)構(gòu),三層是指邏輯上的三層,即把這三個(gè)層放置到一臺(tái)機(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)行交互。

三層架構(gòu)中主要功能與業(yè)務(wù)邏輯一般要在業(yè)務(wù)邏輯層進(jìn)行信息處理和實(shí)現(xiàn),其中三層體系架構(gòu)中的客戶端和數(shù)據(jù)庫要預(yù)設(shè)中間層,成為組建層。三層架構(gòu)中的三層具有一定的邏輯性,即是將三層設(shè)置到同一個(gè)計(jì)算機(jī)系統(tǒng)中,把業(yè)務(wù)協(xié)議、合法校驗(yàn)以及數(shù)據(jù)訪問等程序歸置到中間層進(jìn)行信息處理,一般客戶端無法和數(shù)據(jù)庫進(jìn)行數(shù)據(jù)傳輸,主要是利用COM/DCOM通訊和中間層構(gòu)建銜接通道,實(shí)現(xiàn)中間層與數(shù)據(jù)庫的數(shù)據(jù)傳輸,進(jìn)而實(shí)現(xiàn)客戶端與是數(shù)據(jù)庫的交互。

編輯

結(jié)構(gòu)

表示層

表示層又稱表現(xiàn)層UI,位于三層構(gòu)架的最上層,與用戶直接接觸,主要是B/S信息系統(tǒng)中的Web瀏覽頁面。作為Web瀏覽頁面,表示層的主要功能是實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)的傳入與輸出,在此過程中不需要借助邏輯判斷操作就可以將數(shù)據(jù)傳送到BLL系統(tǒng)中進(jìn)行數(shù)據(jù)處理,處理后會(huì)將處理結(jié)果反饋到表示層中。換句話說,表示層就是實(shí)現(xiàn)用戶界面功能,將用戶的需求傳達(dá)和反饋,并用BLL或者是Models進(jìn)行調(diào)試,保證用戶體驗(yàn)。

業(yè)務(wù)邏輯層

業(yè)務(wù)邏輯層BLL的功能是對(duì)具體問題進(jìn)行邏輯判斷與執(zhí)行操作,接收到表現(xiàn)層UI的用戶指令后,會(huì)連接數(shù)據(jù)訪問層DAL,訪問層在三層構(gòu)架中位于表示層與數(shù)據(jù)層中間位置,同時(shí)也是表示層與數(shù)據(jù)層的橋梁,實(shí)現(xiàn)三層之間的數(shù)據(jù)連接和指令傳達(dá),可以對(duì)接收數(shù)據(jù)進(jìn)行邏輯處理,實(shí)現(xiàn)數(shù)據(jù)的修改、獲取、刪除等功能,并將處理結(jié)果反饋到表示層UI中,實(shí)現(xiàn)軟件功能。

數(shù)據(jù)訪問層

數(shù)據(jù)訪問層DAL是數(shù)據(jù)庫的主要操控系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的增加、刪除、修改、查詢等操作,并將操作結(jié)果反饋到業(yè)務(wù)邏輯層BLL。在實(shí)際運(yùn)行的過程中,數(shù)據(jù)訪問層沒有邏輯判斷能力,為了實(shí)現(xiàn)代碼編寫的嚴(yán)謹(jǐn)性,提高代碼閱讀程度,一般軟件開發(fā)人員會(huì)在該層中編寫DataAccessCommon,保證數(shù)據(jù)訪問層DAL數(shù)據(jù)處理功能。

各層作用

1、數(shù)據(jù)訪問層:主要是對(duì)非原始數(shù)據(jù)數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說,是對(duì)數(shù)據(jù)庫的操作,而不是數(shù)據(jù),具體為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù)。

2、業(yè)務(wù)邏輯層:主要是針對(duì)具體的問題的操作,也可以理解成對(duì)數(shù)據(jù)層的操作,對(duì)數(shù)據(jù)業(yè)務(wù)邏輯處理,如果說數(shù)據(jù)層是積木,那邏輯層就是對(duì)這些積木的搭建。

3、界面層:主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,WEB方式也可以表現(xiàn)成:aspx,如果邏輯層相當(dāng)強(qiáng)大和完善,無論表現(xiàn)層如何定義和更改,邏輯層都能完善地提供服務(wù)。

規(guī)則

三層結(jié)構(gòu)并不是普通的DAL,BLL,WebUI三個(gè)模塊,三層程序有一些需要約定遵守的規(guī)則:

1、最核心的模塊規(guī)則,表現(xiàn)層只是外殼作用,不能包含任何BizLogic的處理過程。

2、各層次模塊設(shè)計(jì)時(shí)應(yīng)該從業(yè)務(wù)邏輯層出發(fā),而不是開始于表現(xiàn)層.。業(yè)務(wù)邏輯層在API上應(yīng)該實(shí)現(xiàn)所有BizLogic,以面向?qū)ο蟮姆绞?/b>。

3、不論數(shù)據(jù)層是一個(gè)簡單的SqlHelper,還是帶有Mapping的Classes,應(yīng)該保證其與抽象的系統(tǒng)層無關(guān)。

4、不管使用COM+(EnterpriseService),還是Remoting,還是WebService之類的遠(yuǎn)程對(duì)象技術(shù),不管部署是否在服務(wù)器上,在起碼在設(shè)計(jì)時(shí)必須要考慮多臺(tái)服務(wù)器通過負(fù)載均衡作集群

綜上,考慮一個(gè)項(xiàng)目是否符合應(yīng)用三層或多層設(shè)計(jì)時(shí),必須要考慮是否真正符合項(xiàng)目的需求。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

1、開發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;

2、可以很容易的用新的實(shí)現(xiàn)來替換原有層次的實(shí)現(xiàn)

3、可以降低層與層之間的依賴

4、有利于標(biāo)準(zhǔn)化;

5、利于各層邏輯的復(fù)用;

6、結(jié)構(gòu)更加的明確;

7、在后期維護(hù)的時(shí)候,極大地降低了維護(hù)成本和維護(hù)時(shí)間

8、避免了表示層直接訪問數(shù)據(jù)訪問層,表示層只和業(yè)務(wù)邏輯層有聯(lián)系,提高了數(shù)據(jù)安全性

9、有利于系統(tǒng)的分散開發(fā),每一個(gè)層可以由不同的人員來開發(fā),只要遵循接口標(biāo)準(zhǔn),利用相同的對(duì)象模型實(shí)體類就可以了,這樣就可以大大提高系統(tǒng)的開發(fā)速度。

10、方便系統(tǒng)的移植,如果要把一個(gè)C/S的系統(tǒng)變成B/S系統(tǒng),只要修改三層架構(gòu)的表示層就可以了。業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層幾乎不用修改就可以輕松的把系統(tǒng)移植到網(wǎng)絡(luò)上。

11、項(xiàng)目結(jié)構(gòu)更清楚,分工更明確,有利于后期的維護(hù)和升級(jí)。

缺點(diǎn)

1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫,以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過中間層來完成。

2、有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層中都增加相應(yīng)的代碼。

3、增加了開發(fā)成本

應(yīng)用

(1)應(yīng)用服務(wù)器。

服務(wù)器一般包括有連接與無連接形式,無連接在最底層要設(shè)置UDP/IP協(xié)議實(shí)現(xiàn)服務(wù)器通信功能,同時(shí)在實(shí)際使用的過程中,由于客戶機(jī)無法保證可靠的傳輸渠道,使得客戶機(jī)向服務(wù)器提交請(qǐng)求時(shí),很容易造成請(qǐng)求的丟失、延遲以及傳遞失序等傳輸問題,進(jìn)而降低通信質(zhì)量。UDP的可靠性很低,在實(shí)際運(yùn)行中UDP要依托于下層IP網(wǎng)絡(luò)進(jìn)行交付分組,無法引入檢驗(yàn)程序,而IP網(wǎng)絡(luò)還要由實(shí)際硬件網(wǎng)絡(luò)或者是相關(guān)網(wǎng)關(guān)決定其工作質(zhì)量。因此,從這一層面上看,下層網(wǎng)絡(luò)的好壞直接關(guān)系到UDP工作。在進(jìn)行開發(fā)有連接服務(wù)器的過程中,要利用TCP/IP通信協(xié)議,利用互聯(lián)網(wǎng)創(chuàng)建良好的通信環(huán)境,進(jìn)而提高通信數(shù)據(jù)的真實(shí)性和可靠性。TCP/IP通信協(xié)議可以對(duì)數(shù)據(jù)信息進(jìn)行驗(yàn)證與校對(duì),保證數(shù)據(jù)信息的完整性。同時(shí)在實(shí)際運(yùn)行中,可以通過數(shù)據(jù)的序列號(hào)排序保證數(shù)據(jù)信息的有序到達(dá),防止出現(xiàn)信息重復(fù)分組的情況。另外,這種通信協(xié)議可以對(duì)流量進(jìn)行有效控制,確保發(fā)送信息速度在接收方的承受范圍以內(nèi),通過INTERNET,實(shí)現(xiàn)服務(wù)器的面向連接。

編輯

(2)應(yīng)用客戶端。

在三層構(gòu)架系統(tǒng)中,客戶端是使用者的主要功能體驗(yàn)區(qū)域,相比于服務(wù)器而言非常簡單。一方面,在三層構(gòu)架運(yùn)行的過程中,客戶機(jī)軟件要和各個(gè)服務(wù)器進(jìn)行相互通信,不需要過于重視并發(fā)性處理。另一方面,一般客戶機(jī)軟件可以仿照常規(guī)程序進(jìn)行指令執(zhí)行,不需要進(jìn)行外加保護(hù),依托于操作系統(tǒng)進(jìn)行強(qiáng)迫性保護(hù)。但與此同時(shí)對(duì)界面具有極高的要求,系統(tǒng)分析的過程中就要進(jìn)行專門的界面設(shè)計(jì),同時(shí)要和客戶進(jìn)行及時(shí)溝通,掌握客戶的實(shí)際需求,實(shí)現(xiàn)高效的信息反饋與交流溝通,進(jìn)而保證信息系統(tǒng)軟件界面設(shè)計(jì)的質(zhì)量和效率。

(3)數(shù)據(jù)服務(wù)器。

在進(jìn)行數(shù)據(jù)服務(wù)器選擇的過程中,要根據(jù)信息系統(tǒng)平臺(tái)要求和用戶期望要求,同時(shí)對(duì)應(yīng)各個(gè)服務(wù)器的特點(diǎn)進(jìn)行使用與選擇。一般情況下出于對(duì)系統(tǒng)性能的考慮,會(huì)選擇SQLSERVER數(shù)據(jù)服務(wù)器,設(shè)計(jì)階段中要通過Proactive等有效措施對(duì)系統(tǒng)數(shù)據(jù)庫的實(shí)際使用性能進(jìn)行不斷地優(yōu)化與完善。同時(shí)管理人員要和程序設(shè)計(jì)人員進(jìn)行有效的溝通與協(xié)作,明確信息系統(tǒng)軟件的性能目標(biāo),設(shè)置性能期望值,構(gòu)建系統(tǒng)資源組合體系,滿足用戶的實(shí)際需求。

(4)數(shù)據(jù)庫和應(yīng)用服務(wù)器的連接。

在基于三層構(gòu)架的信息系統(tǒng)開發(fā)中,應(yīng)用服務(wù)器要利用SQL語言進(jìn)行連接數(shù)據(jù)庫服務(wù)器,其連接方法包括DB-Library、DAO以及OLE等方式,其中DB-Library是最為常見的連接方式,作為SQLSERVER的重要接口層,具有極強(qiáng)的訪問信息效率和訪問速度。這主要是源于DB-Library的語言開發(fā)能力,直接省去DAO以及OLE等連接方式中抽象層的調(diào)用,節(jié)省了信息訪問時(shí)間。同時(shí),三層構(gòu)架適用于使用諸多開發(fā)語言的信息系統(tǒng)開發(fā),不是.NET的專利,也不是專門用在數(shù)據(jù)庫上的技術(shù),而是一種更加普適的架構(gòu)設(shè)計(jì)理念,除了數(shù)據(jù)、邏輯、界面等層次之外,在實(shí)際應(yīng)用中還會(huì)根據(jù)需要多出傳遞數(shù)據(jù)的層、接口層等等。在結(jié)合DB-Library數(shù)據(jù)庫連接后,設(shè)置NTWDBLIB.LIB組建,構(gòu)建CDBConn實(shí)體類庫體系,實(shí)現(xiàn)數(shù)據(jù)庫與應(yīng)用服務(wù)器的連接。因此,信息系統(tǒng)軟件架構(gòu)可以為系統(tǒng)開發(fā)創(chuàng)造出良好的分布式計(jì)算環(huán)境,其中邏輯層可以實(shí)現(xiàn)多個(gè)機(jī)器的同時(shí)運(yùn)行,通過計(jì)算機(jī)網(wǎng)絡(luò)計(jì)算能力強(qiáng)化系統(tǒng)各個(gè)功能板塊的精準(zhǔn)性和復(fù)用性,進(jìn)而有效減少了信息系統(tǒng)軟件開發(fā)的時(shí)間和周期,保證信息系統(tǒng)的安全性與拓展性,實(shí)現(xiàn)系統(tǒng)功能的最大化實(shí)現(xià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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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