• <sup id="q8qqq"></sup>
    
    <cite id="q8qqq"><ul id="q8qqq"></ul></cite>
  • <noscript id="q8qqq"><optgroup id="q8qqq"></optgroup></noscript>
    <nav id="q8qqq"><code id="q8qqq"></code></nav>
  • <small id="q8qqq"></small>
  • 国产97人人超碰caoprom…,日本最新免费二区三区在线观看,18AV无码不卡在线,一本性道在线视频无码看,亚洲高清无码黄色一级片,国内久久久久久久久久久

    您的位置: 首頁(yè) > 資訊 > 設(shè)計(jì)

    asp.net架構(gòu)設(shè)計(jì)解惑

    藝術(shù)中國(guó) | 時(shí)間: 2010-07-30 08:42:36 | 文章來(lái)源: 博客園

    前言:之前的文章,很多朋友發(fā)來(lái)了反饋,從反饋中也看出了一些問(wèn)題,一個(gè)最明顯的問(wèn)題就是:當(dāng)我提到DAL的實(shí)現(xiàn)的時(shí)候,一些朋友就問(wèn):DAL中采用了Repository模式嗎? 初一看起來(lái),可能認(rèn)為這個(gè)問(wèn)題沒(méi)有什么,其實(shí)仔細(xì)的想想就會(huì)發(fā)現(xiàn),確實(shí)在問(wèn)題的背后隱藏的了另外的一個(gè)問(wèn)題.

    本篇的議題如下

    1.問(wèn)題的闡述

    2.設(shè)計(jì)方法

    3.總結(jié)

    1.問(wèn)題的闡述

    在項(xiàng)目中,我們一般都是分層,大家最熟悉的就是UI,BLL,DAL層,或者在加上一個(gè)Services服務(wù)層.一般的項(xiàng)目就這樣設(shè)計(jì)了.由于越來(lái)越多的公司,社區(qū)倡導(dǎo)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD),于是,又有了項(xiàng)目的分層的方式,DDD設(shè)計(jì)中的一些概念也引入了: Presentation, Service, Domain, Repository. 而且一般來(lái)說(shuō),有下面的對(duì)應(yīng)關(guān)系:

    Presentation UI

    Domain BLL

    Repository DAL

    但是在開(kāi)發(fā)的時(shí)候,一會(huì)兒在項(xiàng)目中建立一個(gè)Domain的類(lèi)庫(kù),一會(huì)兒又在項(xiàng)目建立DAL,最后的情況就是:UI, Domain, DAL等等. 其實(shí)這倒是沒(méi)有什么,說(shuō)到底只是一個(gè)名稱的問(wèn)題,但是在只后面隱藏的問(wèn)題就是:對(duì)DDD的不了解,很多的時(shí)候只是注重了”形”,而沒(méi)有領(lǐng)會(huì)到”神”.

    在項(xiàng)目中不是建立了名稱為Presentation, Domain, Repository的類(lèi)庫(kù),這個(gè)項(xiàng)目就是DDD開(kāi)發(fā)了,不是這樣的.本來(lái)在分層的時(shí)候采用UI,BLL,DAL,自己是很熟悉的,但是這樣一攪和, 最后反而把概念搞復(fù)雜了.

    而且,在項(xiàng)目中,是采用原來(lái)樸實(shí)的那種三層,還是采用DDD開(kāi)發(fā),是要經(jīng)過(guò)思考的,不是那DDD的方法來(lái)套.也就是說(shuō),不要為了DDD而DDD.就像當(dāng)初我們學(xué)習(xí)設(shè)計(jì)模式一樣,沒(méi)有必要在寫(xiě)代碼的過(guò)程中為了設(shè)計(jì)模式而設(shè)計(jì)模式.

    2.設(shè)計(jì)方法

    到底是采用DDD還是那種樸實(shí)的三層,主要取決與業(yè)務(wù)層的設(shè)計(jì)和系統(tǒng)的復(fù)雜度.

    如果系統(tǒng)確實(shí)很復(fù)雜,業(yè)務(wù)邏輯相當(dāng)?shù)膹?fù)雜,那么建議采用DDD,因?yàn)镈DD的引入就是用解決復(fù)雜性的.因?yàn)椴捎肈DD的方法來(lái)設(shè)計(jì)業(yè)務(wù)邏輯層,那么業(yè)務(wù)邏輯層就只是關(guān)注業(yè)務(wù)邏輯的處理,至于怎么存儲(chǔ)和獲取數(shù)據(jù),絲毫不關(guān)心,所以基于這個(gè)原因,在DDD中就引入了Repository的概念,Repository就是來(lái)輔助業(yè)務(wù)邏輯層處理數(shù)據(jù)的.

    雖然我一直在提”樸實(shí)的三層”,其實(shí)DDD和它之間沒(méi)有什么很明顯的劃分了,這里我之所以特意的把他們劃分出來(lái),主要就是因?yàn)槲覀冊(cè)陧?xiàng)目開(kāi)發(fā)中一般是三層(或者N層),這里提出主要是為便于后面講述一些問(wèn)題.

    下面就開(kāi)始講述一些業(yè)務(wù)邏輯層設(shè)計(jì)方法,相信大家看完之后,很多的疑惑就迎刃而解了.

    業(yè)務(wù)層的設(shè)計(jì)方法有三種:Transaction Script, Active Record和Domain Model.

    看過(guò)Flower的<<企業(yè)架構(gòu)模式>>一書(shū)的朋友應(yīng)該對(duì)上面的三個(gè)詞語(yǔ)很熟悉,在書(shū)中,這些概念講的確實(shí)很精煉,可能因?yàn)榫珶?所以理解起來(lái)就不是很容易.

    在本篇文章中,就涉及到了這些知識(shí),只有把這些點(diǎn)講清楚了,之前的問(wèn)題就能解決.

    如果熟悉這些概念的朋友,也不妨看看,大家可以交流!

    首先來(lái)看看Transaction Script(之所以沒(méi)有翻譯為中文,因?yàn)榉g后的中文意思很容易讓人產(chǎn)生誤導(dǎo))

    其實(shí)Transaction Script就是過(guò)程化的設(shè)計(jì)方式,最直觀表現(xiàn)就是一個(gè)個(gè)的方法,每個(gè)方法做一個(gè)業(yè)務(wù)的流程。我們來(lái)看下面一個(gè)例子。例子的背景就是在電子商務(wù)網(wǎng)站中訂單的處理流程。

    1   2   3   4   下一頁(yè)  


    相關(guān)文章
    注:凡注明 “藝術(shù)中國(guó)” 字樣的視頻、圖片或文字內(nèi)容均屬于本網(wǎng)站專(zhuān)稿,如需轉(zhuǎn)載圖片請(qǐng)保留 “藝術(shù)中國(guó)” 水印,轉(zhuǎn)載文字內(nèi)容請(qǐng)注明來(lái)源藝術(shù)中國(guó),否則本網(wǎng)站將依據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》維護(hù)網(wǎng)絡(luò)知識(shí)產(chǎn)權(quán)。
    打印文章    收 藏    歡迎訪問(wèn)藝術(shù)中國(guó)論壇 >>
    發(fā)表評(píng)論
    用戶名 密碼
     
    尚無(wú)評(píng)論

    留言須知

    国产97人人超碰caoprom…
  • <sup id="q8qqq"></sup>
    
    <cite id="q8qqq"><ul id="q8qqq"></ul></cite>
  • <noscript id="q8qqq"><optgroup id="q8qqq"></optgroup></noscript>
    <nav id="q8qqq"><code id="q8qqq"></code></nav>
  • <small id="q8qqq"></small>