偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

六邊形架構(gòu):管理復(fù)雜性的解決方案

開發(fā) 測試 系統(tǒng)
六邊形架構(gòu)是一種架構(gòu)模式,將外部系統(tǒng)與核心應(yīng)用程序分隔開來,其思想很簡單,我們從一個(gè)六邊形開始。然后

六邊形架構(gòu)是一種將外部系統(tǒng)與核心應(yīng)用程序分離的架構(gòu)模式。

六邊形架構(gòu)是什么?

六邊形架構(gòu)是一種架構(gòu)模式,將外部系統(tǒng)與核心應(yīng)用程序分隔開來。

其思想很簡單。我們從一個(gè)六邊形開始。然后應(yīng)用端口和適配器,對吧?

六邊形有六個(gè)邊。六邊形的形狀本身并沒有特別含義。它只是提供了一種清晰的方式來討論和解釋應(yīng)用程序的端口、適配器和領(lǐng)域。

這個(gè)形狀提供了一種解釋應(yīng)用程序流程中小塊內(nèi)容的方式,而不會(huì)讓觀眾對整個(gè)應(yīng)用程序的圖景感到不知所措。它本質(zhì)上限制了設(shè)計(jì)者一次只設(shè)計(jì)或解釋小塊容易理解的部分。

從內(nèi)部開始

應(yīng)用程序領(lǐng)域位于六邊形的內(nèi)部。當(dāng)我們說領(lǐng)域時(shí),我們指的是遵循領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)原則,并且我們的業(yè)務(wù)邏輯不會(huì)泄露到六邊形外部。為了上下文,DDD:

  • 專注于通過定義與業(yè)務(wù)特定部分相關(guān)的模型來解決主要問題。
  • 使用所有團(tuán)隊(duì)成員都能理解的通用語言。
  • 定義了一個(gè)邊界上下文,其中封裝了領(lǐng)域模型。

遵循DDD原則,為了本文的目的,我使用以下過程提出了以下領(lǐng)域。

假設(shè)我們正在構(gòu)建一個(gè)新的應(yīng)用程序,允許用戶通過網(wǎng)站將文件上傳到一個(gè)中央存儲(chǔ)庫以供共享。

以下是一些基本的應(yīng)用程序要求:

  • 由經(jīng)過身份驗(yàn)證的用戶通過網(wǎng)站上傳文件。
  • 文件是為程序上傳的,或者換句話說是為了某個(gè)目的上傳的。
  • 程序/目的是一組預(yù)先配置的文件規(guī)范,文件必須符合這些規(guī)范。
  • 程序規(guī)則指定一些內(nèi)容,比如:— 可以上傳的文件類型— 字段數(shù)量— 其他要求,比如加密或壓縮文件— 文件必須符合某些規(guī)范才能被接受。
  • 必須授權(quán)用戶以上傳特定程序的文件。

返回領(lǐng)域

領(lǐng)域表示應(yīng)用程序的關(guān)鍵業(yè)務(wù)邏輯,允許用戶將文件上傳到存儲(chǔ)庫以供其他方共享。請注意,以下領(lǐng)域只涵蓋了上傳者、上傳者的授權(quán)和要上傳的文件的文件規(guī)格。

藍(lán)色矩形被稱為實(shí)體,它們連同藍(lán)色字段一起表示滿足我們功能要求所需的結(jié)構(gòu)。

一個(gè)更全面的領(lǐng)域模型可能包括已上傳或已下載文件的下載者和文件配置詳情,以及可能應(yīng)用的數(shù)據(jù)質(zhì)量配置??梢誀幷撜f這可以進(jìn)一步劃分為子領(lǐng)域,但為了簡潔起見,我們將堅(jiān)持當(dāng)前的示例。

從邏輯上講,我們的六邊形現(xiàn)在看起來像這樣:

眾所周知六邊形架構(gòu)的原則之一是領(lǐng)域不泄露到六邊形外部,也不需要了解外部世界的任何信息。

