ApiTemplate後端項目開發模板,發佈也有一段時間了。為了補充應用場景,以及詳細說明本人總結的一些開發經驗,現已常見的《用戶/登錄許可權驗證》功能模塊來進行詳細的講解。我會以為開發此模擬的實現路徑為主線進行說明,希望能幫助到某些開發朋友。一、模塊分解模塊分析是按照《C4-架構圖》理念做的,主要分 ...
ApiTemplate後端項目開發模板,發佈也有一段時間了。為了補充應用場景,以及詳細說明本人總結的一些開發經驗,現已常見的《用戶/登錄許可權驗證》功能模塊來進行詳細的講解。我會以為開發此模擬的實現路徑為主線進行說明,希望能幫助到某些開發朋友。
一、模塊分解
模塊分析是按照《C4-架構圖》理念做的,主要分為
1. 系統上下文:顯示當前構建的系統與現有系統的依賴關係,從巨集觀視角看
2. 容器:將當前構建的系統放大,顯示出系統的 應用程式、數據存儲、微服務等信息
3. 組件:放大單個《容器》後,顯示其容器內部的組件列表、及關係。
4. 代碼:放大單個《組件》後,顯示其實現細節
註意:
1. 更正說明:上圖中的《容器》應該改為《組件》,根據《C4-架構圖》的定義,使用《組件》更貼切,因為想表達的是《登錄/許可權》模擬的子組件列表
2. 登錄驗證/線上用戶管理:此兩個組件為業務核心組件,設計與實現時要重點考慮
3. 獲取用戶/獲取資源/角色:此兩個組件主要從第三方系統獲取數據,要考慮使用工廠模式進行策略切換。
二、核心代碼
1. 上圖表示IOnlineUserMgr介面的實現類應有的依賴,IOnlineUserMgr規範《線上用戶管理》,包含添加線上用戶、自動移除超時過期的用戶等。
2. IReadAuthRepository/IRoleAndResDepend:規範對用戶、資源、角色的依賴。對應《獲取用戶》、《獲取資源/角色》組件
3. ITokenRepository:登錄用戶持久化,相當於用戶登錄記錄
4. IUserEntity:用戶實例規範,對應《登錄驗證》,提供資源、許可權驗證等相關介面
5. IUserEntiy和IOnlineUserMgr的介面實現在領域實現層(BAccurate.Implement項目)中,這樣便從結構上對 業務領域組件 和 其他依賴組件進行瞭解耦。
6. 具體的代碼實現可以移步至github地址,代碼太多不方便博客文章展示
三、視頻分享
B站視頻介紹:https://www.bilibili.com/video/BV1Rz4y1Q7XY/,有興趣小伙伴可以觀看喲。
四、經驗總結
1. 通過《C4-架構圖》對系統從巨集觀->微觀的逐步細化
2. 業務領域組件應該要高內聚
3. 對依賴組件要低耦合
4. 不急著進行資料庫設計,先梳理好業務領域組件之間關係,以及核心業務實現。
5. 資料庫存儲實體與領域實體強分隔,這樣更能做好業務變更與升級。