- 相關(guān)推薦
淺析軟件開(kāi)發(fā)中的三層架構(gòu)技術(shù)論文
隨著計(jì)算機(jī)的普及,人們?cè)谏钪性絹?lái)越依賴計(jì)算機(jī),因而對(duì)計(jì)算機(jī)軟件也提出了更高的要求,要求計(jì)算機(jī)軟件能夠提供更加方便、快捷、周全的服務(wù)。這就對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)技術(shù)提出了更高的要求,為了適應(yīng)軟件發(fā)展的需要,在計(jì)算機(jī)軟件開(kāi)發(fā)中更多地引入了三層架構(gòu)技術(shù)。文章對(duì)此技術(shù)進(jìn)行了具體的分析。
計(jì)算機(jī)普及之初,軟件的開(kāi)發(fā)使用的都是二層架構(gòu)技術(shù),即只考慮2個(gè)端點(diǎn):客戶端和服務(wù)器端。用戶通過(guò)客戶端界面所提供的數(shù)據(jù),直接在客戶端對(duì)數(shù)據(jù)進(jìn)行計(jì)算和處理,然后通過(guò)服務(wù)器在數(shù)據(jù)庫(kù)中對(duì)數(shù)據(jù)進(jìn)行讀取等操作,得出需要的最終結(jié)果,并將結(jié)果傳輸?shù)娇蛻舳私缑骘@示給用戶。
在這種方式中,客戶端直接和服務(wù)器對(duì)接,沒(méi)有其他數(shù)據(jù)處理環(huán)節(jié),有利于提高數(shù)據(jù)庫(kù)數(shù)據(jù)讀取的速度,但缺點(diǎn)是當(dāng)計(jì)算機(jī)軟件的任何一個(gè)部分發(fā)生更改,哪怕是最微小的變動(dòng),整個(gè)計(jì)算機(jī)軟件都需要重新開(kāi)發(fā),限制了軟件的通用性。特別是對(duì)于大型軟件開(kāi)發(fā),除不利于軟件的修改,在軟件的開(kāi)發(fā)期也存在很大的困難,需要程序編程人員相互高度配合,而且也不利于工作的分配。
為了解決這種矛盾,就出現(xiàn)了計(jì)算機(jī)軟件的三層架構(gòu)技術(shù),將原先單一的客戶端和服務(wù)器端的模式,根據(jù)功能分別拆分成表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層和數(shù)據(jù)實(shí)體層。采用“分而治之”的思想,把復(fù)雜的問(wèn)題分成不同的部分,即不同的層,以便逐個(gè)解決問(wèn)題,便于軟件的設(shè)計(jì)、控制、資源分配和修改。為了讓大家更好地了解三層架構(gòu)技術(shù),本文從幾個(gè)方面對(duì)軟件開(kāi)發(fā)中的三層架構(gòu)技術(shù)進(jìn)行介紹。
1三層架構(gòu)技術(shù)中具體分工和各層功能介紹
(1)表示層:主要是指適合用戶與計(jì)算機(jī)的交互界面,目的是為了方便用戶數(shù)據(jù)的輸入和顯示處理后的數(shù)據(jù)結(jié)果,這部分工作主要由界面的美工完成。軟件設(shè)計(jì)人員通過(guò)表示層界面收集用戶輸入的數(shù)據(jù)要求,并把這些數(shù)據(jù)轉(zhuǎn)換成業(yè)務(wù)邏輯層可以操作的數(shù)據(jù)。同時(shí)也把業(yè)務(wù)邏輯層傳出的結(jié)果轉(zhuǎn)換成客戶想要的效果,通過(guò)文本、圖片、動(dòng)畫(huà)、3D等格式顯示在用戶眼前。表示層也可以被理解為輸入和輸出的操作平臺(tái),我們可以創(chuàng)建一個(gè)圖書(shū)館,然后把客戶要求設(shè)計(jì)成固定的元素:圖片、腳本、CSS、附件等進(jìn)行統(tǒng)一管理。
(2)業(yè)務(wù)邏輯層:又稱為領(lǐng)域?qū),是表示層和?shù)據(jù)訪問(wèn)層的中間橋梁,實(shí)現(xiàn)業(yè)務(wù)之間的邏輯處理,主要是對(duì)經(jīng)過(guò)表示層輸入的數(shù)據(jù)進(jìn)行驗(yàn)證、計(jì)算和業(yè)務(wù)規(guī)則等方面的處理。在程序編寫(xiě)的過(guò)程中,主要體現(xiàn)在對(duì)象的方法、屬性、事件、索引、接口等,通過(guò)這些手段,實(shí)現(xiàn)與數(shù)據(jù)訪問(wèn)層的對(duì)接。業(yè)務(wù)邏輯層的位置非常關(guān)鍵,它位于表示層與數(shù)據(jù)訪問(wèn)層的中間位置,對(duì)數(shù)據(jù)的交換起到了承上啟下的作用。對(duì)于表示層而言,它是被調(diào)用者,而對(duì)于數(shù)據(jù)訪問(wèn)層而言,它是調(diào)用者,依賴與被依賴的關(guān)系都糾結(jié)在業(yè)務(wù)邏輯層上。
(3)數(shù)據(jù)訪問(wèn)層:直接和數(shù)據(jù)庫(kù)中原始數(shù)據(jù)進(jìn)行對(duì)接,是對(duì)數(shù)據(jù)底層的操作,主要包括對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的增加、刪除、修改、查找等操作。該層主要的功能是根據(jù)業(yè)務(wù)邏輯層的要求,把存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)取出并提交給業(yè)務(wù)邏輯層,同時(shí)把業(yè)務(wù)邏輯層處理的數(shù)據(jù)結(jié)果保存到數(shù)據(jù)庫(kù)。對(duì)數(shù)據(jù)庫(kù)的操作,可以分為單表操作、關(guān)聯(lián)表操作和不同數(shù)據(jù)庫(kù)之間的操作?梢猿浞掷肧QL語(yǔ)言中的Insert,,update,Select等語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,同時(shí)返回不同的數(shù)據(jù)類型結(jié)果,例如Data Table,Bool,Data Set,Data Reader等,將其生成DLL文件,然后通過(guò)組件的引用就可以現(xiàn)實(shí)數(shù)據(jù)訪問(wèn)的功能。
(4)數(shù)據(jù)實(shí)體層:就是數(shù)據(jù)庫(kù)中的原始數(shù)據(jù)。為了能夠更有效地存儲(chǔ)原始數(shù)據(jù),方便數(shù)據(jù)訪問(wèn)層對(duì)數(shù)據(jù)的存取等操作,就必須對(duì)數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì),將數(shù)據(jù)有規(guī)律地進(jìn)行存放。
數(shù)據(jù)庫(kù)設(shè)計(jì)是信息系統(tǒng)的核心和基礎(chǔ)。首先我們應(yīng)該對(duì)軟件用戶的業(yè)務(wù)數(shù)據(jù)的使用情況進(jìn)行調(diào)查和分析,了解所有業(yè)務(wù)數(shù)據(jù)的種類、范圍、數(shù)量、存在形式以及它們之間的關(guān)聯(lián)情況,并由此確定用戶對(duì)數(shù)據(jù)庫(kù)的要求和相關(guān)制約條件等,形成用戶的需求分析。
通過(guò)用戶的需求分析,建立出一個(gè)合適的數(shù)學(xué)模型。這個(gè)數(shù)學(xué)模型應(yīng)能夠完整反映出現(xiàn)實(shí)中所有業(yè)務(wù)數(shù)據(jù)的信息結(jié)構(gòu)、信息內(nèi)容和信息之間的互相關(guān)聯(lián)與制約關(guān)系,并滿足用戶對(duì)信息的存儲(chǔ)、維護(hù)、檢索和修改數(shù)據(jù)的操作要求等。
2三層架構(gòu)技術(shù)的工作原理
首先,用一張圖表示三層架構(gòu)技術(shù)之間的關(guān)系(見(jiàn)圖1)。
從圖1中可以很清晰地看到四層之間的一個(gè)邏輯關(guān)系。用戶通過(guò)表示層的界面輸入數(shù)據(jù),將數(shù)據(jù)傳遞給業(yè)務(wù)邏輯層進(jìn)行驗(yàn)證、計(jì)算、處理等操作,然后傳遞給數(shù)據(jù)訪問(wèn)層,通過(guò)數(shù)據(jù)訪問(wèn)層到數(shù)據(jù)庫(kù)中進(jìn)行增加、刪除、查找等操作,得到用戶所需要的數(shù)據(jù)結(jié)果,將結(jié)果進(jìn)行存儲(chǔ)并把結(jié)果返回到數(shù)據(jù)訪問(wèn)層,再通過(guò)給業(yè)務(wù)邏輯層,最后以用戶設(shè)定的格式顯示在用戶界面,最終用戶得到自己需要的結(jié)果。四層中任意一層僅僅和自己相鄰的層進(jìn)行數(shù)據(jù)交換,而和其他層無(wú)任何關(guān)聯(lián)。
三層架構(gòu)技術(shù),其實(shí)就相當(dāng)于在客戶端與數(shù)據(jù)庫(kù)端之間加了一個(gè)“中間層”,也可以稱之為組件層。這個(gè)“中間層”,并不是實(shí)際物理意義上的中間層,而指的是邏輯上的中間層,把應(yīng)用程序中的業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)、合法性校驗(yàn)等工作放到了中間層進(jìn)行處理,客戶端不再直接與數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互,而是通過(guò)中間層來(lái)建立連接,再由中間層和數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的交互,最終實(shí)現(xiàn)客戶端和數(shù)據(jù)庫(kù)端的數(shù)據(jù)的交互。
3三層架構(gòu)技術(shù)的規(guī)則
在軟件開(kāi)發(fā)的三層架構(gòu)技術(shù)中,第四層數(shù)據(jù)實(shí)體層是基本的數(shù)據(jù)源,是必不可少的一層,是軟件操作的基礎(chǔ),它的運(yùn)算效果取決于計(jì)算機(jī)的硬件和數(shù)據(jù)庫(kù)設(shè)計(jì)的合理性。而對(duì)于另外三層,并不是只要項(xiàng)目被劃分成了表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層就稱之為三層架構(gòu),這三層之間還必須要遵守一些約定的規(guī)則:
(1)表示層僅僅只是一個(gè)和用戶進(jìn)行對(duì)接的界面,因而可以將其任意移植到其他類似環(huán)境的項(xiàng)目中。
(2)數(shù)據(jù)實(shí)體層只能通過(guò)數(shù)據(jù)訪問(wèn)層進(jìn)行數(shù)據(jù)讀取,其他層都不能夠直接從數(shù)據(jù)實(shí)體層中讀取數(shù)據(jù)。
(3)數(shù)據(jù)訪問(wèn)層只能作為一個(gè)對(duì)數(shù)據(jù)庫(kù)實(shí)體的讀取中間層,而不能進(jìn)行任何業(yè)務(wù)邏輯的處理操作。
(4)軟件設(shè)計(jì)應(yīng)該以業(yè)務(wù)邏輯層為核心,而不是數(shù)據(jù)訪問(wèn)層或是數(shù)據(jù)實(shí)體層,更不應(yīng)該是表示層。在業(yè)務(wù)邏輯層應(yīng)該以面向?qū)ο蟮姆绞剑瑢?shí)現(xiàn)所有的有業(yè)務(wù)邏輯操作。
(5)數(shù)據(jù)層中所有的數(shù)據(jù)都應(yīng)該在一定的抽象程度上做到與系統(tǒng)無(wú)關(guān)。
(6)設(shè)計(jì)的時(shí)候,所有的遠(yuǎn)程對(duì)象技術(shù)都應(yīng)該考慮到不同的服務(wù)器和多臺(tái)服務(wù)器之間的負(fù)載均衡作集群。
(7)這3個(gè)模塊中的任意模塊都可以運(yùn)行在不同的服務(wù)器上。
一個(gè)項(xiàng)目是否需要進(jìn)行三層設(shè)計(jì),首先要看這個(gè)項(xiàng)目的復(fù)雜度。實(shí)際上,很多項(xiàng)目只需要編輯一個(gè)WebApplication就足夠?qū)崿F(xiàn)全部功能了,根本不需要更復(fù)雜的技術(shù),而只有真正復(fù)雜的項(xiàng)目,才需要利用三層架構(gòu)技術(shù)進(jìn)行設(shè)計(jì)和開(kāi)發(fā)。
4三層架構(gòu)技術(shù)的優(yōu)勢(shì)
通過(guò)對(duì)三層架構(gòu)技術(shù)的工作原理的理解,我們可以得到通過(guò)三層架構(gòu)技術(shù)開(kāi)發(fā)出來(lái)的軟件的優(yōu)點(diǎn)。
(1)結(jié)構(gòu)清晰,耦合度低。三層架構(gòu)技術(shù)中層次分明,層與層之間結(jié)構(gòu)清晰,軟件編寫(xiě)人員分工明確,層與層之間的關(guān)聯(lián)不多,降低層與層之間的依賴性,編寫(xiě)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的某一層,從而極大地避免了二層技術(shù)開(kāi)發(fā)的軟件中存在的耦合度問(wèn)題。
(2)可維護(hù)性高,可擴(kuò)展性高。用三層架構(gòu)技術(shù)開(kāi)發(fā)的軟件在后期維護(hù)的時(shí)候,極大地降低了維護(hù)成本和維護(hù)時(shí)間。軟件的任意一部分的功能更改和升級(jí),僅需更改某層的設(shè)計(jì)和編寫(xiě),而不需要對(duì)整個(gè)系統(tǒng)做出改變,而不像用二層技術(shù)開(kāi)發(fā)的軟件那樣,一個(gè)小程序的變化都需要調(diào)整整個(gè)軟件開(kāi)發(fā),極大地提高了軟件的維護(hù)性和擴(kuò)展性。
(3)利于開(kāi)發(fā)任務(wù)同步進(jìn)行,容易適應(yīng)需求變化。三層架構(gòu)技術(shù)極大地解決了軟件開(kāi)發(fā)的問(wèn)題,特別是大型軟件開(kāi)發(fā)的問(wèn)題,讓軟件開(kāi)發(fā)實(shí)現(xiàn)任務(wù)的同步。在二層技術(shù)開(kāi)發(fā)軟件時(shí),由于僅有2個(gè)端點(diǎn),故軟件開(kāi)發(fā)時(shí)就存在一個(gè)編程的先后,必須由一個(gè)團(tuán)隊(duì)對(duì)整個(gè)軟件流程十分清楚,并從始至終編寫(xiě)所有環(huán)節(jié)的程序。而三層架構(gòu)技術(shù)把軟件分成4個(gè)層次,而且層與層之間關(guān)聯(lián)不大,故可以將軟件分成4個(gè)不同層次進(jìn)行同步開(kāi)發(fā),實(shí)現(xiàn)任務(wù)的同步,從而大大縮短了軟件開(kāi)發(fā)的時(shí)間,更容易適應(yīng)需求的變化。
5三層架構(gòu)技術(shù)的缺點(diǎn)
(1)降低了整個(gè)系統(tǒng)的讀取數(shù)據(jù)的速度。在二層技術(shù)結(jié)構(gòu)中,大部分?jǐn)?shù)據(jù)的讀取是通過(guò)客戶端直接造訪數(shù)據(jù)庫(kù)而得到的結(jié)果,而三層架構(gòu)技術(shù)卻必須經(jīng)過(guò)4個(gè)層次的完整過(guò)程才能得到最終結(jié)果,無(wú)形中增加了中間環(huán)節(jié),從而降低了系統(tǒng)的性能。
(2)有時(shí)會(huì)導(dǎo)致關(guān)聯(lián)層次的修改。由于三層架構(gòu)技術(shù)中層與層之間存在邏輯關(guān)系,當(dāng)其中一個(gè)層次由于需要而發(fā)生功能的改變或增加時(shí),很有可能導(dǎo)致其他層次的代碼改變。例如:當(dāng)表示層中增加了一個(gè)功能,為了保證其各層設(shè)計(jì)的結(jié)構(gòu)合理性,可能需要在對(duì)應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層中都增加相應(yīng)的代碼,從而達(dá)到最終數(shù)據(jù)的一致性。
(3)整體代碼編寫(xiě)的工作量增加。由于三層架構(gòu)技術(shù)增加了層與層之間的接口,有些能夠直接使用的代碼現(xiàn)在不得不分開(kāi)使用,無(wú)形中增加了代碼的編寫(xiě)工作量。
(4)增加了開(kāi)發(fā)成本。原先一個(gè)整體的軟件開(kāi)發(fā),現(xiàn)在首先必須將其分割成不同功能的層次,而且需要考慮層與層之間的連接接口,無(wú)形中增加了整個(gè)軟件開(kāi)發(fā)的過(guò)程和工作量,從而增加了軟件開(kāi)發(fā)的成本。
總體而言,針對(duì)如今軟件開(kāi)發(fā)的日趨大型化、規(guī);奶攸c(diǎn),三層架構(gòu)技術(shù)解決了很多二層架構(gòu)技術(shù)中無(wú)法解決的問(wèn)題,從而真正實(shí)現(xiàn)了軟件開(kāi)發(fā)的同步性、可維護(hù)性和可擴(kuò)展性,是軟件開(kāi)發(fā)進(jìn)步的重要標(biāo)志。
【淺析軟件開(kāi)發(fā)中的三層架構(gòu)技術(shù)論文】相關(guān)文章:
淺析長(zhǎng)號(hào)在樂(lè)隊(duì)演奏中的特點(diǎn)論文09-17
淺析師生有效互動(dòng)在小學(xué)體育教學(xué)中的應(yīng)用論文07-26
淺析共享單車論文08-28
水利施工中滑模技術(shù)作用論文08-29
淺析余光中的鄉(xiāng)愁01-04
淺析余光中的“鄉(xiāng)愁”01-05
信息技術(shù)在初中數(shù)學(xué)教學(xué)中的應(yīng)用論文05-15