大香蕉综合在线观看视频-日本在线观看免费福利-欧美激情一级欧美精品性-综合激情丁香久久狠狠

好房網(wǎng)

網(wǎng)站首頁(yè)百科全書(shū) >正文

領(lǐng)域的意思(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)領(lǐng)域 子域 核心域 通用域和支撐域)

2022-06-16 02:06:59 百科全書(shū)來(lái)源:
導(dǎo)讀 目前大家應(yīng)該是對(duì)領(lǐng)域的意思(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):領(lǐng)域 子域 核心域 通用域和支撐域)比較感興趣的,所以今天好房網(wǎng)小編CC就來(lái)為大家整理了一...
目前大家應(yīng)該是對(duì)領(lǐng)域的意思(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):領(lǐng)域 子域 核心域 通用域和支撐域)比較感興趣的,所以今天好房網(wǎng)小編CC就來(lái)為大家整理了一些關(guān)于領(lǐng)域的意思(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):領(lǐng)域 子域 核心域 通用域和支撐域)方面的相關(guān)知識(shí)來(lái)分享給大家,希望大家會(huì)喜歡哦。

領(lǐng)域的意思(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):領(lǐng)域、子域、核心域、通用域和支撐域)

DDD的知識(shí)體系提出了很多的名詞,像:領(lǐng)域、子域、核心域、通用域、支撐域、限界上下文、聚合、聚合根、實(shí)體、值對(duì)象等等,非常多。這些名詞,都是關(guān)鍵概念,但它們實(shí)在有些晦澀難懂,可能導(dǎo)致你還沒(méi)開(kāi)始實(shí)踐DDD就打起了退堂鼓。因此,在基礎(chǔ)篇中,我希望能帶著你一起做好實(shí)踐前的準(zhǔn)備工作。

除此之外,我想說(shuō)的是,這些名詞在你的微服務(wù)設(shè)計(jì)和開(kāi)發(fā)過(guò)程中不一定都用得上,但它可以幫你理解DDD的核心設(shè)計(jì)思想和理念。而這些思想和理念,在IT戰(zhàn)略設(shè)計(jì)、業(yè)務(wù)建模和微服務(wù)設(shè)計(jì)中都是可以借鑒的。

今天我們重點(diǎn)了解DDD的領(lǐng)域、子域、核心域、通用域和支撐域等重要概念。

如何理解領(lǐng)域和子域?

我們先看一下漢語(yǔ)詞典中對(duì)領(lǐng)域的解釋:“領(lǐng)域是從事一種專門(mén)活動(dòng)或事業(yè)的范圍、部類或部門(mén)?!卑俣劝倏茖?duì)領(lǐng)域的解釋:“領(lǐng)域具體指一種特定的范圍或區(qū)域?!?/p>

兩個(gè)解釋有一個(gè)共同點(diǎn)——范圍。對(duì)了!領(lǐng)域就是用來(lái)確定范圍的,范圍即邊界,這也是DDD在設(shè)計(jì)中不斷強(qiáng)調(diào)邊界的原因。

在研究和解決業(yè)務(wù)問(wèn)題時(shí),DDD會(huì)按照一定的規(guī)則將業(yè)務(wù)領(lǐng)域進(jìn)行細(xì)分,當(dāng)領(lǐng)域細(xì)分到一定的程度后,DDD會(huì)將問(wèn)題范圍限定在特定的邊界內(nèi),在這個(gè)邊界內(nèi)建立領(lǐng)域模型,進(jìn)而用代碼實(shí)現(xiàn)該領(lǐng)域模型,解決相應(yīng)的業(yè)務(wù)問(wèn)題。簡(jiǎn)言之,DDD的領(lǐng)域就是這個(gè)邊界內(nèi)要解決的業(yè)務(wù)問(wèn)題域。

既然領(lǐng)域是用來(lái)限定業(yè)務(wù)邊界和范圍的,那么就會(huì)有大小之分,領(lǐng)域越大,業(yè)務(wù)范圍就越大,反之則相反。

領(lǐng)域可以進(jìn)一步劃分為子領(lǐng)域。我們把劃分出來(lái)的多個(gè)子領(lǐng)域稱為子域,每個(gè)子域?qū)?yīng)一個(gè)更小的問(wèn)題域或更小的業(yè)務(wù)范圍。

我們知道,DDD是一種處理高度復(fù)雜領(lǐng)域的設(shè)計(jì)思想,它試圖分離技術(shù)實(shí)現(xiàn)的復(fù)雜度。那么面對(duì)錯(cuò)綜復(fù)雜的業(yè)務(wù)領(lǐng)域,DDD是如何使業(yè)務(wù)從復(fù)雜變得簡(jiǎn)單,更容易讓人理解,技術(shù)實(shí)現(xiàn)更容易呢?

