日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
六邊形架構(gòu):管理復(fù)雜性的解決方案

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

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新北免費(fèi)建站歡迎大家使用!

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

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

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

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

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

從內(nèi)部開始

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

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

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

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

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

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

返回領(lǐng)域

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

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

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

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

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

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

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

在最簡(jiǎn)單的形式下,這些假設(shè)聽起來(lái)像這樣:

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

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

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

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

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

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


網(wǎng)站名稱:六邊形架構(gòu):管理復(fù)雜性的解決方案
當(dāng)前URL:http://www.dlmjj.cn/article/ccopjph.html