ddd架构 无法重构_漫谈分层架构:为什么要进行架构分层?
為什么要分層
- 高內聚:分層的設計可以簡化系統設計,讓不同的層專注做某一模塊的事
- 低耦合:層與層之間通過接口或API來交互,依賴方不用知道被依賴方的細節
- 復用:分層之后可以做到很高的復用
- 擴展性:分層架構可以讓我們更容易做橫向擴展
如果系統沒有分層,當業務規模增加或流量增大時我們只能針對整體系統來做擴展。分層之后可以很方便的把一些模塊抽離出來,獨立成一個系統。
2、傳統MVC架構
優點:關注前后端分離
缺點:模型層分層太粗,融合了數據處理、業務處理等所有的功能。核心的復雜業務邏輯都放到模型層,導致模型層很亂
適應場景:后端業務邏輯簡單的服務,比如接口直接提供對數據庫增刪改查
3、后端三層架構
定義:
優點:邏輯與數據層分離
缺點:模型層分層比較粗,核心的復雜業務邏輯都放到模型層,導致模型層很亂
適應場景:后端業務邏輯簡單的服務,比如接口直接提供對數據庫增刪改查
4、阿里分層架構
架構來源:參照參照阿里發布的《阿里巴巴 Java 開發手冊 v1.4.0(詳盡版)》,將原先的三層架構細化而來
特點:添加了Manager 通用業務處理層。
這一層有兩個作用,一、可以將原先 Service 層的一些通用能力下沉到這一層,比如與緩存和存儲交互策略,中間件的接入;二、也可以在這一層封裝對第三方接口的調用,比如調用支付服務,調用審核服務等RPC接口。
優點:相比于三層方式,添加了通用處理層對接外部平臺。 上下游對接劃分的比較清晰
缺點:核心業務邏輯層沒有劃分
適應場景:業務邏輯不復雜的常用業務
5、DDD分層架構
(1)特點
優點:相比于三層方式,更關注領域服務,即業務核心邏輯的劃分、收斂
缺點:分層復雜, 如果業務邏輯簡單沒有必要
適應場景:業務復雜的業務
(2)和傳統三層架構的對比
DDD四層架構也基于傳統三層架構的,不同點有以下幾方面:
6、整潔架構和六邊形架構
整潔架構和六邊形架構都是DDD架構的一種方式,只不過是視角不同。
(1)整潔架構
特點:整潔架構的層就像洋蔥片一樣,它體現了分層的設計思想
整潔架構最主要的原則是依賴原則,它定義了各層的依賴關系,越往里依賴越低,代碼級別越高,越是核心能力。外圓代碼依賴只能指向內圓,內圓不需要知道外圓的任何情況。
(2)六邊形架構
六邊形架構又名“端口適配器架構”。追溯微服務架構的淵源,一般都會涉及到六邊形架構。
六邊形架構的核心理念是:應用是通過端口與外部進行交互的。我想這也是微服務架構下API網關盛行的主要原因吧。
也就是說,在下圖的六邊形架構中,紅圈內的核心業務邏輯(應用程序和領域模型)與外部資源(包括APP、Web應用以及數據庫資源等)完全隔離,僅通過適配器進行交互。它解決了業務邏輯與用戶界面的代碼交錯問題,很好地實現了前后端分離。六邊形架構各層的依賴關系與整潔架構一樣,都是由外向內依賴。
7、匯總
本文匯總了傳統MVC架構、后端三層架構、阿里分層架構、DDD架構以及基于DDD架構的整潔架構和六邊形架構。從前往后越來越復雜,其他也對應著軟件工程的越來越復雜,架構模式也變的越來越復雜。軟件架構領域沒有一招鮮吃遍天的功法,針對的不同的業務場景采用不同的架構,并且隨著業務的發展,不斷調整架構以適應業務的發展,以變(架構、技術組件、重構等)應不變(業務發展、用戶體驗、穩定性等)才是一個合格的軟件工程師應追求的境界。
原文鏈接:https://juejin.cn/post/6907828643062513671
如果覺得本文對你有幫助,可以轉發關注支持一下
總結
以上是生活随笔為你收集整理的ddd架构 无法重构_漫谈分层架构:为什么要进行架构分层?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell脚本读取csv_shell s
- 下一篇: hadoop本地模式部署_hadoop启