日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜!

發(fā)布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

理論文章多,涉及太多知識點,無從下手!

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

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

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

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

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

……

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

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

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

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

這一說法是否自相矛盾呢?Martin Fowler在PoEAA一書中給了一個有力的解釋:

我們把三層架構(gòu)等除了領(lǐng)域驅(qū)動之外的架構(gòu)方式都可以歸納為以數(shù)據(jù)為中心的架構(gòu)方式,在圖中是黑色的粗實線;領(lǐng)域驅(qū)動設(shè)計在圖中是綠色的粗實線。

  • 當軟件在開發(fā)初期,以數(shù)據(jù)驅(qū)動的架構(gòu)方式非常容易上手,但是隨著業(yè)務的增長和項目的推進,軟件開發(fā)和維護難度急劇升高。

  • 領(lǐng)域驅(qū)動設(shè)計則在項目初期就處在一個比較難以上手的位置,但是隨著業(yè)務的增長和項目的推進,軟件開發(fā)和維護難度平滑上升。

這幅圖形象的解釋了領(lǐng)域驅(qū)動設(shè)計和傳統(tǒng)的軟件架構(gòu)模式兩者在軟件開發(fā)過程中解決復雜性之間的差異。

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

戰(zhàn)略設(shè)計:

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

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

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

戰(zhàn)術(shù)設(shè)計 :

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

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

領(lǐng)域模型

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

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

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

DDD集訓

為了幫助大家更快的了解和熟悉DDD驅(qū)動領(lǐng)域設(shè)計,這里給大家推薦一門高級架構(gòu)師Zilor的在線直播課程~從原理到實戰(zhàn),全程干貨,帶你完整走一遍 DDD+ 微服務設(shè)計的全流程,重點講解其中的技術(shù)要點、設(shè)計原則和注意事項~相信通過本次的集訓,你一定可以收獲滿滿!

課程原價199元,本號粉絲,前99名免費學習!!!趕緊掃描下方二維碼搶占學習名額吧~

長按掃碼,入群學習

如掃碼失敗,請?zhí)砑游⑿盘?#xff1a;

estherzry

1

DAY?01—DDD初探

01 ? 領(lǐng)域、子域、核心域

02??如何定義領(lǐng)域邊界

03 ?實體與值對象

04 ?聚合與聚合根

2

DAY?02—DDD設(shè)計思想

01 ? 領(lǐng)域事件

02??DDD分層架構(gòu)

03 ?微服務架構(gòu)模型

3

DAY?03—DDD與微服務設(shè)計

01 ? 領(lǐng)域建模

02??代碼模型

03 ?邊界與視圖

長按掃碼,入群學習

還有超級福利等你領(lǐng)取

視頻合集,免費送!!!

聽課還送福利!

課堂上還有抽獎環(huán)節(jié),中獎者可贏得辦公室午睡神器——抱枕+午睡毯1套喲~

趕緊掃碼,搶占名額!!!

長按掃碼,入群學習

僅限前99名

如掃碼失敗,請?zhí)砑游⑿盘?#xff1a;

estherzry

總結(jié)

以上是生活随笔為你收集整理的DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。