摘要:翻譯自有整理你問(wèn)的限界上下文是什么特定模型的分隔適用性。限界上下文意味著責(zé)任是通過(guò)明確的邊界來(lái)強(qiáng)制執(zhí)行的舉個(gè)例子過(guò)程約翰,公司的開(kāi)發(fā)人員。每個(gè)組也是有限的上下文。
翻譯自DDD - The Bounded Context Explained,有整理你問(wèn)的限界上下文(BC)是什么?
“特定模型的分隔適用性。限界上下文使團(tuán)隊(duì)成員能夠清楚地分享對(duì)必須一致的內(nèi)容以及可以獨(dú)立開(kāi)發(fā)的內(nèi)容。”
看定義看懂了嗎?BC是最難解釋的DDD原則之一,但它可能是最重要的,因?yàn)闆](méi)有BC就不能做DDD。因此,您必須了解如何在實(shí)際獲取根聚合,聚合,實(shí)體和值對(duì)象之前識(shí)別BC。
讓我們?cè)僭囈淮危?strong>上下文意味著具體的責(zé)任。限界上下文意味著責(zé)任是通過(guò)明確的邊界來(lái)強(qiáng)制執(zhí)行的
舉個(gè)例子 過(guò)程約翰,X公司的開(kāi)發(fā)人員。約翰在IT部門(mén)工作
麗塔,她是同一家公司的會(huì)計(jì)師。麗塔在會(huì)計(jì)部門(mén)工作
此時(shí),IT部門(mén)是一個(gè)限界上下文,會(huì)計(jì)部門(mén)是另一個(gè)限界上下文
IT部門(mén)有責(zé)任處理公司中與IT相關(guān)的所有事務(wù),而會(huì)計(jì)部門(mén)處理與會(huì)計(jì)相關(guān)的所有事務(wù)
約翰不會(huì)進(jìn)入麗塔的辦公室并修改工資單,而麗塔也不會(huì)去約翰的辦公室并修改他的代碼。
雖然他們可以這么做,但這將是一個(gè)丑聞。因?yàn)槿绻麄冞@樣做,他們將超越他們的界限。
如果麗塔在會(huì)計(jì)軟件(內(nèi)部開(kāi)發(fā))中發(fā)現(xiàn)錯(cuò)誤,她會(huì)致電IT部門(mén)處理。她不會(huì)啟動(dòng)Visual Studio并開(kāi)始搞亂代碼。這既不是她的責(zé)任同時(shí)她也不需要知道怎么做,即使她知道VS是約翰用來(lái)編寫(xiě)代碼的程序(事實(shí)上,VS在會(huì)計(jì)師的計(jì)算機(jī)上將是一個(gè)非常奇怪的軟件)
同樣明智的是,工資單文件或發(fā)票在IT部門(mén)中是沒(méi)有位置的。
當(dāng)然,當(dāng)約翰遇到涉及工資單的問(wèn)題時(shí),他要求麗塔調(diào)查一下。
兩者都尊重彼此的界限,并根據(jù)自己的責(zé)任行事。
但I(xiàn)T部門(mén)本身分為兩組:軟件開(kāi)發(fā)組和管理組。第一組實(shí)現(xiàn)功能并修復(fù)錯(cuò)誤。第二組處理服務(wù)器。每個(gè)組也是有限的上下文。他們有自己的責(zé)任和明確的界限。 DBA不編寫(xiě)C#代碼,約翰不會(huì)破壞服務(wù)器配置。每個(gè)人都按照自己的責(zé)任行事并在自己的范圍內(nèi)行事。
兩者都有非常精確的責(zé)任,他們的界限非常明確。
小結(jié)所以,IT部門(mén)是BC。約翰是其模型的一部分。
事實(shí)上,所有有意義的東西(開(kāi)發(fā)人員,服務(wù)器等)都是BC的一部分,它應(yīng)該在內(nèi)部保持一致(開(kāi)發(fā)人員應(yīng)該編寫(xiě)軟件而不是詢(xún)問(wèn)發(fā)票)。
這意味著麗塔在IT方面沒(méi)有地位,她不應(yīng)該處理與IT相關(guān)的任何事情。
麗塔是會(huì)計(jì)BC的一部分。她可能正在訪(fǎng)問(wèn)IT辦公室,但她只是一個(gè)匆匆過(guò)客,她對(duì)該部門(mén)毫無(wú)意義,沒(méi)有人希望她編寫(xiě)代碼或充當(dāng)開(kāi)發(fā)人員。約翰可能喜歡麗塔,并花了一些時(shí)間在她的辦公室,但這并不能使約翰成為一名會(huì)計(jì)師。
我們可以看到,在一定程度上,BC是自治的,它們不重疊。此外,如果來(lái)自一個(gè)BC(X)的對(duì)象轉(zhuǎn)到其他BC(Y),它并不意味著它現(xiàn)在是后者的一部分,它僅被視為一個(gè)對(duì)Y沒(méi)有意義的簡(jiǎn)單對(duì)象。所以它們幾乎是獨(dú)立的,那么他們?nèi)绾我黄鸸ぷ鳎?/p> 不同BC之間該如何合作 例子說(shuō)明
登場(chǎng)新人物 -> 安德魯(IT部門(mén)經(jīng)理)
按照例子來(lái)說(shuō),當(dāng)會(huì)計(jì)部門(mén)必須和IT部門(mén)合作的時(shí)候該如何做?
他們通過(guò)與合適的人交談來(lái)做到這一點(diǎn)。
當(dāng)麗塔需要一個(gè)新的軟件功能時(shí),她可以告訴約翰,但約翰的經(jīng)理(安德魯)最終決定是否添加,以及將添加哪些功能。
當(dāng)你想要新功能甚至修復(fù)一些錯(cuò)誤時(shí),是需要與安德魯交流的。安德魯是IT經(jīng)理,他告訴約翰(或IT的其他任何人)下一步該做什么。
麗塔不能忽視安德魯,因?yàn)檫@是IT部門(mén)的規(guī)則:安德魯做決定。你必須按照安德魯想要的方式提出你的想法,否則他們會(huì)被拒絕。當(dāng)要求對(duì)IT不符合方式且沒(méi)有意義的時(shí)候,要求會(huì)自動(dòng)被拒絕。
安德魯是IT BC的反腐敗層,沒(méi)有什么決定能夠跳過(guò)他,它適合于IT部門(mén)的內(nèi)部組織。
類(lèi)比到代碼這些例子很簡(jiǎn)單,但我們的代碼呢?我們確實(shí)希望我們的BC能夠解耦,所以BC1不應(yīng)該知道BC2。好吧,這個(gè)想法是一個(gè)BC不應(yīng)該知道其他BC的內(nèi)部,這兩個(gè)可以使用公共對(duì)象(DTO)直接將消息傳遞給另一個(gè)或者是專(zhuān)門(mén)的適配器,它知道如何與兩個(gè)BC通信。雖然通過(guò)域事件(基本上是更高級(jí)別使用的觀察者模式)的首選方法。
結(jié)束語(yǔ)哇,很長(zhǎng)的帖子,但我希望你現(xiàn)在對(duì)一個(gè)有限的背景有一個(gè)非常明確的理解。以下是常見(jiàn)有界上下文的一些示例:應(yīng)用程序本身,UI層,域?qū)右约八鼈兊淖钚C:對(duì)象,任何對(duì)象。
參考DDD - The Bounded Context Explained
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28078.html
摘要:將領(lǐng)域中所發(fā)生的活動(dòng)建模成一系列離散事件。領(lǐng)域事件是領(lǐng)域模型的組成部分,表示領(lǐng)域中所發(fā)生的事情。創(chuàng)建領(lǐng)域事件事件命名在建模領(lǐng)域事件時(shí),我們應(yīng)該根據(jù)限界上下文中的通用語(yǔ)言來(lái)命名事件。 使用領(lǐng)域事件來(lái)捕獲發(fā)生在領(lǐng)域中的一些事情。 領(lǐng)域驅(qū)動(dòng)實(shí)踐者發(fā)現(xiàn)他們可以通過(guò)了解更多發(fā)生在問(wèn)題域中的事件,來(lái)更好的理解問(wèn)題域。這些事件,就是領(lǐng)域事件,主要是與領(lǐng)域?qū)<乙黄疬M(jìn)行知識(shí)提煉環(huán)節(jié)中獲得。 領(lǐng)域事件,可...
摘要:代碼實(shí)現(xiàn)見(jiàn)下面評(píng)論對(duì)應(yīng)代碼動(dòng)態(tài)規(guī)劃基本思想和分治法基本思想有共同的地方,不同的是子問(wèn)題往往不是獨(dú)立的,有事母問(wèn)題要借助子問(wèn)題的解來(lái)判斷,因此把已經(jīng)計(jì)算好的問(wèn)題記錄在表格中,后續(xù)如果需要查詢(xún)一下,可以避免重復(fù)計(jì)算,這是動(dòng)態(tài)規(guī)劃的基本思想。 作者:心葉時(shí)間:2018-05-01 19:28 本文對(duì)應(yīng)github地址:https://github.com/yelloxing/... 以上實(shí)現(xiàn)...
摘要:而微服務(wù)將這個(gè)理念應(yīng)用在獨(dú)立的服務(wù)上。微服務(wù)對(duì)比與原來(lái)的單體應(yīng)用,有它的優(yōu)勢(shì),如服務(wù)的自治性增強(qiáng)但同時(shí)也會(huì)帶來(lái)一些其他問(wèn)題,如性能復(fù)雜度等問(wèn)題。想要使用微服務(wù),首先是要清楚哪些業(yè)務(wù)或者功能應(yīng)該成為單獨(dú)的服務(wù)。其次,考慮業(yè)務(wù)極有可能的變化。 1、在學(xué)習(xí)軟件構(gòu)造、設(shè)計(jì)相關(guān)知識(shí)時(shí),大家應(yīng)該有學(xué)習(xí)到內(nèi)聚性的概念:即把因相同原因而變化的東西聚合到一起,而把因不同原因而變化的東西分離開(kāi)來(lái)。而 微服...
摘要:本文總結(jié)了前端老司機(jī)經(jīng)常問(wèn)題的一些問(wèn)題并結(jié)合個(gè)人總結(jié)給出了比較詳盡的答案。網(wǎng)易阿里騰訊校招社招必備知識(shí)點(diǎn)。此外還有網(wǎng)絡(luò)線(xiàn)程,定時(shí)器任務(wù)線(xiàn)程,文件系統(tǒng)處理線(xiàn)程等等。線(xiàn)程核心是引擎。主線(xiàn)程和工作線(xiàn)程之間的通知機(jī)制叫做事件循環(huán)。 showImg(https://segmentfault.com/img/bVbu4aB?w=300&h=208); 本文總結(jié)了前端老司機(jī)經(jīng)常問(wèn)題的一些問(wèn)題并結(jié)合個(gè)...
閱讀 2184·2021-11-23 10:06
閱讀 3578·2021-11-11 16:54
閱讀 3388·2019-08-29 17:31
閱讀 3629·2019-08-29 17:05
閱讀 2216·2019-08-26 13:36
閱讀 2209·2019-08-26 12:17
閱讀 577·2019-08-26 12:12
閱讀 1725·2019-08-26 10:19