<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          DDD到底什么鬼?

          共 1690字,需瀏覽 4分鐘

           ·

          2020-09-16 06:58

          4月,InfoQ 發(fā)布了軟件架構(gòu)與設(shè)計(jì)的趨勢報(bào)告。在報(bào)告中可以看出,微服務(wù)、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)等已經(jīng)非常流行,并成為目前軟件開發(fā)行業(yè)的主流趨勢。


          大家都知道,微服務(wù)劃分的一個(gè)重要理論基礎(chǔ)就是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)。但由于 DDD 門檻高、概念多,體系龐大又抽象,再加上缺少實(shí)踐經(jīng)驗(yàn)和案例指導(dǎo),很多開發(fā)人員對 DDD 存在不少疑惑:


          理論文章多,涉及太多知識點(diǎn),無從下手!

          這么牛逼的技術(shù),不能落地有什么用?

          為何需要領(lǐng)域?qū)<覅⑴c到項(xiàng)目開發(fā)中來?

          DDD 與微服務(wù)的關(guān)系?

          DDD 落地案例市面上少見,真的靠譜嗎?

          領(lǐng)導(dǎo)都不懂 DDD,怎么推!

          ……


          許多朋友對其價(jià)值收益感受不明顯,主要這兩點(diǎn)原因:一是落地困難,對開發(fā)人員的能力要求比較高,二是不清楚到底用在哪里,為什么要用、怎么用。


          其實(shí),DDD是一套完整而系統(tǒng)的設(shè)計(jì)方法,并非一種架構(gòu)。它能帶給你從戰(zhàn)略設(shè)計(jì)到戰(zhàn)術(shù)設(shè)計(jì)的標(biāo)準(zhǔn)設(shè)計(jì)過程,使得你的設(shè)計(jì)思路能夠更加清晰,設(shè)計(jì)過程更加規(guī)范,有助于提高技術(shù)人的架構(gòu)設(shè)計(jì)能力。無論是在新項(xiàng)目中設(shè)計(jì)微服務(wù),還是將系統(tǒng)從單體架構(gòu)演進(jìn)到微服務(wù),DDD 都大有助力。



          為什么要使用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)?





          從Eric Evans的《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對之道》一書的書名就可以看出這一方法論是為了解決軟件核心復(fù)雜性的。也就是說軟件業(yè)務(wù)越來越復(fù)雜了,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)可以讓事情變得簡單。而實(shí)際情況是:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的門檻很高,沒有很深厚的面向?qū)ο缶幋a能力幾乎不可能實(shí)踐成功。

          這一說法是否自相矛盾呢?Martin Fowler在PoEAA一書中給了一個(gè)有力的解釋:
          我們把三層架構(gòu)等除了領(lǐng)域驅(qū)動(dòng)之外的架構(gòu)方式都可以歸納為以數(shù)據(jù)為中心的架構(gòu)方式,在圖中是黑色的粗實(shí)線;領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在圖中是綠色的粗實(shí)線。
          • 當(dāng)軟件在開發(fā)初期,以數(shù)據(jù)驅(qū)動(dòng)的架構(gòu)方式非常容易上手,但是隨著業(yè)務(wù)的增長和項(xiàng)目的推進(jìn),軟件開發(fā)和維護(hù)難度急劇升高。
          • 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)則在項(xiàng)目初期就處在一個(gè)比較難以上手的位置,但是隨著業(yè)務(wù)的增長和項(xiàng)目的推進(jìn),軟件開發(fā)和維護(hù)難度平滑上升。
          這幅圖形象的解釋了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)和傳統(tǒng)的軟件架構(gòu)模式兩者在軟件開發(fā)過程中解決復(fù)雜性之間的差異。


          領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的核心是什么?





          戰(zhàn)略設(shè)計(jì):
          說到戰(zhàn)略設(shè)計(jì),我們要站在一個(gè)比較高的視角來看待這個(gè)問題,戰(zhàn)略設(shè)計(jì)要解決的就是某個(gè)領(lǐng)域的問題,所以戰(zhàn)略設(shè)計(jì)時(shí),我們要構(gòu)建好領(lǐng)域模型,保證我們的大方向是不會錯(cuò)的

          戰(zhàn)略設(shè)計(jì)主要從業(yè)務(wù)視角出發(fā),建立業(yè)務(wù)領(lǐng)域模型,劃分領(lǐng)域邊界,建立通用語言的限界上下文,限界上下文可以作為微服務(wù)設(shè)計(jì)的參考邊界。

          以數(shù)據(jù)為中心的架構(gòu)模式

          戰(zhàn)術(shù)設(shè)計(jì) :
          戰(zhàn)術(shù)設(shè)計(jì)則是要求我們從業(yè)務(wù)模型轉(zhuǎn)向微服務(wù)落地 我們會將領(lǐng)域模型中的領(lǐng)域?qū)ο笈c代碼模型中的代碼對象建立映射關(guān)系,將業(yè)務(wù)架構(gòu)和系統(tǒng)架構(gòu)進(jìn)行綁定。當(dāng)我們?nèi)ロ憫?yīng)業(yè)務(wù)變化調(diào)整業(yè)務(wù)架構(gòu)和領(lǐng)域模型時(shí),系統(tǒng)架構(gòu)也會同時(shí)發(fā)生調(diào)整,并同步建立新的映射關(guān)系。也有演進(jìn)式架構(gòu)的含義在里面。

          說到這里,大家可能對DDD有了一個(gè)粗略的,大體的認(rèn)識,我們可以理解到,DDD能夠幫助我們更好的在微服務(wù)的架構(gòu)中進(jìn)行合理的拆分,由于DDD要求我們建立標(biāo)準(zhǔn)的業(yè)務(wù)領(lǐng)域模型,所以DDD也能夠很好地幫助我們設(shè)計(jì)企業(yè)的中臺,DDD是一把利器,幫助我們解決架構(gòu)中遇到的問題和挑戰(zhàn)。

          領(lǐng)域模型


          DDD的優(yōu)勢及未來





          DDD是一套完整而系統(tǒng)的設(shè)計(jì)方法,并非一種架構(gòu)。它能帶給你從戰(zhàn)略設(shè)計(jì)到戰(zhàn)術(shù)設(shè)計(jì)的標(biāo)準(zhǔn)設(shè)計(jì)過程,使得你的設(shè)計(jì)思路能夠更加清晰,設(shè)計(jì)過程更加規(guī)范,有助于提高技術(shù)人的架構(gòu)設(shè)計(jì)能力。無論是在新項(xiàng)目中設(shè)計(jì)微服務(wù),還是將系統(tǒng)從單體架構(gòu)演進(jìn)到微服務(wù),DDD 都大有助力。

          倘若能一直保持DDD的開放性,保持DDD的獨(dú)立性,我覺得在未來的五年乃至十年,DDD仍將煥發(fā)生命力,只是它的面貌會更加多姿多彩,甚至超過Eric Evans對DDD的原初定義。畢竟,軟件系統(tǒng)的核心只有兩個(gè):領(lǐng)域和算法。


          瀏覽 86
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女操逼视频免费观看 | 特级大毛片 | 精品人妻无码一区三区蜜桃 | 亚洲专区欧美专区 | 影音先锋女人av 影音先锋女人资源 |