摘要:三層架構(gòu)—user interface、business logical 、data access,即表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層,在小型項(xiàng)目中是體現(xiàn)的優(yōu)勢(shì)并不明顯,但在大型或中型項(xiàng)目中,三層架構(gòu)能帶來(lái)的絕不僅是效率的提高,清晰的層次劃分會(huì)讓雜亂的代碼流露出藝術(shù)的美感,程序員的工作變得更具藝術(shù)創(chuàng)作性,文章對(duì)其使用進(jìn)行分析。
關(guān)鍵詞:三層架構(gòu);B/S;程序
中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2009)12-0108-01
1三層架構(gòu)的解釋
1.1B/S(Browser/Server)三層架構(gòu)的概念
B/S模式的三層結(jié)構(gòu)是一種嚴(yán)格的分層定義,它首先將應(yīng)用系統(tǒng)復(fù)雜的開(kāi)發(fā)工作進(jìn)行劃分相對(duì)簡(jiǎn)單的小分塊,然后在每一層中只實(shí)現(xiàn)系統(tǒng)相應(yīng)層的功能設(shè)計(jì),層間的交互由相鄰層對(duì)應(yīng)的功能模塊進(jìn)行調(diào)用,信息傳遞只由接口進(jìn)行傳送。系統(tǒng)功能實(shí)現(xiàn)構(gòu)架的設(shè)計(jì)是為系統(tǒng)提供一個(gè)可行的實(shí)現(xiàn)方案,并方便程序設(shè)計(jì)人員將此方案轉(zhuǎn)換為實(shí)現(xiàn)應(yīng)用系統(tǒng)功能的具體Browser/Server模式,是從傳統(tǒng)的C/S發(fā)展起來(lái)的計(jì)算方式。
C/S是松散耦合系統(tǒng),通過(guò)消息傳遞機(jī)制進(jìn)行對(duì)話,由客戶(hù)端發(fā)出請(qǐng)求給服務(wù)器,服務(wù)器進(jìn)行相應(yīng)處理后經(jīng)傳遞機(jī)制送回客戶(hù)端;B/S模式則把C/S模式的服務(wù)器端進(jìn)一步深化,分解成應(yīng)用服務(wù)器(Web服務(wù)器)和多個(gè)數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)簡(jiǎn)化C/S中的客戶(hù)端,將客戶(hù)端的計(jì)算功能移至Web服務(wù)器,僅保留其表示功能,從而成為一種由表示層(Browser)、功能層(Web Server)與數(shù)據(jù)庫(kù)服務(wù)層(DATABASE Server)構(gòu)成的三層分布式結(jié)構(gòu)。
1.2三層架構(gòu)的具體劃分
所謂三層架構(gòu),是在客戶(hù)端與數(shù)據(jù)庫(kù)之間加入了一個(gè)中間層,也叫組件層。這里所說(shuō)的三層體系是指邏輯上的三層,即使這三個(gè)層放置到一臺(tái)機(jī)器上。 三層體系的應(yīng)用程序?qū)I(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)、合法性校驗(yàn)等工作放到了中間層進(jìn)行處理。通常情況下,客戶(hù)端不直接與數(shù)據(jù)庫(kù)進(jìn)行交互,而是通過(guò)COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫(kù)進(jìn)行交換. 數(shù)據(jù)訪問(wèn)層(DAL)執(zhí)行從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)或向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)的功能。在分布式應(yīng)用程序結(jié)構(gòu)中,相應(yīng)功能使用ADO.NET數(shù)據(jù)適配器和SQL服務(wù)器存儲(chǔ)過(guò)程來(lái)完成。本層從業(yè)務(wù)邏輯層接收請(qǐng)求,從數(shù)據(jù)訪問(wèn)層獲取數(shù)據(jù)或向其發(fā)送數(shù)據(jù)??梢允褂么鎯?chǔ)過(guò)程獲取數(shù)據(jù),并可選用ADO.NET向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù),最后將數(shù)據(jù)庫(kù)查詢(xún)結(jié)果返回到業(yè)務(wù)邏輯層,作為ADO.NET數(shù)據(jù)集。業(yè)務(wù)邏輯層(BLL)包含業(yè)務(wù)對(duì)象本身以及應(yīng)用于它們的規(guī)則。這也是主要業(yè)務(wù)對(duì)象所在的位置。它們實(shí)現(xiàn)業(yè)務(wù)實(shí)體或系統(tǒng)對(duì)象。系統(tǒng)的業(yè)務(wù)規(guī)則將在這些對(duì)象中編碼。它從web表現(xiàn)層接受請(qǐng)求,根據(jù)編碼的業(yè)務(wù)規(guī)則處理請(qǐng)求,從數(shù)據(jù)訪問(wèn)層獲取數(shù)據(jù)或?qū)?shù)據(jù)發(fā)送到數(shù)據(jù)訪問(wèn)層,將處理結(jié)果傳遞回web表現(xiàn)層。Web表現(xiàn)層(Veb layer)是指在應(yīng)用程序中實(shí)現(xiàn)的客戶(hù)端。在分布式應(yīng)用程序結(jié)構(gòu)中,用戶(hù)服務(wù)可以是Web客戶(hù)端或Windows客戶(hù)端,這具體取決于特定的應(yīng)用程序。例如,在開(kāi)發(fā)Web應(yīng)用程序時(shí),可能需要提供具有標(biāo)準(zhǔn)Windows用戶(hù)界面或Web用戶(hù)界面。通常,這種一般類(lèi)型的應(yīng)用程序包含以下功能:管理Web頁(yè)的呈現(xiàn)和行為,向業(yè)務(wù)邏輯層發(fā)送用戶(hù)輸入,從業(yè)務(wù)邏輯層接收結(jié)果等。
2三層架構(gòu)的優(yōu)勢(shì)分析
從開(kāi)發(fā)角度和應(yīng)用角度來(lái)看,三層架構(gòu)比雙層或單層結(jié)構(gòu)都有更大的優(yōu)勢(shì)。三層結(jié)構(gòu)適合群體開(kāi)發(fā),每人可以有不同的分工,協(xié)同工作使效率倍增。三層架構(gòu)屬于瘦客戶(hù)的模式,用戶(hù)端只需一個(gè)較小的硬盤(pán)、較小的內(nèi)存、較慢的CPU就可以獲得不錯(cuò)的性能。相比之下,單層或胖客戶(hù)對(duì)面器的要求太高。 三層架構(gòu)的最大優(yōu)點(diǎn)是它的安全性。用戶(hù)端只能通過(guò)邏輯層來(lái)訪問(wèn)數(shù)據(jù)層,減少了入口點(diǎn),把很多危險(xiǎn)的系統(tǒng)功能都屏蔽了。
3使用三層架構(gòu)的注意事項(xiàng)
不要嘗試在表示層直接與數(shù)據(jù)層交互。這是個(gè)常見(jiàn)的錯(cuò)誤,它是通往復(fù)雜、難以維護(hù)、低靈活性系統(tǒng)的捷徑。在許多與數(shù)據(jù)訪問(wèn)相關(guān)的教材和介紹性材料中,經(jīng)常會(huì)看到使用一個(gè)簡(jiǎn)單的UI應(yīng)用系統(tǒng)執(zhí)行一些簡(jiǎn)單數(shù)據(jù)庫(kù)操作的例子。在這類(lèi)程序中,所有的業(yè)務(wù)邏輯可能是寫(xiě)在一個(gè)簡(jiǎn)短的、單一的文件中,而非放在單獨(dú)的層中。盡管這些材料都很好,但一定要記住,這些材料的寫(xiě)作目的大多是為了教你如何完成不同的獨(dú)立任務(wù),而非告訴你如何正確地構(gòu)建一個(gè)靈活的、可伸縮的應(yīng)用系統(tǒng)。
應(yīng)該注意的是,B/S模式的三層結(jié)構(gòu)是一種嚴(yán)格的分層定義,它首先將應(yīng)用系統(tǒng)復(fù)雜的開(kāi)發(fā)工作進(jìn)行劃分相對(duì)簡(jiǎn)單的小分塊,然后在每一層中只實(shí)現(xiàn)系統(tǒng)相應(yīng)層的功能設(shè)計(jì),層間的交互由相鄰層對(duì)應(yīng)的功能模塊進(jìn)行調(diào)用,信息傳遞只由接口進(jìn)行傳送。系統(tǒng)功能實(shí)現(xiàn)構(gòu)架的設(shè)計(jì)是為系統(tǒng)提供一個(gè)可行的實(shí)現(xiàn)方案,并方便程序設(shè)計(jì)人員將此方案轉(zhuǎn)換為實(shí)現(xiàn)應(yīng)用系統(tǒng)功能的具體。
參考文獻(xiàn):
[1] Cristian Darie.ASP.NET 2.0電子商務(wù)開(kāi)發(fā)實(shí)戰(zhàn)[M].北京: 人民郵電出版社,2007.