大话领域驱动设计——简介
如果說(shuō)當(dāng)下最熱門的技術(shù)概念或架構(gòu)思想,那么領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)一定占有一席之地。
上個(gè)系列,我講了ABP vNext框架在微服務(wù)架構(gòu)下的落地思路,而ABP vNext是基于DDD思想的完整框架之一,同時(shí)DDD也是微服務(wù)架構(gòu)服務(wù)拆分的主流依據(jù)。無(wú)論想學(xué)好ABP還是微服務(wù)架構(gòu),首先要理解DDD。這一系列,我就從各個(gè)概念,結(jié)合在ABP vNext中的用法詳細(xì)講解DDD。
DDD是Domain Driven Design的縮寫,中文翻譯為領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)。首先要明確一點(diǎn),DDD是一套方法論,主要面向軟件設(shè)計(jì)的方法論。學(xué)習(xí)它首先要把它從具體的實(shí)現(xiàn)抽離出來(lái),也要從微服務(wù)架構(gòu)的概念里抽離出來(lái),它們是相互獨(dú)立的概念。而ABP框架是DDD思想的基礎(chǔ)落地方案之一。所以是先學(xué)思想,再學(xué)落地。
DDD的核心是領(lǐng)域。領(lǐng)域又稱為問(wèn)題域,是對(duì)系統(tǒng)業(yè)務(wù)的抽象,意在將我們的重點(diǎn)放在需要解決的問(wèn)題本身,而不是如何實(shí)現(xiàn)。DDD希望為業(yè)務(wù)專家(領(lǐng)域?qū)<?#xff09;和研發(fā)人員(技術(shù)專家)提供一套完整高效的溝通方式,并在此基礎(chǔ)上由他們共同建立可快速落地的系統(tǒng)模型(領(lǐng)域模型)。在此工程中,業(yè)務(wù)專家不需要去關(guān)注技術(shù)實(shí)現(xiàn),技術(shù)人員應(yīng)該優(yōu)先把精力放在理解業(yè)務(wù)本身而不是實(shí)現(xiàn)的細(xì)節(jié)。
DDD的核心產(chǎn)出結(jié)果是領(lǐng)域模型,在過(guò)去無(wú)論是傳統(tǒng)軟件工程方法或是基于UML的面向?qū)ο蠼?#xff0c;軟件設(shè)計(jì)過(guò)程都會(huì)產(chǎn)出多個(gè)不同維度的設(shè)計(jì)圖,例如類圖、順序圖、流程圖……。但是這樣存在一個(gè)問(wèn)題,因?yàn)樾枨蟛粩嘧兏?#xff0c;每次變化我們都要花大量時(shí)間修改多個(gè)設(shè)計(jì)圖。尤其對(duì)于進(jìn)度比較急項(xiàng)目,經(jīng)常會(huì)出現(xiàn)代碼不斷修改但是設(shè)計(jì)圖沒(méi)有足夠的時(shí)間去維護(hù)。慢慢會(huì)導(dǎo)致設(shè)計(jì)圖和實(shí)際代碼不一致甚至區(qū)別很大,那么設(shè)計(jì)圖將失去意義。而在DDD的思想中,所有的領(lǐng)域設(shè)計(jì),都會(huì)繪制在一個(gè)圖也就是領(lǐng)域模型圖中,相當(dāng)于將過(guò)去的多個(gè)圖合成一個(gè)。那么我們改代碼的同時(shí),就很容易同步去修正領(lǐng)域模型。
后面的章節(jié),我將從以下幾個(gè)方面來(lái)深入介紹領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):
? ?1. 戰(zhàn)略設(shè)計(jì)和戰(zhàn)術(shù)設(shè)計(jì)
? ?2. 分層架構(gòu)
? ?3. 各項(xiàng)概念(實(shí)體、聚合、服務(wù)、DTO等)
? ?4. 實(shí)現(xiàn)方法
END
關(guān)注我獲得
更多精彩
總結(jié)
以上是生活随笔為你收集整理的大话领域驱动设计——简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: FluentValidation在C#中
- 下一篇: Avalonia跨平台入门第十九篇之语音
