偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

ASP.NET三層結(jié)構(gòu)的說明及三層架構(gòu)的缺點(diǎn)

開發(fā) 后端
本文對ASP.NET三層結(jié)構(gòu)作了一些說明,并總結(jié)了一些三層架構(gòu)的缺點(diǎn)。三層結(jié)構(gòu)不是.NET的專利,也不是專門用在數(shù)據(jù)庫上的技術(shù)。它是一種更加普適的架構(gòu)設(shè)計理念。

ASP.NET三層結(jié)構(gòu)說明

完善的三層結(jié)構(gòu)的要求是:修改表現(xiàn)層而不用修改邏輯層,修改邏輯層而不用修改數(shù)據(jù)層。否則你的應(yīng)用是不是多層結(jié)構(gòu),或者說是層結(jié)構(gòu)的劃分和組織上是不是有問題就很難說.不同的應(yīng)用有不同的理解,這只是一個概念的問題.

理解ASP.NET三層結(jié)構(gòu)——為什么要分三層?

我們用三層結(jié)構(gòu)主要是使項(xiàng)目結(jié)構(gòu)更清楚,分工更明確,有利于后期的維護(hù)和升級。它未必會提升性能,因?yàn)楫?dāng)子程序模塊未執(zhí)行結(jié)束時,主程序模塊只能處于等待狀態(tài)。這說明將應(yīng)用程序劃分層次,會帶來其執(zhí)行速度上的一些損失。但從團(tuán)隊(duì)開發(fā)效率角度上來講卻可以感受到大不相同的效果。

需要說明一下,三層結(jié)構(gòu)不是.NET的專利,也不是專門用在數(shù)據(jù)庫上的技術(shù)。它是一種更加普適的架構(gòu)設(shè)計理念。

此種架構(gòu)要在數(shù)據(jù)庫設(shè)計上注意表之間的關(guān)系,盡力滿足主與子的關(guān)系。在功能上對用戶要有一定的限制,不要表現(xiàn)在對于子表的刪除操作一定要慎重,以免造成主表與子表的數(shù)據(jù)在邏輯上出現(xiàn)的主表的外鍵在子表中沒有相對應(yīng)的值。

對于表的綜合查詢方法是:

先對主表查詢,調(diào)用主表所對應(yīng)的DL。再根據(jù)主表的記錄分別對每一個子表進(jìn)行查詢。將自表的查詢結(jié)果添加的主表后,形成一個大的查詢集合。

對于表的操作(增刪改):

此時只對主表進(jìn)行操作,調(diào)用主表對應(yīng)的DL中的操作方法。

RL層是邏輯判斷層,主要是對頁面上傳入的數(shù)據(jù)進(jìn)行邏輯判斷。RL層之上就是UI

如何建立一個三層體系結(jié)構(gòu)解決方案

新建一個空白解決方案。然后:    

“添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級模版項(xiàng)目”-“C#生成塊”-“數(shù)據(jù)訪問”(數(shù)據(jù)層,下簡稱D層)    

“添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級模版項(xiàng)目”-“C#生成塊”-“業(yè)務(wù)規(guī)則”(業(yè)務(wù)層,下簡稱C層)    

“添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級模版項(xiàng)目”-“C#生成塊”-“Web用戶界面”(界面層,下簡稱U層)    

右鍵點(diǎn)“解決方案”-“項(xiàng)目依賴項(xiàng)”,設(shè)置U依賴于D、C,C依賴于D。    

對U添加引用D、C,對C添加引用D。    

到此為止,一個三層的架子建立起來了。我上面說的很具體很“傻瓜”,知道的人覺得我廢話,其實(shí)我這段時間很強(qiáng)烈的感覺到非常多的人其實(shí)對這個簡單的過程完全不了解。雖然不反對建2個“空項(xiàng)目”和1個“Asp    net    Web應(yīng)用程序項(xiàng)目”也可以作為3層的框架,而且相當(dāng)多的人認(rèn)為其實(shí)這些“企業(yè)級模板項(xiàng)目”其實(shí)就是個空項(xiàng)目,這是一個誤區(qū)。沒錯,企業(yè)級模板項(xiàng)目你從解決方案資源管理器里看它是個什么也沒有的,但是你可以用記事本打開項(xiàng)目文件,看見不同了吧??有些東西在背后,你是看不見的,不過系統(tǒng)已經(jīng)做好了。也就是說,如果你在C層里的某個類里“using    System    Data    SqlClineit”,或者使用一個SqlConnection對象,編譯時候不會出錯,但是會在“任務(wù)列表”里生成一些“策略警告”,警告你在C層里不要放應(yīng)該放在D層的東西(雖然就程序來說沒錯,但是可讀性可維護(hù)性就打了折扣)而這種功能,空項(xiàng)目是無法給你的。

