最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單介紹三層架構(gòu)工作原理

 更新時(shí)間:2021年12月07日 15:57:57   作者:不想掉頭發(fā)$  
這篇文章介紹了三層架構(gòu)的工作原理,二層與三層架構(gòu)的區(qū)別,三層架構(gòu)的優(yōu)劣勢(shì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

在閱讀本篇文章時(shí)請(qǐng)關(guān)注如下問(wèn)題:

  • 1.什么是三層架構(gòu)?
  • 2.為什么使用三層架構(gòu)?
  • 3.三層與以往使用的兩層相比有什么不同?它的優(yōu)勢(shì)在哪里?
  • 4.如何學(xué)好三層架構(gòu)?如何應(yīng)用三層架構(gòu)??

一、什么是三層架構(gòu)

三層架構(gòu)就是為了符合“高內(nèi)聚,低耦合”思想,把各個(gè)功能模塊劃分為表示層(UI)、業(yè)務(wù)邏輯層(BLL)和?數(shù)據(jù)訪問(wèn)層(DAL)三層架構(gòu),各層之間采用接口相互訪問(wèn),并通過(guò)對(duì)象模型的實(shí)體類(Model)作為數(shù)據(jù)傳遞的載體,不同的對(duì)象模型的實(shí)體類一般對(duì)應(yīng)于數(shù)據(jù)庫(kù)的不同表,實(shí)體類的屬性與數(shù)據(jù)庫(kù)表的字段名一致。

各模塊功能劃分表:

UI:(表現(xiàn)層) 主要是指與用戶交互的界面。用于接收用戶輸入的數(shù)據(jù)和顯示處理后用戶需要的數(shù)據(jù)。
BLL:(業(yè)務(wù)邏輯層) UI層和DAL層之間的橋梁。實(shí)現(xiàn)業(yè)務(wù)邏輯。業(yè)務(wù)邏輯具體包含:驗(yàn)證、計(jì)算、業(yè)務(wù)規(guī)則等等。
DAL:(數(shù)據(jù)訪問(wèn)層) 與數(shù)據(jù)庫(kù)打交道。主要實(shí)現(xiàn)對(duì)數(shù)據(jù)的增、刪、改、查。將存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)提交給業(yè)務(wù)層,同時(shí)將業(yè)務(wù)層處理的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)。(當(dāng)然這些操作都是基于UI層的。用戶的需求反映給界面(UI),UI反映給BLL,BLL反應(yīng)給DAL,DAL進(jìn)行數(shù)據(jù)的操作,操作后再逐步返回,直到將用戶所需數(shù)據(jù)反饋給用戶)

三層架構(gòu)運(yùn)作流程圖:

?

三層架構(gòu)中各功能模塊如何聯(lián)系?

這里就要提到Entity(實(shí)體層):它不屬于三層中的任何一層,但是它是必不可少的一層。對(duì)于大量的數(shù)據(jù)來(lái)說(shuō),用變量做參數(shù)有些復(fù)雜,因?yàn)閰?shù)量太多,容易搞混。比如:我要把員工信息傳遞到下層,信息包括:?jiǎn)T工號(hào)、姓名、年齡、性別、工資.......用變量做參數(shù)的話,那么我們的方法中的參數(shù)就會(huì)很多,極有可能在使用時(shí),將參數(shù)匹配搞混。這時(shí)候,如果用實(shí)體做參數(shù),就會(huì)很方便,不用考慮參數(shù)匹配的問(wèn)題,用到實(shí)體中哪個(gè)屬性拿來(lái)直接用就可以,很方便。這樣做也提高了效率。

Entity在三層架構(gòu)中的作用:

1.實(shí)現(xiàn)面向?qū)ο笏枷胫械?封裝";
2.貫穿于三層,在三層之間傳遞數(shù)據(jù);(注:確切的說(shuō)實(shí)體層貫穿于三層之間,來(lái)連接三層)

3.對(duì)于初學(xué)者來(lái)說(shuō),可以這樣理解:

每張數(shù)據(jù)表對(duì)應(yīng)一個(gè)實(shí)體,即每個(gè)數(shù)據(jù)表中的字段對(duì)應(yīng)實(shí)體中的屬性

(注:當(dāng)然,事實(shí)上不是這樣。

? ? ? ? ?為什么?

? ? ? ? 1>)可能我們需要的實(shí)體在數(shù)據(jù)表對(duì)應(yīng)的實(shí)體中并不存在

? ? ? ? 2>)我們完全可以將所有數(shù)據(jù)表中的所有字段都放在一個(gè)實(shí)體里)

4.每一層(UI—>BLL—>DAL)之間的數(shù)據(jù)傳遞(單向)是靠變量或?qū)嶓w作為參數(shù)來(lái)傳遞的,這樣就構(gòu)造了三層之間的聯(lián)系,完成了功能的實(shí)現(xiàn)。

(補(bǔ)充:3.中為什么說(shuō)可以暫時(shí)理解為每個(gè)數(shù)據(jù)表對(duì)應(yīng)一個(gè)實(shí)體??

我們做系統(tǒng)的目的,是為用戶提供服務(wù),用戶可不關(guān)心你的系統(tǒng)后臺(tái)是怎么工作的,用戶只關(guān)心軟件是不是好用,界面是不是符合自己心意。用戶在界面上輕松的增、刪、改、查,那么數(shù)據(jù)庫(kù)中也要有相應(yīng)的增、刪、改、查,而增刪改查具體操作對(duì)象就是數(shù)據(jù)庫(kù)中的數(shù)據(jù),說(shuō)白了就是表中的字段。所以,將每個(gè)數(shù)據(jù)表作為一個(gè)實(shí)體類,實(shí)體類封裝的屬性對(duì)應(yīng)到表中的字段,這樣的話,實(shí)體在貫穿于三層之間時(shí),就可以實(shí)現(xiàn)增刪改查數(shù)據(jù)了)

