六邊形架構-微服務基石


六邊形架構(Hexagonal Architecture):目的是將輸入輸出放到設計的邊緣.應用獨立化,業務邏輯不依賴暴露rest或graphql api,數據來源可以是具體的數據庫,外部微服務api,甚至一個文件.

主要是為了解決面向對象開發中,由於分層造成業務邏輯在不同層間耦合的問題.這個模式允許應用核心邏輯隔離外部系統.以實現核心邏輯修改不影響外部服務.

實際架構是以業務邏輯為核心,外層是數據源和傳輸層.

六邊形架構

業務邏輯三個核心概念:

實體(Entities):是域對象(domain objects).不關心實際存儲.

庫(Repositories):負責與數據源交互和進行實體操作的接口.

交互器(Interactors):負責規划和執行域行為.可看作服務對象或用戶實例對象.用於實現復雜的業務規則和校驗域行為具體邏輯.

通過上面三個核心概念,定義業務邏輯時就不需要關心任何數據存儲和業務邏輯觸發的問題.因為具體存儲使用實現存儲接口的存儲源;業務邏輯觸發是外部服務主動請求.

業務邏輯之外是數據源(Data Sources)和傳輸層(Transport Layer):

數據源:適配不同的存儲實現.實現業務邏輯和數據實現解耦

傳輸層:觸發交互器去執行業務邏輯.將其看作業務系統的輸入.常用的傳輸層是http api層和一系列處理請求的控制器.通過抽取業務邏輯到交互器,解耦特定傳輸層或控制器實現.交互器被觸發不僅可以通過控制器,還可以是時間,定時任務,命令行等;

傳統的層級架構,是上層直接依賴下層.而六邊形架構中所有依賴全部在內部,核心業務邏輯不關心實際的傳輸層和數據源.但是,傳輸層知道如何使用交互器,數據源知道如何遵守庫接口.

由於數據源和業務邏輯解耦,我們只要實現庫接口定義,就能輕易的變更數據源實現.

數據源切換

參考資料:
Ready for changes with Hexagonal Architecture


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM