六邊形架構:管理複雜性的解決方案
六邊形架構是一種將外部系統與核心應用程式分離的架構模式。
六邊形架構是什麼?
六邊形架構是一種架構模式,將外部系統與核心應用程式分隔開來。
其思想很簡單。我們從一個六邊形開始。然後應用埠和介面卡,對吧?
六邊形有六個邊。六邊形的形狀本身並沒有特別含義。它只是提供了一種清晰的方式來討論和解釋應用程式的埠、介面卡和領域。
這個形狀提供了一種解釋應用程式流程中小塊內容的方式,而不會讓觀眾對整個應用程式的圖景感到不知所措。它本質上限制了設計者一次只設計或解釋小塊容易理解的部分。
從內部開始
應用程式領域位於六邊形的內部。當我們說領域時,我們指的是遵循領域驅動設計(DDD)原則,並且我們的業務邏輯不會洩露到六邊形外部。為了上下文,DDD:
1.專注於透過定義與業務特定部分相關的模型來解決主要問題。2.使用所有團隊成員都能理解的通用語言。3.定義了一個邊界上下文,其中封裝了領域模型。
遵循DDD原則,為了本文的目的,我使用以下過程提出了以下領域。
假設我們正在構建一個新的應用程式,允許使用者透過網站將檔案上傳到一箇中央儲存庫以供共享。
以下是一些基本的應用程式要求:
1.由經過身份驗證的使用者透過網站上傳檔案。2.檔案是為程式上傳的,或者換句話說是為了某個目的上傳的。3.程式/目的是一組預先配置的檔案規範,檔案必須符合這些規範。4.程式規則指定一些內容,比如:— 可以上傳的檔案型別— 欄位數量— 其他要求,比如加密或壓縮檔案— 檔案必須符合某些規範才能被接受。5.必須授權使用者以上傳特定程式的檔案。
返回領域
領域表示應用程式的關鍵業務邏輯,允許使用者將檔案上傳到儲存庫以供其他方共享。請注意,以下領域只涵蓋了上傳者、上傳者的授權和要上傳的檔案的檔案規格。
藍色矩形被稱為實體,它們連同藍色欄位一起表示滿足我們功能要求所需的結構。
一個更全面的領域模型可能包括已上傳或已下載檔案的下載者和檔案配置詳情,以及可能應用的資料質量配置。可以爭論說這可以進一步劃分為子領域,但為了簡潔起見,我們將堅持當前的示例。
從邏輯上講,我們的六邊形現在看起來像這樣:
眾所周知六邊形架構的原則之一是領域不洩露到六邊形外部,也不需要了解外部世界的任何資訊。
在這一點上,我們可以從理論上寫出滿足這個應用程式基本要求的程式碼,從業務邏輯功能的角度來看,這將是純粹的應用程式程式碼開發。然而,這並不能幫助我們太多,因為業務邏輯被包裝在六邊形的外邊界之內。
我們需要一些輸入和輸出,所以現在我們做一些關於我們如何與領域互動的假設。
在最簡單的形式下,這些假設聽起來像這樣:
1.資料以使用者的請求形式提交,可以是資訊請求或上傳檔案。(輸入)2.這些資料經過驗證、轉換並儲存在某個地方。(輸出)
我們需要與這個領域互動,以便它能夠完成其工作,即授權上傳者、接受檔案並檢查檔案規格(基於程式/目的)是否有效。
讓我們稍作停頓,因為上述兩個步驟提到了該架構的另一個好處。在這種純粹形式下,可以實現單元測試或測試驅動開發(TDD)。
編寫自動化單元測試可在開發過程中或進行增強時執行,可以減少引入錯誤的風險,提高程式碼質量,尤其是如果單元測試作為程式碼檢入和部署活動的一部分進行執行(考慮持續整合/持續交付)。
如果你在遵循TDD,你會先在程式碼中寫一個單元測試,然後再寫任何功能性程式碼。該測試將失敗,因為你尚未編寫任何功能性程式碼。然後,你編寫滿足測試的功能性程式碼。接著你編寫下一個測試,然後功能性程式碼,然後測試,依此類推。
這就是本文的全部內容。現在我們已經瞭解了什麼是六邊形架構,並建立了我們的領域模型,下一篇我們將探討如何連線埠和介面卡,使架構能夠開始管理複雜性。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024923/viewspace-3000414/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 六邊形架構架構
- 六邊形架構 Java 實現架構Java
- 六邊形架構入門 - levelup架構
- Java和Spring的六邊形架構 - reflectoringJavaSpring架構
- 為什麼需要六邊形架構?- silkandspinach架構
- 解決DDD核心的複雜性
- 初識“六邊形”架構設計理論架構
- 在 .NET Core 中應用六邊形架構架構
- 六邊形之埠和介面卡架構 - cockburn架構
- Kotlin和SpringBoot開發的六邊形架構應用案例KotlinSpring Boot架構
- 如何從架構角度應對複雜性?架構
- 架構雜談《六》架構
- 複雜人像背景分割解決方案
- 複雜多邊形的三角剖分
- 六邊形架構教程:構建可維護的Web應用程式 - DEV架構Webdev
- 現代化配置管理以解決網路複雜性
- 複雜頁面架構架構
- 大規模 IoT 邊緣容器叢集管理的幾種架構-2-HashiCorp 解決方案 Nomad架構
- 使用六邊形架構解耦技術程式碼與業務邏輯 - Julien Topçu架構解耦
- 阿里雲解決方案架構師,講述分散式架構雲平臺解決方案阿里架構分散式
- 詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- domain-driven-hexagon: 領域驅動六邊形架構學習資料AIGo架構
- srm供應商管理系統架構設計解決方案架構
- formily-面向中後臺場景的複雜解決方案ORM
- 面向複雜場景的高效能表單解決方案
- 解決方案架構、系統架構和企業架構區別架構
- 架構與思維:高併發下冪等性解決方案架構
- 六邊形架構:使用事件驅動的無伺服器實現鬆耦合 - Ellerby架構事件伺服器
- 六邊形架構:使用事件驅動的無伺服器實現松耦合 - Ellerby架構事件伺服器
- Spring Cloud 微服務架構解決方案SpringCloud微服務架構
- 實用的解決方案架構交付成果 - Chiu架構
- 2394 輸出六邊形
- 萬字詳解Oracle架構、原理、程式,學會世間再無複雜架構Oracle架構
- 降低程式碼的圈複雜度——複雜程式碼的解決之道複雜度
- 華為資深架構師:Cloud Native架構一致性問題及解決方案架構Cloud
- 奈飛Netflix如何在資料整合API領域使用六邊形架構與Clean架構切換到微服務架構? - Netflix TechBlogAPI架構微服務
- 解決方案架構師的小錦囊 - 架構圖的 5 種型別架構型別
- 企業架構師、解決方案架構師和技術架構師的異同 - Briqi架構