在新TraceLWord3中,應(yīng)用了“企業(yè)級模板項(xiàng)目”。把原來的LWordTask.cs,并放置到一個單一的項(xiàng)目里,項(xiàng)目名稱為:AccessTask。解決方案中又新建了一個名稱為:InterService的項(xiàng)目,該項(xiàng)目中包含一個LWordService.cs程序文件,它便是“中間業(yè)務(wù)層”程序。為了不重復(fù)命名,TraceLWord3的網(wǎng)站被放置到了WebUI項(xiàng)目中。更完整的代碼,可以在CodePackage/TraceLWord3目錄中找到——    

ASP.NET三層結(jié)構(gòu):面象對象與實(shí)際的結(jié)合

我們知道建橋需要磚塊,應(yīng)該是先準(zhǔn)備好磚再來建橋,不過為了講解上的順序性和連貫性,簡單性。我們先建橋,建的過程中需要磚塊再現(xiàn)做,這樣就不會多出來“橋不需要的東西”。注意在實(shí)際中,還是應(yīng)該先準(zhǔn)備磚塊。

U層其實(shí)就是橋,C層是磚塊,D層是原料(石頭、沙子)。這也解釋前面為什么U層要引用、依賴D層(而不是U對C,C對D的層次),因?yàn)闃虺诵枰u頭,其實(shí)也需要石頭沙子。

“三層結(jié)構(gòu)”的缺點(diǎn)

有些網(wǎng)友在讀完這篇文章前作之后,對我提出了一些質(zhì)疑,這提醒我文章至此還沒有提及“三層結(jié)構(gòu)”的缺點(diǎn)?!叭龑咏Y(jié)構(gòu)”這個詞眼似乎一直都很熱門,究其原因,或許是這種開發(fā)模式應(yīng)用的比較普遍。但是“三層結(jié)構(gòu)”卻并不是百試百靈的“萬靈藥”,它也存在著缺點(diǎn)。下面就來說說它的缺點(diǎn)……

“三層結(jié)構(gòu)”開發(fā)模式的一個非常明顯的缺點(diǎn)就是其執(zhí)行速度不夠快。當(dāng)然這個“執(zhí)行速度”是相對于非分層的應(yīng)用程序來說的。從文中所給出的時序圖來看,也明顯的暴露了這一缺點(diǎn)。TraceLWord1和TraceLWord2沒有分層,直接調(diào)用的ADO.NET所提供的類來獲取數(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)生反感,也是可以理解的……

其實(shí),無論哪一種開發(fā)模式或方法,都是有利有弊的。不會存在一種“萬用法”可以解決任何問題。所以“三層結(jié)構(gòu)”這個詞眼也不會是個例外!是否采用這個模式進(jìn)行系統(tǒng)開發(fā),要作出比較、權(quán)衡之后才可以。切忌濫用!

【編輯推薦】

  1. ASP.NET學(xué)習(xí)之ASP.NET概述
  2. ASP.NET AJAX組成部分的淺析
  3. ASP.NET AJAX的安裝和簡單配置淺析
  4. Asp.net Ajax控件之AutoComplete控件幾點(diǎn)淺析
  5. Windows Server 2003安裝ASP.NET淺析
責(zé)任編輯:yangsai 來源: 博客園
相關(guān)推薦

2009-07-30 13:07:49

ASP.NET中的三層

2009-07-28 15:08:50

MVC三層架構(gòu)實(shí)例

2009-07-30 13:30:56

ASP.NET開發(fā)模式

2011-04-19 13:53:41

三層架構(gòu)

2013-01-09 11:00:20

架構(gòu)開發(fā)三層架構(gòu).NET架構(gòu)

2009-07-28 17:18:33

2009-08-26 18:20:42

三層架構(gòu)

2012-02-03 09:44:33

.NET

2012-07-16 10:19:02

MongoDB

2009-04-30 09:15:25

三層結(jié)構(gòu)MVC架構(gòu)

2017-06-12 13:18:51

數(shù)據(jù)報表計算

2011-08-08 14:14:03

架構(gòu)

2014-02-12 10:07:07

三層交換原理

2018-03-08 15:30:31

超融合架構(gòu)傳統(tǒng)三層架構(gòu)

2009-05-06 09:40:04

LINQWEB開發(fā)構(gòu)架

2010-03-11 10:49:45

三層交換

2010-01-15 10:22:01

三層交換技術(shù)缺點(diǎn)

2012-09-04 09:41:00

三層架構(gòu)架構(gòu)EF

2010-03-19 10:34:39

三層交換

2009-04-30 15:56:50

三層架構(gòu)MVCMVP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號