網(wǎng)站首頁百科全書 >正文
領(lǐng)域的意思(領(lǐng)域驅(qū)動設(shè)計(jì):領(lǐng)域、子域、核心域、通用域和支撐域)
DDD的知識體系提出了很多的名詞,像:領(lǐng)域、子域、核心域、通用域、支撐域、限界上下文、聚合、聚合根、實(shí)體、值對象等等,非常多。這些名詞,都是關(guān)鍵概念,但它們實(shí)在有些晦澀難懂,可能導(dǎo)致你還沒開始實(shí)踐DDD就打起了退堂鼓。因此,在基礎(chǔ)篇中,我希望能帶著你一起做好實(shí)踐前的準(zhǔn)備工作。
除此之外,我想說的是,這些名詞在你的微服務(wù)設(shè)計(jì)和開發(fā)過程中不一定都用得上,但它可以幫你理解DDD的核心設(shè)計(jì)思想和理念。而這些思想和理念,在IT戰(zhàn)略設(shè)計(jì)、業(yè)務(wù)建模和微服務(wù)設(shè)計(jì)中都是可以借鑒的。
今天我們重點(diǎn)了解DDD的領(lǐng)域、子域、核心域、通用域和支撐域等重要概念。
如何理解領(lǐng)域和子域?我們先看一下漢語詞典中對領(lǐng)域的解釋:“領(lǐng)域是從事一種專門活動或事業(yè)的范圍、部類或部門。”百度百科對領(lǐng)域的解釋:“領(lǐng)域具體指一種特定的范圍或區(qū)域。”
兩個(gè)解釋有一個(gè)共同點(diǎn)——范圍。對了!領(lǐng)域就是用來確定范圍的,范圍即邊界,這也是DDD在設(shè)計(jì)中不斷強(qiáng)調(diào)邊界的原因。
在研究和解決業(yè)務(wù)問題時(shí),DDD會按照一定的規(guī)則將業(yè)務(wù)領(lǐng)域進(jìn)行細(xì)分,當(dāng)領(lǐng)域細(xì)分到一定的程度后,DDD會將問題范圍限定在特定的邊界內(nèi),在這個(gè)邊界內(nèi)建立領(lǐng)域模型,進(jìn)而用代碼實(shí)現(xiàn)該領(lǐng)域模型,解決相應(yīng)的業(yè)務(wù)問題。簡言之,DDD的領(lǐng)域就是這個(gè)邊界內(nèi)要解決的業(yè)務(wù)問題域。
既然領(lǐng)域是用來限定業(yè)務(wù)邊界和范圍的,那么就會有大小之分,領(lǐng)域越大,業(yè)務(wù)范圍就越大,反之則相反。
領(lǐng)域可以進(jìn)一步劃分為子領(lǐng)域。我們把劃分出來的多個(gè)子領(lǐng)域稱為子域,每個(gè)子域?qū)?yīng)一個(gè)更小的問題域或更小的業(yè)務(wù)范圍。
我們知道,DDD是一種處理高度復(fù)雜領(lǐng)域的設(shè)計(jì)思想,它試圖分離技術(shù)實(shí)現(xiàn)的復(fù)雜度。那么面對錯(cuò)綜復(fù)雜的業(yè)務(wù)領(lǐng)域,DDD是如何使業(yè)務(wù)從復(fù)雜變得簡單,更容易讓人理解,技術(shù)實(shí)現(xiàn)更容易呢?
其實(shí)很好理解,DDD的研究方法與自然科學(xué)的研究方法類似。當(dāng)人們在自然科學(xué)研究中遇到復(fù)雜問題時(shí),通常的做法就是將問題一步一步地細(xì)分,再針對細(xì)分出來的問題域,逐個(gè)深入研究,探索和建立所有子域的知識體系。當(dāng)所有問題子域完成研究時(shí),我們就建立了全部領(lǐng)域的完整知識體系了。
需要對領(lǐng)域進(jìn)行細(xì)分
初中生物課給我們講過桃樹的研究過程:
第一步:確定研究對象,即研究領(lǐng)域,這里是一棵桃樹。
第二步:對研究對象進(jìn)行細(xì)分,將桃樹細(xì)分為器官,器官又分為營養(yǎng)器官和生殖器官兩種。其中營養(yǎng)器官包括根、莖和葉,生殖器官包括花、果實(shí)和種子。桃樹的知識體系是我們已經(jīng)確定要研究的問題域,對應(yīng)DDD的領(lǐng)域。根、莖、葉、花、果實(shí)和種子等器官則是細(xì)分后的問題子域。這個(gè)過程就是DDD將領(lǐng)域細(xì)分為多個(gè)子域的過程。
第三步:對器官進(jìn)行細(xì)分,將器官細(xì)分為組織。比如,葉子器官可細(xì)分為保護(hù)組織、營養(yǎng)組織和輸導(dǎo)組織等。這個(gè)過程就是DDD將子域進(jìn)一步細(xì)分為多個(gè)子域的過程。
第四步:對組織進(jìn)行細(xì)分,將組織細(xì)分為細(xì)胞,細(xì)胞成為我們研究的最小單元。細(xì)胞之間的細(xì)胞壁確定了單元的邊界,也確定了研究的最小邊界。
我們知道細(xì)胞核、線粒體、細(xì)胞膜等物質(zhì)共同構(gòu)成細(xì)胞,這些物質(zhì)一起協(xié)作讓細(xì)胞具有這類細(xì)胞特定的生物功能。在這里你可以把細(xì)胞理解為DDD的聚合,細(xì)胞內(nèi)的這些物質(zhì)就可以理解為聚合里面的聚合根、實(shí)體以及值對象等,在聚合內(nèi)這些實(shí)體一起協(xié)作完成特定的業(yè)務(wù)功能。這個(gè)過程類似DDD設(shè)計(jì)時(shí),確定微服務(wù)內(nèi)功能要素和邊界的過程。
這里總結(jié)一下,就是說每一個(gè)細(xì)分的領(lǐng)域都會有一個(gè)知識體系,也就是DDD的領(lǐng)域模型。在所有子域的研究完成后,我們就建立了全域的知識體系了,也就建立了全域的領(lǐng)域模型。
上面我們用自然科學(xué)研究的方法,說明了領(lǐng)域可以通過細(xì)分為子域的方法,來降低研究的復(fù)雜度?,F(xiàn)在我們把這個(gè)話題再切換到業(yè)務(wù)領(lǐng)域,對比驗(yàn)證下,二者的細(xì)分過程是否是一致的。這里以保險(xiǎn)行業(yè)為例。
保險(xiǎn)是個(gè)比較大的領(lǐng)域,很早以前的保險(xiǎn)核心系統(tǒng)把所有的功能都放在一個(gè)系統(tǒng)里來實(shí)現(xiàn),這個(gè)系統(tǒng)就是我們常說的單體系統(tǒng)。后來單體系統(tǒng)開始無法適應(yīng)保險(xiǎn)業(yè)務(wù)的發(fā)展,因此保險(xiǎn)公司開始了中臺轉(zhuǎn)型,引入分布式微服務(wù)架構(gòu)來替換原來的單體系統(tǒng)。而分布式微服務(wù)架構(gòu)就需要?jiǎng)澐謽I(yè)務(wù)領(lǐng)域邊界,建立領(lǐng)域模型,并實(shí)現(xiàn)微服務(wù)落地了。
為實(shí)現(xiàn)保險(xiǎn)領(lǐng)域建模和微服務(wù)建設(shè),我們可以根據(jù)業(yè)務(wù)關(guān)聯(lián)度以及流程邊界將保險(xiǎn)領(lǐng)域細(xì)分為:承保、收付、再保以及理賠等子域,而承保子域還可以繼續(xù)細(xì)分為投保、保全(壽險(xiǎn))、批改(財(cái)險(xiǎn))等子子域。
在投保這個(gè)限界上下文內(nèi)可以建立投保的領(lǐng)域模型,投保的領(lǐng)域模型最后映射到系統(tǒng)就是投保微服務(wù)。這就是一個(gè)保險(xiǎn)領(lǐng)域的細(xì)分和微服務(wù)的建設(shè)過程。
那么你可能會說,我不是保險(xiǎn)行業(yè)的人,我怎么理解這個(gè)過程呢?我認(rèn)為,不同行業(yè)的業(yè)務(wù)模型可能會不一樣,但領(lǐng)域建模和微服務(wù)建設(shè)的過程和方法基本類似,其核心思想就是將問題域逐步分解,降低業(yè)務(wù)理解和系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。
如何理解核心域、通用域和支撐域?在領(lǐng)域不斷劃分的過程中,領(lǐng)域會細(xì)分為不同的子域,子域可以根據(jù)自身重要性和功能屬性劃分為三類子域,它們分別是:核心域、通用域和支撐域。
決定產(chǎn)品和公司核心競爭力的子域是核心域,它是業(yè)務(wù)成功的主要因素和公司的核心競爭力。沒有太多個(gè)性化的訴求,同時(shí)被多個(gè)子域使用的通用功能子域是通用域。還有一種功能子域是必需的,但既不包含決定產(chǎn)品和公司核心競爭力的功能,也不包含通用功能的子域,它就是支撐域。
這三類子域相較之下,核心域是最重要的,我們下面講目的的時(shí)候還會以核心域?yàn)槔敿?xì)介紹。通用域和支撐域如果對應(yīng)到企業(yè)系統(tǒng),舉例來說的話,通用域則是你需要用到的通用系統(tǒng),比如認(rèn)證、權(quán)限等等,這類應(yīng)用很容易買到,沒有企業(yè)特點(diǎn)限制,不需要做太多的定制化。而支撐域則具有企業(yè)特性,但不具有通用性,例如數(shù)據(jù)代碼類的數(shù)據(jù)字典等系統(tǒng)。
那為什么要?jiǎng)澐趾诵挠?、通用域和支撐域,主要目的是什么呢?/p>
還是拿上面的桃樹來說吧。我們將桃樹細(xì)分為了根、莖、葉、花、果實(shí)和種子等六個(gè)子域,那桃樹是否有核心域?有的話,到底哪個(gè)是核心域呢?
不同的人對桃樹的理解是不同的。如果這棵桃樹生長在公園里,在園丁的眼里,他喜歡的是“人面桃花相映紅”的陽春三月,這時(shí)花就是桃樹的核心域。但如果這棵桃樹生長在果園里,對果農(nóng)來說,他則是希望在豐收的季節(jié)收獲碩果累累的桃子,這時(shí)果實(shí)就是桃樹的核心域。
在不同的場景下,不同的人對桃樹核心域的理解是不同的,因此對桃樹的處理方式也會不一樣。園丁更關(guān)注桃樹花期的營養(yǎng),而果農(nóng)則更關(guān)注桃樹落果期的營養(yǎng),有時(shí)為了保證果實(shí)的營養(yǎng)供給,還會裁剪掉瘋長的莖和葉(通用域或支撐域)。
同樣的道理,公司在IT系統(tǒng)建設(shè)過程中,由于預(yù)算和資源有限,對不同類型的子域應(yīng)有不同的關(guān)注度和資源投入策略,記住好鋼要用在刀刃上。
很多公司的業(yè)務(wù),表面看上去相似,但商業(yè)模式和戰(zhàn)略方向是存在很大差異的,因此公司的關(guān)注點(diǎn)會不一樣,在劃分核心域、通用域和支撐域時(shí),其結(jié)果也會出現(xiàn)非常大的差異。
比如同樣都是電商平臺的淘寶、天貓、京東和蘇寧易購,他們的商業(yè)模式是不同的。淘寶是C2C網(wǎng)站,個(gè)人賣家對個(gè)人買家,而天貓、京東和蘇寧易購則是B2C網(wǎng)站,是公司賣家對個(gè)人買家。即便是蘇寧易購與京東都是B2C的模式,他們的商業(yè)模式也是不一樣的,蘇寧易購是典型的傳統(tǒng)線下賣場轉(zhuǎn)型成為電商,京東則是直營加部分平臺模式。
商業(yè)模式的不同會導(dǎo)致核心域劃分結(jié)果的不同。有的公司核心域可能在客戶服務(wù),有的可能在產(chǎn)品質(zhì)量,有的可能在物流。在公司領(lǐng)域細(xì)分、建立領(lǐng)域模型和系統(tǒng)建設(shè)時(shí),我們就要結(jié)合公司戰(zhàn)略重點(diǎn)和商業(yè)模式,找到核心域了,且重點(diǎn)關(guān)注核心域。
如果你的公司剛好有意向轉(zhuǎn)型微服務(wù)架構(gòu)的話,我建議你和你的技術(shù)團(tuán)隊(duì)要將核心域的建設(shè)排在首位,最好是有絕對的掌控能力和自主研發(fā)能力,如果資源實(shí)在有限的話,可以在支撐域或者通用域上想想辦法,暫時(shí)采用外購的方式也未嘗不可。
總結(jié)領(lǐng)域的核心思想就是將問題域逐級細(xì)分,來降低業(yè)務(wù)理解和系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。通過領(lǐng)域細(xì)分,逐步縮小微服務(wù)需要解決的問題域,構(gòu)建合適的領(lǐng)域模型,而領(lǐng)域模型映射成系統(tǒng)就是微服務(wù)了。
核心域、支撐域和通用域的主要目標(biāo)是:通過領(lǐng)域劃分,區(qū)分不同子域在公司內(nèi)的不同功能屬性和重要性,從而公司可對不同子域采取不同的資源投入和建設(shè)策略,其關(guān)注度也會不一樣。
版權(quán)說明:本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!
- 上一篇:頸椎炎(治骨質(zhì)增生 肩周炎 頸椎炎良方)
- 下一篇:最后一頁
猜你喜歡:
- 2022-06-16頸椎炎(治骨質(zhì)增生 肩周炎 頸椎炎良方)
- 2022-06-16雪落在中國的土地上(艾青雪落在中國的土地上)
- 2022-06-16好段落摘抄(描寫向日葵的好詞好句好段)
- 2022-06-16寫人作文400字(寫人作文400字這就是我)
- 2022-06-16金蟲草(金蟲草這樣做不僅所需食材簡單)
- 2022-06-16腳心發(fā)熱是怎么回事(腳心發(fā)熱怎么回事)
- 2022-06-16情人節(jié) 英文(情人節(jié)來歷及英語詞匯學(xué)習(xí))
最新文章:
- 2022-06-16頸椎炎(治骨質(zhì)增生 肩周炎 頸椎炎良方)
- 2022-06-16雪落在中國的土地上(艾青雪落在中國的土地上)
- 2022-06-16好段落摘抄(描寫向日葵的好詞好句好段)
- 2022-06-16玉米須煮水要煮多久(玉米須煮水要煮多久詳細(xì)介紹)
- 2022-06-16寫人作文400字(寫人作文400字這就是我)
- 2022-06-16金蟲草(金蟲草這樣做不僅所需食材簡單)
- 2022-06-16腳心發(fā)熱是怎么回事(腳心發(fā)熱怎么回事)
- 2022-06-16情人節(jié) 英文(情人節(jié)來歷及英語詞匯學(xué)習(xí))
- 2022-06-16針筒簡筆畫(針簡筆畫 簡單)
- 2022-06-16什么人不能喝玉米面粥(什么人不能喝玉米須煮水詳細(xì)介紹)
- 2022-06-16玉米須煮水喝能不能祛濕氣(玉米須煮水能去濕氣嗎詳細(xì)介紹)
- 2022-06-16兒童玉米須煮水喝的9大奇效(玉米須煮水喝的9大奇效詳細(xì)介紹)
- 2022-06-16今日更新摩托羅拉edges耗電嚴(yán)重嗎帶來了摩托羅拉edge s的耗電測試
- 2022-06-16今日更新小米MIX4支持紅外嗎小米MIX4是否支持5G網(wǎng)絡(luò)以及紅外功能
- 2022-06-16今日更新糖果S40 Pro參數(shù)配置詳情手機(jī)外觀與華為mate40非常像
- 熱點(diǎn)推薦
- 熱評文章
- 隨機(jī)文章
- 針筒簡筆畫(針簡筆畫 簡單)
- 不戴口罩處罰的依據(jù)是什么(2021不戴口罩的處罰法律依據(jù))
- 刑事案件立案條件有哪些(刑事立案需要具備哪些條件)
- 再婚夫妻婚前財(cái)產(chǎn)如何處理(再婚夫妻婚前財(cái)產(chǎn)的處理方式有哪些)
- 離婚房產(chǎn)證還有他的名字怎么辦(離婚房產(chǎn)證上有第三人的名字怎么辦)
- 離婚起訴分財(cái)產(chǎn)的程序(訴訟離婚財(cái)產(chǎn)的處理方式有哪些)
- 什么是保密編碼(什么是保密的源頭)
- 勞動法具有哪些基本特征(什么是勞動法最主要的表現(xiàn)形式)
- 什么是幫助幼兒控制情緒的有效方法(什么是幫信罪)
- 在我國,依法設(shè)立的可經(jīng)營證券業(yè)務(wù)(什么是指依法設(shè)立的從事證券服務(wù)業(yè)務(wù)的法人機(jī)構(gòu))