最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

我敢打賭,這個架構你一定知道!

2023-11-10 18:25 作者:程序員魚皮  | 我要投稿

大家好,我是魚皮。開發(fā)后端項目時,我們最常見的一種架構模式就是 分層架構 。

所謂的分層架構,就是把系統(tǒng)自上而下分為多個不同的層,每一層都有特定的功能和職責,且只和自己的直接上層與直接下層 “打交道”。

分層架構的優(yōu)點是:每一層都有明確定義的職責,易于理解和維護;而且各層可以獨立擴展,以適應不同的需求。

所以分層架構也是最適合新手入門學習、并且實際開發(fā)中應用最多的架構。

分層架構

下面給大家一種 Java 企業(yè)級后端項目開發(fā)時常用的分層架構,一般從前端界面(表示層)發(fā)送的請求出發(fā),需要經歷接入層、控制層、業(yè)務邏輯層、通用業(yè)務層、數(shù)據(jù)訪問層、系統(tǒng)資源層等。

表示層 通常是指讓用戶交互和查看信息的前端界面,比如用戶點擊按鈕后能夠發(fā)送一個請求,也可以叫用戶層、界面層等。

發(fā)送請求后,會經過 接入層 ,比如 Nginx 網關、或者其他中間件,對請求做一個預處理或轉發(fā),比如實現(xiàn)負載均衡。這一層不是必須存在的,通常更適用于中大型項目,前端也可以直接請求后端。

接入層會將請求轉發(fā)到 控制層(Controller),負責接受請求、調用業(yè)務邏輯層(Service)的代碼實現(xiàn)功能、然后響應結果??刂茖右话悴唤ㄗh寫復雜的業(yè)務邏輯,盡量保持精簡。

接下來是 業(yè)務邏輯層(Service),負責處理復雜的業(yè)務邏輯,比如對請求數(shù)據(jù)進行校驗、處理、調用數(shù)據(jù)訪問層以將結果存到數(shù)據(jù)庫中等,也是我們做系統(tǒng)時主要開發(fā)編碼的部分。

通用業(yè)務層(Manager、Module)是一種特殊的業(yè)務邏輯層,主要的作用是抽取了一些需要被多個業(yè)務調用的公共代碼,比如上傳文件到對象存儲、鑒權等,從而實現(xiàn)復用。

數(shù)據(jù)訪問層(Dao / Mapper)負責操作底層的數(shù)據(jù)源,比如對數(shù)據(jù)庫、文件、緩存等進行增刪改查。

最后是 系統(tǒng)資源層 ,也可以叫基礎設施層,包括各種基礎服務、系統(tǒng)環(huán)境等,比如數(shù)據(jù)庫、消息隊列、Redis、文件存儲、Linux 系統(tǒng)、Docker 等。復雜的基礎設施可能還包括 K8S 容器資源編排、資源調度平臺等。

需要注意的是,并不是所有的分層架構都需要這么劃分,不同業(yè)務和團隊可能有自己的分層選擇與規(guī)范。

比如我?guī)Т蠹议_發(fā)的 OJ 在線判題系統(tǒng) ,分層架構如下:

示例項目結構

基于分層架構,我們可以將項目按照特定的目錄名(包名)來組織代碼,比如:

  • controller:控制層

  • service:業(yè)務邏輯層

  • mapper:數(shù)據(jù)訪問層

  • model:數(shù)據(jù)模型

還可以按照業(yè)務或文件的類型來劃分目錄,比如:

  • constant:常量

  • annotation:注解類

  • common:公共類

  • config:配置類

  • job:任務

  • exception:異常處理相關

  • utils:工具類

以之前帶大家做過的 尋愛網項目 為例,項目的目錄結構如圖:

其他知識

1)計算機網絡也是采用了經典的分層架構,OSI 七層參考模型中,把計算機網絡自底向上分為了物理層、數(shù)據(jù)鏈路層、網絡層、傳輸層、會話層、表示層和應用層。每個層只處理特定的功能,比如數(shù)據(jù)傳輸、數(shù)據(jù)的路由;層與層之間通過接口(或者叫協(xié)議)進行通信。

2)需要注意的是,我們常用的后端開發(fā)框架 Spring MVC 是基于 MVC(Model-View-Controller)設計模式構建的,而不能算是傳統(tǒng)的分層架構。而且一般現(xiàn)在的項目中只使用 Spring MVC 作為整個項目的控制層,不過大多數(shù)用了 Spring MVC 框架的項目基本都使用了分層架構。

實踐

想了解更多常見的后端架構設計,推薦閱讀這篇文章:架構設計,讓網站支棱起來!

編程導航星球的所有后端項目基本都使用了經典分層架構,隨便實踐一個項目都能學會這種架構方式。

???? 編程導航原創(chuàng)項目教程系列:https://yuyuanweb.feishu.cn/wiki/SePYwTc9tipQiCktw7Uc7kujnCd


我敢打賭,這個架構你一定知道!的評論 (共 條)

分享到微博請遵守國家法律
文山县| 泰兴市| 交口县| 长春市| 昂仁县| 麻阳| 灵石县| 南昌县| 保康县| 治多县| 新绛县| 孝义市| 都匀市| 浮梁县| 沿河| 乌鲁木齐县| 肇州县| 林西县| 武功县| 寿光市| 伊川县| 翁牛特旗| 岱山县| 循化| 丽水市| 克拉玛依市| 紫阳县| 莲花县| 凤凰县| 贵阳市| 南丰县| 仁寿县| 固原市| 宣城市| 大厂| 斗六市| 射洪县| 新竹县| 玉树县| 莱州市| 曲松县|