尤物精品在线 I 2023国产精品 I 久日精品视频 I 五月天丁香 I 国产太嫩了在线观看 I 亚洲1区在线观看 I 老熟女强人国产在线播放 I 波多野结衣初尝黑人 I 秋霞在线一区 I 日日噜噜夜夜狠狠视频免费 I 天天综合色网 I www日本免费 I 青青青国产视频 I 国产成人欧美一区二区三区的 I 成人爱爱网 I 日韩人妻无码一区二区三区综合部 I 无码人妻丰满熟妇区免费 I 欧美三级久久久 I 性色av无码中文av有码vr I 成人无码看片在线观看免费 I 国产日韩一区 I 中文字幕488页在线 I 日本亚洲欧洲色α在线播放 I 日本精品一区二区三区在线观看视频 I 人妻系列影片无码专区 I 无码人妻巨屁股系列 I 99国产欧美久久久精品蜜芽 I 国产日产欧产精品精乱了派 I 夜夜高潮夜夜爽高清完整版1 I 日韩 欧美 中文 I 亚洲区成人 I 真人三级三级97片毛片 I 日本搞b视频 I 丰满老妇被粗大猛烈进人高清 I 亚洲综合 欧美

趣談三層架構(gòu)的演變

日期:2012/2/12 / 人氣:

  有關(guān)三層架構(gòu)有很多理解。下面用養(yǎng)豬為比喻,介紹三層架構(gòu)究竟是個什么東西。

      層次結(jié)構(gòu)在現(xiàn)實社會里隨處可見。記得有個笑話講有個村長得意地向他老婆吹牛:“全中國只有四個人比我官大,鄉(xiāng)長、縣長、省長和國務(wù)院總理”。這個笑話也體現(xiàn)了真實社會中分層的現(xiàn)象。社會人群會分層,公司人員結(jié)構(gòu)也會分層,樓房是分層的,甚至做包子的籠屜都是分層的。雖然分層的目的各有不同,但都是為解決某一問題而產(chǎn)生的。所以,分層架構(gòu)其實是為了解決某一問題而產(chǎn)生的一種解決方案。

14.1.1常用的三層架構(gòu)設(shè)計

 

佛山網(wǎng)站建設(shè)_佛山網(wǎng)站制作_佛山網(wǎng)站設(shè)計_佛山網(wǎng)站_佛山網(wǎng)頁設(shè)計_佛山網(wǎng)頁建設(shè)_佛山網(wǎng)頁制作

     軟件系統(tǒng)最常用的一般會講到三層架構(gòu),其實就是將整個業(yè)務(wù)應用劃分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層等,有的還要細一些,通過分解業(yè)務(wù)細節(jié),將不同的功能代碼分散開來,更利于系統(tǒng)的設(shè)計和開發(fā),同時為可能的變更提供了更小的單元,十分有利于系統(tǒng)的維護和擴展。

常見的三層架構(gòu)

◆數(shù)據(jù)訪問層 DAL :用于實現(xiàn)與數(shù)據(jù)庫的交互和訪問,從數(shù)據(jù)庫獲取數(shù)據(jù)或保存數(shù)據(jù)到數(shù)據(jù)庫的部分。

◆業(yè)務(wù)邏輯層 BLL :業(yè)務(wù)邏輯層承上啟下,用于對上下交互的數(shù)據(jù)進行邏輯處理,實現(xiàn)業(yè)務(wù)目標。

◆表示層 Web :主要實現(xiàn)和用戶的交互,接收用戶請求或返回用戶請求的數(shù)據(jù)結(jié)果的展現(xiàn),而具體的數(shù)據(jù)處理則交給業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層去處理。

      日常開發(fā)的很多情況下為了復用一些共同的東西,會把一些各層都用的東西抽象出來。如我們將數(shù)據(jù)對象實體和方法分離,以便在多個層中傳遞, 例如稱為 Model 。一些共性的通用輔助類和工具方法,如數(shù)據(jù)校驗、緩存處理、加解密處理等,為了讓各個層之間復用,也單獨分離出來,作為獨立的模塊使用,例如稱為 Common 。

此時,三層架構(gòu)會演變?yōu)?/P>

◆業(yè)務(wù)實體 Model : 用于封裝實體類數(shù)據(jù)結(jié)構(gòu),一般用于映射數(shù)據(jù)庫的數(shù)據(jù)表或視圖,用以描述業(yè)務(wù)中客觀存在的對象。 Model 分離出來是為了更好地解耦,為了更好地發(fā)揮分層的作用,更好地進行復用和擴展,增強靈活性。 設(shè)計進行時---技術(shù)資料_!\"u#a4D+V

