自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

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

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

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

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

從內(nèi)部開始

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

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

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

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

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

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

返回領(lǐng)域

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

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

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

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

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

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

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

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

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

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

讓我們稍作停頓,因為上述兩個步驟提到了該架構(gòu)的另一個好處。在這種純粹形式下,可以實現(xiàn)單元測試或測試驅(qū)動開發(fā)(TDD)。

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

如果你在遵循TDD,你會先在代碼中寫一個單元測試,然后再寫任何功能性代碼。該測試將失敗,因為你尚未編寫任何功能性代碼。然后,你編寫滿足測試的功能性代碼。接著你編寫下一個測試,然后功能性代碼,然后測試,依此類推。

這就是本文的全部內(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ù)庫

2023-08-06 23:31:36

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

2020-04-02 13:44:57

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

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

六邊形動畫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)
點贊
收藏

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