其實(shí)很好理解,DDD的研究方法與自然科學(xué)的研究方法類似。當(dāng)人們?cè)谧匀豢茖W(xué)研究中遇到復(fù)雜問(wèn)題時(shí),通常的做法就是將問(wèn)題一步一步地細(xì)分,再針對(duì)細(xì)分出來(lái)的問(wèn)題域,逐個(gè)深入研究,探索和建立所有子域的知識(shí)體系。當(dāng)所有問(wèn)題子域完成研究時(shí),我們就建立了全部領(lǐng)域的完整知識(shí)體系了。

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì):領(lǐng)域、子域、核心域、通用域和支撐域

需要對(duì)領(lǐng)域進(jìn)行細(xì)分

初中生物課給我們講過(guò)桃樹(shù)的研究過(guò)程:

第一步:確定研究對(duì)象,即研究領(lǐng)域,這里是一棵桃樹(shù)。

第二步:對(duì)研究對(duì)象進(jìn)行細(xì)分,將桃樹(shù)細(xì)分為器官,器官又分為營(yíng)養(yǎng)器官和生殖器官兩種。其中營(yíng)養(yǎng)器官包括根、莖和葉,生殖器官包括花、果實(shí)和種子。桃樹(shù)的知識(shí)體系是我們已經(jīng)確定要研究的問(wèn)題域,對(duì)應(yīng)DDD的領(lǐng)域。根、莖、葉、花、果實(shí)和種子等器官則是細(xì)分后的問(wèn)題子域。這個(gè)過(guò)程就是DDD將領(lǐng)域細(xì)分為多個(gè)子域的過(guò)程。

第三步:對(duì)器官進(jìn)行細(xì)分,將器官細(xì)分為組織。比如,葉子器官可細(xì)分為保護(hù)組織、營(yíng)養(yǎng)組織和輸導(dǎo)組織等。這個(gè)過(guò)程就是DDD將子域進(jìn)一步細(xì)分為多個(gè)子域的過(guò)程。

第四步:對(duì)組織進(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í)體以及值對(duì)象等,在聚合內(nèi)這些實(shí)體一起協(xié)作完成特定的業(yè)務(wù)功能。這個(gè)過(guò)程類似DDD設(shè)計(jì)時(shí),確定微服務(wù)內(nèi)功能要素和邊界的過(guò)程。

這里總結(jié)一下,就是說(shuō)每一個(gè)細(xì)分的領(lǐng)域都會(huì)有一個(gè)知識(shí)體系,也就是DDD的領(lǐng)域模型。在所有子域的研究完成后,我們就建立了全域的知識(shí)體系了,也就建立了全域的領(lǐng)域模型。

上面我們用自然科學(xué)研究的方法,說(shuō)明了領(lǐng)域可以通過(guò)細(xì)分為子域的方法,來(lái)降低研究的復(fù)雜度。現(xiàn)在我們把這個(gè)話題再切換到業(yè)務(wù)領(lǐng)域,對(duì)比驗(yàn)證下,二者的細(xì)分過(guò)程是否是一致的。這里以保險(xiǎn)行業(yè)為例。

保險(xiǎn)是個(gè)比較大的領(lǐng)域,很早以前的保險(xiǎn)核心系統(tǒng)把所有的功能都放在一個(gè)系統(tǒng)里來(lái)實(shí)現(xiàn),這個(gè)系統(tǒng)就是我們常說(shuō)的單體系統(tǒng)。后來(lái)單體系統(tǒng)開(kāi)始無(wú)法適應(yīng)保險(xiǎn)業(yè)務(wù)的發(fā)展,因此保險(xiǎn)公司開(kāi)始了中臺(tái)轉(zhuǎn)型,引入分布式微服務(wù)架構(gòu)來(lái)替換原來(lái)的單體系統(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è)過(guò)程。

那么你可能會(huì)說(shuō),我不是保險(xiǎn)行業(yè)的人,我怎么理解這個(gè)過(guò)程呢?我認(rèn)為,不同行業(yè)的業(yè)務(wù)模型可能會(huì)不一樣,但領(lǐng)域建模和微服務(wù)建設(shè)的過(guò)程和方法基本類似,其核心思想就是將問(wèn)題域逐步分解,降低業(yè)務(wù)理解和系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。

如何理解核心域、通用域和支撐域?

在領(lǐng)域不斷劃分的過(guò)程中,領(lǐng)域會(huì)細(xì)分為不同的子域,子域可以根據(jù)自身重要性和功能屬性劃分為三類子域,它們分別是:核心域、通用域和支撐域。

決定產(chǎn)品和公司核心競(jìng)爭(zhēng)力的子域是核心域,它是業(yè)務(wù)成功的主要因素和公司的核心競(jìng)爭(zhēng)力。沒(méi)有太多個(gè)性化的訴求,同時(shí)被多個(gè)子域使用的通用功能子域是通用域。還有一種功能子域是必需的,但既不包含決定產(chǎn)品和公司核心競(jìng)爭(zhēng)力的功能,也不包含通用功能的子域,它就是支撐域。