◆通用類庫 Common :通用的輔助工具類。

       在第 5.2 節(jié)中我們講過可以將對數(shù)據(jù)庫的共性操作抽象封裝成數(shù)據(jù)操作類(例如 DbHelperSQL ),以便更好地復用和使代碼簡潔。數(shù)據(jù)層底層使用通用數(shù)據(jù)庫操作類來訪問數(shù)據(jù)庫,最后完整的三層架構(gòu)

      數(shù)據(jù)庫訪問類 是對 ADO.NET 的封裝,封裝了一些常用的重復的數(shù)據(jù)庫操作。如微軟的企業(yè)庫 SQLHelper.cs ,動軟的 DBUtility/DbHelperSQL 等,為 DAL 提供訪問數(shù)據(jù)庫的輔助工具類。

      通過以上分析,我們知道如今常用的三層架構(gòu)是個什么樣子,同時,我們也知道了三層架構(gòu)在使用過程中的一些演化過程。那么,為什么要這樣分層,每層結(jié)構(gòu)到底又起什么作用呢?我們繼續(xù)往下看。

14.1.2趣味理解:三層架構(gòu)與養(yǎng)豬

      看新聞報道今年豬肉價格一路高漲,據(jù)說有人養(yǎng)豬都發(fā)財致富奔小康了,程序員都說寫代碼沒前途了,還不如去養(yǎng)豬,不過,可別認為養(yǎng)豬沒有技術(shù)含量,比寫代碼容易,其實養(yǎng)豬也大有學問。為了更好地理解三層架構(gòu),就拿養(yǎng)豬來做個例子吧。俗話說:“沒吃過豬肉,還沒見過豬跑啊!”。

我們可以看出:

◆數(shù)據(jù)庫好比豬圈 ,所有的豬有序地按區(qū)域或編號,存放在不同的豬欄里。

      好比是屠宰場 ,把豬從豬圈取出來進行(處理)屠殺,按要求取出相應的部位(字段),或者進行歸類整理(統(tǒng)計),形成整箱的豬肉(數(shù)據(jù)集),傳送給食品加工廠( BLL )。本來這里都是同一伙人既管抓豬,又管殺豬的,后來覺得效率太低了,就讓一部分人出來專管抓豬了( DBUtility ),根據(jù)要求來抓取指定的豬。

◆BLL 好比食品加工廠 ,將豬肉深加工成各種可以食用的食品(業(yè)務(wù)處理)。

◆Web 好比商場 ,將食品包裝成漂亮的可以銷售的產(chǎn)品,展現(xiàn)給顧客( UI 表現(xiàn)層)。

◆豬肉好比 Model ,無論是哪個廠(層),各個環(huán)節(jié)傳遞的本質(zhì)都是豬肉,豬肉貫穿整個過程。

◆通用類庫 Common 相當于工人使用的各種工具,為各個廠(層)提供諸如殺豬刀、繩子、剪刀、包裝箱、工具車等共用的常用工具(類)。其實,每個部門本來是可以自己制作自己的工具的,但是那樣會使效率比較低,而且也不專業(yè),并且很多工作都會是重復的。因此,就專門有人開了這樣的工廠來制作這些工具,提供給各個工廠,有了這樣的分工,工廠就可以專心做自己的事情了。

      當然,這里只是形象的比喻,目的是為了讓大家更好地理解,實際的情況在細節(jié)上會有所不同。這個例子也只是說明了從豬圈到商場的單向過程,而實際三層開發(fā)中的數(shù)據(jù)交互是雙向的,可取可存。不過,據(jù)說有一種機器,把豬從這頭趕進去,另一頭就噗噗嚕嚕地出火腿腸了。如果火腿腸賣不了了,從那頭再放進去,這頭豬又原原本本出來了,科幻的機器吧,沒想到也可以和三層結(jié)構(gòu)聯(lián)系上。以上只是笑談,不過也使三層架構(gòu)的基本概念更容易理解了。

      上面談了那么多,有人會問,我直接從數(shù)據(jù)庫取出內(nèi)容直接操作不可以嗎?為什么要這么麻煩地用三層架構(gòu)呢?三層架構(gòu)到底有什么好處呢?

       不分層,當然可以,就好比整個過程不分屠宰場、加工場之類的,都在同一個場所(工廠)完成所有的活(屠殺、加工、銷售)。但為什么要加工廠和商場呢?因為當規(guī)模比較大的時候,管理起來就會變得非常復雜,這樣的養(yǎng)殖方式已經(jīng)無法滿足規(guī);男枰。并且,從社會的發(fā)展來看,社會分工是人類進步的表現(xiàn) 。社會分工的優(yōu)勢就是讓適合的人做自己擅長的事情,使平均社會勞動時間大大縮短,生產(chǎn)效率顯著提高。能夠提供優(yōu)質(zhì)高效勞動產(chǎn)品的人才能在市場競爭中獲得高利潤和高價值。人盡其才,物盡其用最深刻的含義就是由社會分工得出的。軟件開發(fā)也一樣,做小項目的時候,分不分層確實看不出什么差別,并且顯得更麻煩啰嗦了。但當項目變大和變復雜時,分層就顯示出它的優(yōu)勢來了。所以分不分層要根據(jù)項目的實際情況而定,不能一概而論。

作者:朋友圈科技


Go To Top 回頂部