什麼是六角形架構? -octo
Hexagonal Architecture(六角形或六邊形) 於2005年由 Alistair Cockburn撰寫 ,是一個具有許多優勢的軟體架構,自2015年以來又重新引起了人們的興趣。
六邊架構的初衷是:
允許應用程式同樣由使用者,程式,自動化測試或批處理指令碼驅動,並與最終的執行時裝置和資料庫隔離開發和測試。
六角形架構允許隔離應用程式的核心業務,並自動測試其行為,而不依賴於其他任何事情。這可能是該架構引起域驅動設計(DDD)從業者關注的原因。但要小心,DDD和六邊形結構是兩個相當不同的概念,它們可以相互加強,但不一定一起使用。
最後,這種架構設定起來並不複雜。它基於一些簡單的規則和原則。讓我們探索這些原則,看看它們在實踐中的含義。
六角架構原理
六邊形體系結構基於三個原則和技術:
- 明確區分應用程式,領域和基礎結構三個層
- 依賴關係是從應用程式和基礎結構再到領域
- 我們使用埠和介面卡隔離它們的邊界
1. 原則:獨立的應用程式,域和基礎結構三個層
第一個原則是明確地將程式碼分成三個大層。
左側Application是應用程式端
這是 使用者 或外部程式 與應用 程式 互動 的一面。它包含允許這些互動的程式碼。通常,您的使用者介面程式碼,API的HTTP路由,以及使用您的應用程式的程式的JSON序列化都在這裡。(banq注:Spring Boot的控制器)
這裡也是Actor角色 驅動領域所在 。注意:Alistair Cockburn談的是應用程式方面的左側或使用者側。
領域層Domain中心位置
通過領域層隔離左側和右側。它包含所有關注和實現業務邏輯的程式碼。業務詞彙和純粹的 業務邏輯。
右側基礎設施層
在這裡,我們可以找到您的應用程式需要什麼,它驅動哪些元件進行工作。它包含必要的基礎結構詳細資訊,例如與資料庫互動的程式碼,呼叫檔案系統或處理對您所依賴的其他應用程式的HTTP呼叫的程式碼(整合)。
以下原則將實現在 應用程式 , 域 和 基礎結構 之間實現邏輯分層。
這種分離的第一個重要特徵是它將 問題分開 。在任何時候,您都可以選擇專注於某個邏輯,幾乎獨立於其他兩個邏輯:應用程式的邏輯,業務的邏輯或基礎架構的邏輯。它們在不混合的情況下更容易理解,並且每個邏輯的約束對其他邏輯的影響較小。
另一個特點是我們 將業務邏輯放在程式碼的最前端 。它可以在目錄或模組中隔離,以使其對所有開發人員都明確。它可以在不承擔程式其餘部分的認知負荷的情況下進行定義,改進和測試。這很重要,因為最終,開發人員對生產中的業務有了解。
相關參考:架構整潔之道