這三類子域相較之下,核心域是最重要的,我們下面講目的的時(shí)候還會(huì)以核心域?yàn)槔敿?xì)介紹。通用域和支撐域如果對(duì)應(yīng)到企業(yè)系統(tǒng),舉例來(lái)說(shuō)的話,通用域則是你需要用到的通用系統(tǒng),比如認(rèn)證、權(quán)限等等,這類應(yīng)用很容易買到,沒(méi)有企業(yè)特點(diǎn)限制,不需要做太多的定制化。而支撐域則具有企業(yè)特性,但不具有通用性,例如數(shù)據(jù)代碼類的數(shù)據(jù)字典等系統(tǒng)。

那為什么要?jiǎng)澐趾诵挠?、通用域和支撐域,主要目的是什么呢?/p>

還是拿上面的桃樹(shù)來(lái)說(shuō)吧。我們將桃樹(shù)細(xì)分為了根、莖、葉、花、果實(shí)和種子等六個(gè)子域,那桃樹(shù)是否有核心域?有的話,到底哪個(gè)是核心域呢?

不同的人對(duì)桃樹(shù)的理解是不同的。如果這棵桃樹(shù)生長(zhǎng)在公園里,在園丁的眼里,他喜歡的是“人面桃花相映紅”的陽(yáng)春三月,這時(shí)花就是桃樹(shù)的核心域。但如果這棵桃樹(shù)生長(zhǎng)在果園里,對(duì)果農(nóng)來(lái)說(shuō),他則是希望在豐收的季節(jié)收獲碩果累累的桃子,這時(shí)果實(shí)就是桃樹(shù)的核心域。

在不同的場(chǎng)景下,不同的人對(duì)桃樹(shù)核心域的理解是不同的,因此對(duì)桃樹(shù)的處理方式也會(huì)不一樣。園丁更關(guān)注桃樹(shù)花期的營(yíng)養(yǎng),而果農(nóng)則更關(guān)注桃樹(shù)落果期的營(yíng)養(yǎng),有時(shí)為了保證果實(shí)的營(yíng)養(yǎng)供給,還會(huì)裁剪掉瘋長(zhǎng)的莖和葉(通用域或支撐域)。

同樣的道理,公司在IT系統(tǒng)建設(shè)過(guò)程中,由于預(yù)算和資源有限,對(duì)不同類型的子域應(yīng)有不同的關(guān)注度和資源投入策略,記住好鋼要用在刀刃上。

很多公司的業(yè)務(wù),表面看上去相似,但商業(yè)模式和戰(zhàn)略方向是存在很大差異的,因此公司的關(guān)注點(diǎn)會(huì)不一樣,在劃分核心域、通用域和支撐域時(shí),其結(jié)果也會(huì)出現(xiàn)非常大的差異。

比如同樣都是電商平臺(tái)的淘寶、天貓、京東和蘇寧易購(gòu),他們的商業(yè)模式是不同的。淘寶是C2C網(wǎng)站,個(gè)人賣家對(duì)個(gè)人買家,而天貓、京東和蘇寧易購(gòu)則是B2C網(wǎng)站,是公司賣家對(duì)個(gè)人買家。即便是蘇寧易購(gòu)與京東都是B2C的模式,他們的商業(yè)模式也是不一樣的,蘇寧易購(gòu)是典型的傳統(tǒng)線下賣場(chǎng)轉(zhuǎn)型成為電商,京東則是直營(yíng)加部分平臺(tái)模式。

商業(yè)模式的不同會(huì)導(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è)排在首位,最好是有絕對(duì)的掌控能力和自主研發(fā)能力,如果資源實(shí)在有限的話,可以在支撐域或者通用域上想想辦法,暫時(shí)采用外購(gòu)的方式也未嘗不可。

總結(jié)

領(lǐng)域的核心思想就是將問(wèn)題域逐級(jí)細(xì)分,來(lái)降低業(yè)務(wù)理解和系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。通過(guò)領(lǐng)域細(xì)分,逐步縮小微服務(wù)需要解決的問(wèn)題域,構(gòu)建合適的領(lǐng)域模型,而領(lǐng)域模型映射成系統(tǒng)就是微服務(wù)了。

核心域、支撐域和通用域的主要目標(biāo)是:通過(guò)領(lǐng)域劃分,區(qū)分不同子域在公司內(nèi)的不同功能屬性和重要性,從而公司可對(duì)不同子域采取不同的資源投入和建設(shè)策略,其關(guān)注度也會(huì)不一樣。


版權(quán)說(shuō)明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!


標(biāo)簽:

熱點(diǎn)推薦
熱評(píng)文章
隨機(jī)文章