?三層及實(shí)體層之間的依賴關(guān)系:

?

二、為什么使用三層架構(gòu)

三層架構(gòu)區(qū)分層次的目的是為了 “高內(nèi)聚,低耦合”。開(kāi)發(fā)人員分工更明確,將精力更專注于應(yīng)用系統(tǒng)核心業(yè)務(wù)邏輯的分析、設(shè)計(jì)和開(kāi)發(fā),加快項(xiàng)目的進(jìn)度,提高了開(kāi)發(fā)效率,有利于項(xiàng)目的更新和維護(hù)工作。

三、三層與兩層的區(qū)別

兩層:

img

(當(dāng)任何一個(gè)地方發(fā)生變化時(shí),都需要重新開(kāi)發(fā)整個(gè)系統(tǒng)。"多層"放在一層,分工不明確耦合度高——難以適應(yīng)需求變化,可維護(hù)性低、可擴(kuò)展性低)

三層:

img

(發(fā)生在哪一層的變化,只需更改該層,不需要更改整個(gè)系統(tǒng)。層次清晰,分工明確,每層之間耦合度低——提高了效率,適應(yīng)需求變化,可維護(hù)性高,可擴(kuò)展性高)

三層架構(gòu)的優(yōu)勢(shì):

1.結(jié)構(gòu)清晰、耦合度低
2.可維護(hù)性高,可擴(kuò)展性高
3.利于開(kāi)發(fā)任務(wù)同步進(jìn)行, 容易適應(yīng)需求變化

三層架構(gòu)的劣勢(shì):

1.降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過(guò)中間層來(lái)完成。
2.有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層中都增加相應(yīng)的代碼
3.增加了代碼量,增加了工作量

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C# BinaryReader實(shí)現(xiàn)讀取二進(jìn)制文件

    C# BinaryReader實(shí)現(xiàn)讀取二進(jìn)制文件

    在 C# 以二進(jìn)制形式讀取數(shù)據(jù)時(shí)使用的是 BinaryReader 類。本文介紹了C# BinaryReader實(shí)現(xiàn)讀取二進(jìn)制文件,感興趣的可以了解一下
    2021-06-06
  • C#使用CancellationTokenSource 取消 Task的方法

    C#使用CancellationTokenSource 取消 Task的方法

    因?yàn)樯婕暗搅巳粘=?jīng)常會(huì)碰到的取消任務(wù)操作,本文主要介紹了C#使用CancellationTokenSource 取消 Task,文中通過(guò)代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2022-02-02
  • C#判斷給定IP地址是否在指定范圍內(nèi)的方法

    C#判斷給定IP地址是否在指定范圍內(nèi)的方法

    這篇文章主要介紹了C#判斷給定IP地址是否在指定范圍內(nèi)的方法,涉及C#針對(duì)IP地址的轉(zhuǎn)換與匹配操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C#實(shí)現(xiàn)飛行棋游戲

    C#實(shí)現(xiàn)飛行棋游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)飛行棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 深入了解c# 匿名類型

    深入了解c# 匿名類型

    這篇文章主要介紹了c# 匿名類型的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • c#中(&&,||)與(&,|)的區(qū)別詳解

    c#中(&&,||)與(&,|)的區(qū)別詳解

    這篇文章主要介紹了c#中(&&,||)與(&,|)的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • C#中DataBindings用法實(shí)例分析

    C#中DataBindings用法實(shí)例分析

    這篇文章主要介紹了C#中DataBindings用法,結(jié)合實(shí)例形式詳細(xì)分析了DataBindings綁定數(shù)據(jù)源及刷新數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • C# datatable 不能通過(guò)已刪除的行訪問(wèn)該行的信息處理方法

    C# datatable 不能通過(guò)已刪除的行訪問(wèn)該行的信息處理方法

    采用datatable.Rows[i].Delete()刪除行后再訪問(wèn)該表時(shí)出現(xiàn)出現(xiàn)“不能通過(guò)已刪除的行訪問(wèn)該行的信息”的錯(cuò)誤
    2012-11-11
  • 使用C#實(shí)現(xiàn)簡(jiǎn)單的線性回歸的代碼詳解

    使用C#實(shí)現(xiàn)簡(jiǎn)單的線性回歸的代碼詳解

    最近注意到了NumSharp,想學(xué)習(xí)一下,最好的學(xué)習(xí)方式就是去實(shí)踐,因此從github上找了一個(gè)用python實(shí)現(xiàn)的簡(jiǎn)單線性回歸代碼,然后基于NumSharp用C#進(jìn)行了改寫,需要的朋友可以參考下
    2024-01-01
  • C# 禁止應(yīng)用程序多次啟動(dòng)的實(shí)例

    C# 禁止應(yīng)用程序多次啟動(dòng)的實(shí)例

    經(jīng)常我們會(huì)有這樣的需求,只讓應(yīng)用程序運(yùn)行一個(gè)實(shí)體,下面是實(shí)現(xiàn)的方法,有需要的朋友可以參考一下
    2013-09-09

最新評(píng)論

元谋县| 和静县| 灵石县| 乌拉特后旗| 包头市| 黄浦区| 舞阳县| 德格县| 东山县| 休宁县| 锡林浩特市| 天台县| 休宁县| 双峰县| 红河县| 伊春市| 大埔县| 桂平市| 清涧县| 本溪| 贵阳市| 湟中县| 海林市| 密山市| 东明县| 丰顺县| 乳山市| 白朗县| 江孜县| 平安县| 桃源县| 泰和县| 塔河县| 铁岭县| 都安| 龙井市| 增城市| 湖州市| 凤城市| 连平县| 山西省|