乱一色一一区二区三区-露脸国产精品自产在线播-陆贞传奇第58集在线观看-鲁一鲁噜噜噜-鲁大师成人精品视频-噜噜在线

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

◆通用類庫(kù) Common :通用的輔助工具類。

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

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

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

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

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

我們可以看出:

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

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

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

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

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

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

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

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

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

作者:朋友圈科技


Go To Top 回頂部
主站蜘蛛池模板: 国产v在线在线观看羞羞答答 | 男女视频在线观看网站 | 日本亚欧乱色视频在线观看 | 麻生希在线 | juy_661佐佐木明希在线播放 | 久久99r66热这里只有精品 | 睡男神的这件小事小说在线阅读 | 久久精品18 | 欧美性野久久久久久久久 | 猫咪maomiav永久网址 | 国产一卡2卡3卡4卡公司科普 | 色婷婷在线 | 亚洲国产在线播放在线 | 99热久久这里只精品国产www | 免费黄色小说 | 95视频在线观看在线分类h片 | 人成网站在线观看 | acg火影忍者熟密姬纲手h | 好爽轻点太大了太深了 | 欧美成人免费观看国产 | 婷婷色在线播放 | 亚洲可乐操 | 极品丝袜老师h系列全文阅读 | 国产精品露脸国语对白手机视频 | 国产日韩欧美 | 国产资源站| 波多野结衣无码 | 久久精品亚洲精品国产欧美 | 边吃胸边膜下刺激免费男对女 | 国内精品久久久久久中文字幕 | 大奶老太 | 欧美日韩高清观看一区二区 | 毛片啪啪视频 | 国内精品久久久久久久久久久久 | 涩涩国产精品福利在线观看 | 99精品视频在线观看免费 | 日本视频在线观看 | 蜜桃在线| 成人影音先锋 | 精品亚洲欧美中文字幕在线看 | 美女的隐私无遮挡的网页 |