三層體系結(jié)構(gòu)的概念_第1頁
三層體系結(jié)構(gòu)的概念_第2頁
三層體系結(jié)構(gòu)的概念_第3頁
三層體系結(jié)構(gòu)的概念_第4頁
三層體系結(jié)構(gòu)的概念_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

BLL將USL與DAL隔開了,并且加入了業(yè)務(wù)規(guī)章各層的作用:數(shù)據(jù)數(shù)據(jù)訪問層:主要是對原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)的形式)的操作層,而不是指原始數(shù)據(jù),也就是說,是對數(shù)據(jù)的操作,而不是數(shù)據(jù)庫,詳細(xì)為業(yè)務(wù)規(guī)律層或表示層供應(yīng)數(shù)據(jù)服務(wù).:業(yè)務(wù)規(guī)律層:主要是針對詳細(xì)的問題的操作,也可以理解成對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)規(guī)律處理,假如說數(shù)據(jù)層是積木,那規(guī)律層就是對這些積木的搭建。:表示層:主要表示W(wǎng)EB方式,也可以表示成WINFORM方式,WEB方式也可以表現(xiàn)成:aspx,假如規(guī)律層相當(dāng)強大和完善,無論表現(xiàn)層如何定義和更改,規(guī)律層都能完善地供應(yīng)服務(wù)。詳細(xì)的區(qū)分方法:數(shù)據(jù)數(shù)據(jù)訪問層:主要看你的數(shù)據(jù)層里面有沒有包含規(guī)律處理,實際上他的各個函數(shù)主要完成各個對數(shù)據(jù)文件的操作。而不必管其他操作。:業(yè)務(wù)規(guī)律層:主要負(fù)責(zé)對數(shù)據(jù)層的操作。也就是說把一些數(shù)據(jù)層的操作進行組合。:表示層:主要對用戶的懇求接受,以及數(shù)據(jù)的返回,為客戶端供應(yīng)應(yīng)用程序的訪問。三層結(jié)構(gòu)解釋所謂三層體系結(jié)構(gòu),是在客戶端與數(shù)據(jù)庫之間加入了一個中間層,也叫組件層。這里所說的三層體系,不是指物理上的三層,不是簡潔地放置三臺機器就是三層體系結(jié)構(gòu),也不僅僅有B/S應(yīng)用才是三層體系結(jié)構(gòu),三層是指規(guī)律上的三層,即使這三個層放置到一臺機器上。三層體系的應(yīng)用程序?qū)I(yè)務(wù)規(guī)章、數(shù)據(jù)訪問、合法性校驗等工作放到了中間層進行處理。通常狀況下,客戶端不直接與數(shù)據(jù)庫進行交互,而是通過COM/DCOM通訊與中間層建立連接,再經(jīng)由中間層與數(shù)據(jù)庫進行交換.開發(fā)人員可以將應(yīng)用的商業(yè)規(guī)律放在中間層應(yīng)用服務(wù)器上,把應(yīng)用的業(yè)務(wù)規(guī)律與用戶界面分開。在保證客戶端功能的前提下,為用戶供應(yīng)一個簡潔的界面。這意味著假如需要修改應(yīng)用程序代碼,只需要對中間層應(yīng)用服務(wù)器進行修改,而不用修改成千上萬的客戶端應(yīng)用程序。從而使開發(fā)人員可以專注于應(yīng)用系統(tǒng)核心業(yè)務(wù)規(guī)律的分析、設(shè)計和開發(fā),簡化了應(yīng)用系統(tǒng)的開發(fā)、更新和升級工作。那么為什么要應(yīng)用“中間業(yè)務(wù)層”呢?舉些例子:我們假設(shè)有一段登錄代碼,則可以這樣處理Web程序,外觀層負(fù)責(zé)接收前臺頁面的數(shù)據(jù),然后傳給中間層,中間層對數(shù)據(jù)進行處理,比如格式化,防SQL注入等等一些,這樣的數(shù)據(jù)再傳給數(shù)據(jù)訪問層然后與數(shù)據(jù)庫進行操作,比如與數(shù)據(jù)庫的用戶名和密碼匹配等等一些代碼。"中間業(yè)務(wù)層”的用途有很多,例如:驗證用戶輸入數(shù)據(jù)、緩存從數(shù)據(jù)庫中讀取的數(shù)據(jù)等等.?????但是據(jù)中間業(yè)務(wù)層"的實際目的是將"數(shù)據(jù)訪問層"的最基礎(chǔ)的存儲規(guī)律組合起來,形成一種業(yè)務(wù)規(guī)章。例如:"在一個購物網(wǎng)站中有這樣的一個規(guī)章:在該網(wǎng)站第一次購物的用戶,系統(tǒng)為其自動注冊”。這樣的業(yè)務(wù)規(guī)律放在中間層最合適:在"數(shù)據(jù)訪問層"中,最好不要消失任何"業(yè)務(wù)規(guī)律"!也就是說,要保證"數(shù)據(jù)訪問層"的中的函數(shù)功能的原子性!即最小性和不行再分。"數(shù)據(jù)訪問層"只管負(fù)責(zé)存儲或讀取數(shù)據(jù)就可以了。ASP.NET中的三層結(jié)構(gòu)說明完善的三層結(jié)構(gòu)的要求是:修改表現(xiàn)層而不用修改規(guī)律層,修改規(guī)律層而不用修改數(shù)據(jù)層。否則你的應(yīng)用是不是多層結(jié)構(gòu),或者說是層結(jié)構(gòu)的劃分和組織上是不是有問題就很難說.不同的應(yīng)用有不同的理解,這只是一個概念的問題.理解ASP.NET中的三層結(jié)構(gòu)——為什么要分三層?我們用三層結(jié)構(gòu)主要是使項目結(jié)構(gòu)更清晰,分工更明確,有利于后期的維護和升級。它未必會提升性能,由于當(dāng)子程序模塊未執(zhí)行結(jié)束時,主程序模塊只能處于等待狀態(tài)。這說明將應(yīng)用程序劃分層次,會帶來其執(zhí)行速度上的一些損失。但從團隊開發(fā)效率角度上來講卻可以感受到大不相同的效果。需要說明一下,三層結(jié)構(gòu)不是.NET的專利,也不是特地用在數(shù)據(jù)庫上的技術(shù)。它是一種更加普適的架構(gòu)設(shè)計理念。此種架構(gòu)要在數(shù)據(jù)庫設(shè)計上留意表之間的關(guān)系,盡力滿意主與子的關(guān)系。在功能上對用戶要有肯定的限制,不要表現(xiàn)在對于子表的刪除操作肯定要慎重,以免造成主表與子表的數(shù)據(jù)在規(guī)律上消失的主表的外鍵在子表中沒有相對應(yīng)的值。對于表的綜合查詢方法是:先對主表查詢,調(diào)用主表所對應(yīng)的DL。再依據(jù)主表的紀(jì)錄分別對每一個子表進行查詢。將自表的查詢結(jié)果添加的主表后,形成一個大的查詢集合。對于表的操作(增刪改):此時只對主表進行操作,調(diào)用主表對應(yīng)的DL中的操作方法。RL層是規(guī)律推斷層,主要是對頁面上傳入的數(shù)據(jù)進行規(guī)律推斷。RL層之上就是UI如何建立一個三層體系結(jié)構(gòu)解決方案新建一個空白解決方案。然后:"添加"-"新建項目"-"其他項目"-"企業(yè)級模版項目"-"C#生成塊"-"數(shù)據(jù)訪問"(數(shù)據(jù)層,下簡稱D層)"添加"-"新建項目"-"其他項目"-"企業(yè)級模版項目"-"C#生成塊"-"業(yè)務(wù)規(guī)章"(業(yè)務(wù)層,下簡稱C層)"添加"-"新建項目"-"其他項目"-"企業(yè)級模版項目"-"C#生成塊"-"Web用戶界面"(界面層,下簡稱U層)右鍵點"解決方案"-"項目依靠項",設(shè)置U依靠于D、C,C依靠于D。對U添加引用D、C,對C添加引用Do到此為止,一個三層的架子建立起來了。我上面說的很詳細(xì)很"傻瓜",知道的人覺得我廢話,其實我這段時間很劇烈的感覺到特別多的人其實對這個簡潔的過程完全不了解。雖然不反對建2個“空項目"和1個"AspnetWeb應(yīng)用程序項目"也可以作為3層的框架,而且相當(dāng)多的人認(rèn)為其實這些"企業(yè)級模板項目"其實就是個空項目,這是一個誤區(qū)。沒錯,企業(yè)級模板項目你從解決方案資源管理器里看它是個什么也沒有的,但是你可以用記事本打開項目文件,觀察不同了吧??有些東西在背后,你是看不見的,不過系統(tǒng)已經(jīng)做好了。也就是說,假如你在c層里的某個類里"usingSystemDataSqlClineit",或者使用一^SqlConnection對象,編譯時候不會出錯,但是會在"任務(wù)列表”里生成一些"策略警告",警告你在C層里不要放應(yīng)當(dāng)放在D層的東西(雖然就程序來說沒錯,但是可讀性可維護性就打了折扣)而這種功能,空項目是無法給你的。在新TraceLWord3中,應(yīng)用了"企業(yè)級模板項目”。把原來的LWordTask.cs,并放置到一個單一的項目里,項目名稱為:AccessTask。解決方案中又新建了一個名稱為:InterService的項目,該項目中包含一個LWordService.cs程序文件,它便是"中間業(yè)務(wù)層"程序。為了不重復(fù)命名,TraceLWord3的網(wǎng)站被放置到了WebUI項目中。更完整的代碼,可以在CodePackage/TraceLWord3名目中找到 面象對象與實際的結(jié)合我們知道建橋需要磚塊,應(yīng)當(dāng)是先預(yù)備好磚再來建橋,不過為了講解上的挨次性和連貫性,簡潔性。我們先建橋,建的過程中需要磚塊再現(xiàn)做,這樣就不會多出來"橋不需要的東西"。留意在實際中,還是應(yīng)當(dāng)先預(yù)備磚塊。U層其實就是橋,C層是磚塊,D層是原料(石頭、沙子X這也解釋前面為什么U層要引用、依靠D層(而不是U對C,C對D的層次),由于橋除了需要磚頭,其實也需要石頭沙子。"三層結(jié)構(gòu)”的缺點有些網(wǎng)友在讀完這篇文章前作之后,對我提出了一些質(zhì)疑,這提示我文章至此還沒有提及"三層結(jié)構(gòu)"的缺點。"三層結(jié)構(gòu)”這個詞眼好像始終都很熱門,究其緣由,或許是這種開發(fā)模式應(yīng)用的比較普遍。但是"三層結(jié)構(gòu)"卻并不是百試百靈的“萬靈藥",它也存在著缺點。下面就來說說它的缺點……"三層結(jié)構(gòu)"開發(fā)模式的一個特別明顯的缺點就是其執(zhí)行速度不夠快。當(dāng)然這個“執(zhí)行速度”是相對于非分層的應(yīng)用程序來說的。從文中所給出的時序圖來看,也明顯的暴露了這一缺點。TraceLWordl和TraceLWord2沒有分層,直接調(diào)用的ADO.NET所供應(yīng)的類來獵取數(shù)據(jù)。但是,TraceLWord6確要經(jīng)過多次調(diào)用才能獵取到數(shù)據(jù)。在子程序模塊程序沒有返回時,主程序模塊只能處于等待狀態(tài)。所以在執(zhí)行速度上,留言板的版本越高,排名卻越靠后。"三層結(jié)構(gòu)"開發(fā)模式,不適用于對執(zhí)行速度要求過于苛刻的系統(tǒng),例如:在線訂票,在線炒股等等……它比較擅長于商業(yè)規(guī)章簡潔變化的系統(tǒng)。"三層結(jié)構(gòu)"開發(fā)模式,入門難度夠高,難于理解和學(xué)習(xí)。這是對于初學(xué)程序設(shè)計的人來說的。以這種模式開發(fā)出來的軟件,代碼量通常要稍稍多一些。這往往會令初學(xué)者沉沒在茫茫的代碼之中。望之生畏,對其產(chǎn)生反感,也是可以理解的……其實,無論哪一種開發(fā)模式或方法,都是有利有弊的。不會存在一種“萬用法"可以解決任何問題。所以"三層結(jié)構(gòu)”這個詞眼也不會是個例外!是否采納這個模式進行系統(tǒng)開發(fā),要作出比較、權(quán)衡之后才可以。切忌濫用!參加資料MainDoc.rar(《淺談"三層結(jié)構(gòu)"原理與用意》1.30M)petshop4.0的體系結(jié)構(gòu)(只是略微看了一下,了解一下結(jié)構(gòu))簡介:PetShop隨著版本的不斷更新,至現(xiàn)在基于.Net2.0的PetShop4.0為止,整個設(shè)計漸漸變得成熟而優(yōu)雅,而且有很多可以借鑒之處。PetShop是一個小型的項目,系統(tǒng)架構(gòu)與代碼都比較簡潔,卻也凸現(xiàn)了很多頗有價值的設(shè)計與開發(fā)理念。下載地址:PetShop架構(gòu)設(shè)計三層"應(yīng)用結(jié)構(gòu):數(shù)據(jù)訪問層、業(yè)務(wù)規(guī)律層

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論