日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

三层体系结构学习总结

發(fā)布時(shí)間:2025/3/8 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 三层体系结构学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

三層架構(gòu)學(xué)習(xí)總結(jié) KeyWords: 三層體系結(jié)構(gòu),DAL,BLL,USL,學(xué)習(xí)心得,三層體系結(jié)構(gòu),軟件三層體系結(jié)構(gòu)? By Flouse 2008年7月24日
  • 三層體系結(jié)構(gòu)的概念
  • 用戶界面表示層(USL)
  • 業(yè)務(wù)邏輯層(BLL)
  • 數(shù)據(jù)訪問層(DAL)

  • 圖一:BLL將USL與DAL隔開了,并且加入了業(yè)務(wù)規(guī)則

    • 各層的作用
    • 1:數(shù)據(jù)數(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ù)。
    • 具體的區(qū)分方法

      1:數(shù)據(jù)數(shù)據(jù)訪問層:主要看你的數(shù)據(jù)層里面有沒有包含邏輯處理,實(shí)際上他的各個(gè)函數(shù)主要完成各個(gè)對(duì)數(shù)據(jù)文件的操作。而不必管其他操作。

      2:業(yè)務(wù)邏輯層:主要負(fù)責(zé)對(duì)數(shù)據(jù)層的操作。也就是說把一些數(shù)據(jù)層的操作進(jìn)行組合。

      3:表示層:主要對(duì)用戶的請(qǐng)求接受,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問。
    • 三層結(jié)構(gòu)解釋

      所謂三層體系結(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)行交換.

      開發(fā)人員可以將應(yīng)用的商業(yè)邏輯放在中間層應(yīng)用服務(wù)器上,把應(yīng)用的業(yè)務(wù)邏輯與用戶界面分開。在保證客戶端功能的前提下,為用戶提供一個(gè)簡潔的界面。這意味著如果需要修改應(yīng)用程序代碼,只需要對(duì)中間層應(yīng)用服務(wù)器進(jìn)行修改,而不用修改成千上萬的客戶端應(yīng)用程序。從而使開發(fā)人員可以專注于應(yīng)用系統(tǒng)核心業(yè)務(wù)邏輯的分析、設(shè)計(jì)和開發(fā),簡化了應(yīng)用系統(tǒng)的開發(fā)、更新和升級(jí)工作。
    • 那么為什么要應(yīng)用“中間業(yè)務(wù)層”呢?舉些例子:
      ????我們假設(shè)有一段登錄代碼,則可以這樣處理Web程序,外觀層負(fù)責(zé)接收前臺(tái)頁面的數(shù)據(jù),然后傳給中間層,中間層對(duì)數(shù)據(jù)進(jìn)行處理,比如格式化,防SQL注入等等一些,這樣的數(shù)據(jù)再傳給數(shù)據(jù)訪問層然后與數(shù)據(jù)庫進(jìn)行操作,比如與數(shù)據(jù)庫的用戶名和密碼匹配等等一些代碼。
    • “中間業(yè)務(wù)層”的用途有很多,例如:驗(yàn)證用戶輸入數(shù)據(jù)、緩存從數(shù)據(jù)庫中讀取的數(shù)據(jù)等等……但是,“中間業(yè)務(wù)層”的實(shí)際目的是將“數(shù)據(jù)訪問層”的最基礎(chǔ)的存儲(chǔ)邏輯組合起來,形成一種業(yè)務(wù)規(guī)則。例如:“在一個(gè)購物網(wǎng)站中有這樣的一個(gè)規(guī)則:在該網(wǎng)站第一次購物的用戶,系統(tǒng)為其自動(dòng)注冊(cè)”。這樣的業(yè)務(wù)邏輯放在中間層最合適:

    ?

    ?

    在“數(shù)據(jù)訪問層”中,最好不要出現(xiàn)任何“業(yè)務(wù)邏輯”!也就是說,要保證“數(shù)據(jù)訪問層”的中的函數(shù)功能的原子性!即最小性和不可再分。“數(shù)據(jù)訪問層”只管負(fù)責(zé)存儲(chǔ)或讀取數(shù)據(jù)就可以了。

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

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

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


      需要說明一下,三層結(jié)構(gòu)不是.NET的專利,也不是專門用在數(shù)據(jù)庫上的技術(shù)。它是一種更加普適的架構(gòu)設(shè)計(jì)理念。
    • 個(gè)人感覺
    • 個(gè)人感覺此種架構(gòu)要在數(shù)據(jù)庫設(shè)計(jì)上注意表之間的關(guān)系,盡力滿足主與子的關(guān)系。在功能上對(duì)用戶要有一定的限制,不要表現(xiàn)在對(duì)于子表的刪除操作一定要慎重,以免造成主表與子表的數(shù)據(jù)在邏輯上出現(xiàn)的主表的外鍵在子表中沒有相對(duì)應(yīng)的值。
    • 對(duì)于表的綜合查詢方法是:
      先對(duì)主表查詢,調(diào)用主表所對(duì)應(yīng)的DL。再根據(jù)主表的記錄分別對(duì)每一個(gè)子表進(jìn)行查詢。將自表的查詢結(jié)果添加的主表后,形成一個(gè)大的查詢集合。
      對(duì)于表的操作(增刪改):
      此時(shí)只對(duì)主表進(jìn)行操作,調(diào)用主表對(duì)應(yīng)的DL中的操作方法。
      RL層是邏輯判斷層,主要是對(duì)頁面上傳入的數(shù)據(jù)進(jìn)行邏輯判斷。RL層之上就是UI

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

      新建一個(gè)空白解決方案。然后: ????
      “添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級(jí)模版項(xiàng)目”-“C#生成塊”-“數(shù)據(jù)訪問”(數(shù)據(jù)層,下簡稱D層) ????
      “添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級(jí)模版項(xiàng)目”-“C#生成塊”-“業(yè)務(wù)規(guī)則”(業(yè)務(wù)層,下簡稱C層) ????
      “添加”-“新建項(xiàng)目”-“其他項(xiàng)目”-“企業(yè)級(jí)模版項(xiàng)目”-“C#生成塊”-“Web用戶界面”(界面層,下簡稱U層) ????
      右鍵點(diǎn)“解決方案”-“項(xiàng)目依賴項(xiàng)”,設(shè)置U依賴于D、C,C依賴于D。 ????
      對(duì)U添加引用D、C,對(duì)C添加引用D。 ????
      到此為止,一個(gè)三層的架子建立起來了。我上面說的很具體很“傻瓜”,知道的人覺得我廢話,其實(shí)我這段時(shí)間很強(qiáng)烈的感覺到非常多的人其實(shí)對(duì)這個(gè)簡單的過程完全不了解。雖然不反對(duì)建2個(gè)“空項(xiàng)目”和1個(gè)“Asp ??net ??Web應(yīng)用程序項(xiàng)目”也可以作為3層的框架,而且相當(dāng)多的人認(rèn)為其實(shí)這些“企業(yè)級(jí)模板項(xiàng)目”其實(shí)就是個(gè)空項(xiàng)目,這是一個(gè)誤區(qū)。沒錯(cuò),企業(yè)級(jí)模板項(xiàng)目你從解決方案資源管理器里看它是個(gè)什么也沒有的,但是你可以用記事本打開項(xiàng)目文件,看見不同了吧??有些東西在背后,你是看不見的,不過系統(tǒng)已經(jīng)做好了。也就是說,如果你在C層里的某個(gè)類里“using ??System ??Data ??SqlClineit”,或者使用一個(gè)SqlConnection對(duì)象,編譯時(shí)候不會(huì)出錯(cuò),但是會(huì)在“任務(wù)列表”里生成一些“策略警告”,警告你在C層里不要放應(yīng)該放在D層的東西(雖然就程序來說沒錯(cuò),但是可讀性可維護(hù)性就打了折扣)而這種功能,空項(xiàng)目是無法給你的。
    • 在新TraceLWord3中,應(yīng)用了“企業(yè)級(jí)模板項(xiàng)目”。把原來的LWordTask.cs,并放置到一個(gè)單一的項(xiàng)目里,項(xiàng)目名稱為:AccessTask。解決方案中又新建了一個(gè)名稱為:InterService的項(xiàng)目,該項(xiàng)目中包含一個(gè)LWordService.cs程序文件,它便是“中間業(yè)務(wù)層”程序。為了不重復(fù)命名,TraceLWord3的網(wǎng)站被放置到了WebUI項(xiàng)目中。更完整的代碼,可以在CodePackage/TraceLWord3目錄中找到——

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

    • U層其實(shí)就是橋,C層是磚塊,D層是原料(石頭、沙子)。這也解釋前面為什么U層要引用、依賴D層(而不是U對(duì)C,C對(duì)D的層次),因?yàn)闃虺诵枰u頭,其實(shí)也需要石頭沙子。
    • “三層結(jié)構(gòu)”的缺點(diǎn)
    • 有些網(wǎng)友在讀完這篇文章前作之后,對(duì)我提出了一些質(zhì)疑,這提醒我文章至此還沒有提及“三層結(jié)構(gòu)”的缺點(diǎn)。“三層結(jié)構(gòu)”這個(gè)詞眼似乎一直都很熱門,究其原因,或許是這種開發(fā)模式應(yīng)用的比較普遍。但是“三層結(jié)構(gòu)”卻并不是百試百靈的“萬靈藥”,它也存在著缺點(diǎn)。下面就來說說它的缺點(diǎn)……

    • “三層結(jié)構(gòu)”開發(fā)模式的一個(gè)非常明顯的缺點(diǎn)就是其執(zhí)行速度不夠快。當(dāng)然這個(gè)“執(zhí)行速度”是相對(duì)于非分層的應(yīng)用程序來說的。從文中所給出的時(shí)序圖來看,也明顯的暴露了這一缺點(diǎn)。TraceLWord1和TraceLWord2沒有分層,直接調(diào)用的ADO.NET所提供的類來獲取數(shù)據(jù)。但是,TraceLWord6確要經(jīng)過多次調(diào)用才能獲取到數(shù)據(jù)。在子程序模塊程序沒有返回時(shí),主程序模塊只能處于等待狀態(tài)。所以在執(zhí)行速度上,留言板的版本越高,排名卻越靠后。“三層結(jié)構(gòu)”開發(fā)模式,不適用于對(duì)執(zhí)行速度要求過于苛刻的系統(tǒng),例如:在線訂票,在線炒股等等……它比較擅長于商業(yè)規(guī)則容易變化的系統(tǒng)。

      “三層結(jié)構(gòu)”開發(fā)模式,入門難度夠高,難于理解和學(xué)習(xí)。這是對(duì)于初學(xué)程序設(shè)計(jì)的人來說的。以這種模式開發(fā)出來的軟件,代碼量通常要稍稍多一些。這往往會(huì)令初學(xué)者淹沒在茫茫的代碼之中。望之生畏,對(duì)其產(chǎn)生反感,也是可以理解的……

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

    • 參與資料
  • MainDoc.rar ??(《淺談“三層結(jié)構(gòu)”原理與用意》1.30M) ?????

    http://www.bincess.cn/Downloads/MainDoc.rar ????
  • petshop 4.0的體系結(jié)構(gòu)(只是稍微看了一下,了解一下結(jié)構(gòu)) 簡介:PetShop隨著版本的不斷更新,至現(xiàn)在基于.Net 2.0的PetShop4.0為止,整個(gè)設(shè)計(jì)逐漸變得成熟而優(yōu)雅,而且有很多可以借鑒之處。PetShop是一個(gè)小型的項(xiàng)目,系統(tǒng)架構(gòu)與代碼都比較簡單,卻也凸現(xiàn)了許多頗有價(jià)值的設(shè)計(jì)與開發(fā)理念。 下載地址:http://msdn.microsoft.com/en-us/library/aa479070.aspx PetShop架構(gòu)設(shè)計(jì)
    三層”應(yīng)用結(jié)構(gòu):數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層(領(lǐng)域?qū)?#xff09;、表示層
    分層的設(shè)計(jì)的特點(diǎn):
    結(jié)構(gòu)清晰、耦合度低
    便于系統(tǒng)的擴(kuò)展
    利于開發(fā)任務(wù)同步進(jìn)行
    降低了一定的性能 .Net ??PetShop ??4.0 ??配置文件屬性管理 http://blog.csdn.net/fengfangfang/archive/2006/09/07/1189061.aspx ??????

    .Net ??PetShop ??4.0 ??緩存處理 ??????
    http://blog.csdn.net/fengfangfang/archive/2006/09/06/1185077.aspx ??????

    .Net ??PetShop ??4.0 ??消息處理 ??????
    http://blog.csdn.net/fengfangfang/archive/2006/09/08/1194896.aspx ??????

    每個(gè)功能都使用了工廠模式 ?
  • 參考了Duwamish
  • Web Search
  • 轉(zhuǎn)載于:https://www.cnblogs.com/Flouse/archive/2008/07/24/3L.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的三层体系结构学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。