在這一點(diǎn)上,我們可以從理論上寫出滿足這個(gè)應(yīng)用程序基本要求的代碼,從業(yè)務(wù)邏輯功能的角度來看,這將是純粹的應(yīng)用程序代碼開發(fā)。然而,這并不能幫助我們太多,因?yàn)闃I(yè)務(wù)邏輯被包裝在六邊形的外邊界之內(nèi)。

我們需要一些輸入和輸出,所以現(xiàn)在我們做一些關(guān)于我們?nèi)绾闻c領(lǐng)域交互的假設(shè)。

在最簡單的形式下,這些假設(shè)聽起來像這樣:

  • 數(shù)據(jù)以用戶的請求形式提交,可以是信息請求或上傳文件。(輸入)
  • 這些數(shù)據(jù)經(jīng)過驗(yàn)證、轉(zhuǎn)換并存儲(chǔ)在某個(gè)地方。(輸出)

我們需要與這個(gè)領(lǐng)域交互,以便它能夠完成其工作,即授權(quán)上傳者、接受文件并檢查文件規(guī)格(基于程序/目的)是否有效。

讓我們稍作停頓,因?yàn)樯鲜鰞蓚€(gè)步驟提到了該架構(gòu)的另一個(gè)好處。在這種純粹形式下,可以實(shí)現(xiàn)單元測試或測試驅(qū)動(dòng)開發(fā)(TDD)。

編寫自動(dòng)化單元測試可在開發(fā)過程中或進(jìn)行增強(qiáng)時(shí)運(yùn)行,可以減少引入錯(cuò)誤的風(fēng)險(xiǎn),提高代碼質(zhì)量,尤其是如果單元測試作為代碼檢入和部署活動(dòng)的一部分進(jìn)行運(yùn)行(考慮持續(xù)集成/持續(xù)交付)。

如果你在遵循TDD,你會(huì)先在代碼中寫一個(gè)單元測試,然后再寫任何功能性代碼。該測試將失敗,因?yàn)槟闵形淳帉懭魏喂δ苄源a。然后,你編寫滿足測試的功能性代碼。接著你編寫下一個(gè)測試,然后功能性代碼,然后測試,依此類推。

這就是本文的全部內(nèi)容?,F(xiàn)在我們已經(jīng)了解了什么是六邊形架構(gòu),并創(chuàng)建了我們的領(lǐng)域模型,下一篇我們將探討如何連接端口和適配器,使架構(gòu)能夠開始管理復(fù)雜性。

責(zé)任編輯:趙寧寧 來源: 小技術(shù)君
相關(guān)推薦

2017-02-21 17:25:51

架構(gòu)六邊形架構(gòu)數(shù)據(jù)庫

2020-04-02 13:44:57

架構(gòu)Netflix數(shù)據(jù)

2023-08-06 23:31:36

架構(gòu)系統(tǒng)RPC

2019-12-16 08:08:39

六邊形架構(gòu)分層架構(gòu)架構(gòu)

2023-04-14 08:00:00

架構(gòu)測試開發(fā)

2022-12-28 07:48:40

六邊形動(dòng)畫CSS

2023-11-01 07:41:39

六邊形架構(gòu)適配器架構(gòu)

2024-04-17 08:06:41

六邊形洋蔥架構(gòu)領(lǐng)域

2023-10-30 10:12:20

2021-08-29 18:32:18

CSS

2025-01-17 11:38:10

2025-02-24 07:39:53

2017-06-08 10:33:42

軟件開發(fā)前后端架構(gòu)

2023-09-08 18:37:34

HarmonyOS

2022-11-08 08:00:00

開發(fā)Uber數(shù)據(jù)庫

2021-04-29 15:15:03

網(wǎng)絡(luò)配置網(wǎng)絡(luò)復(fù)雜性網(wǎng)絡(luò)

2024-04-02 14:14:52

物聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號