1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一個(gè)地圖小程序的后端項(xiàng)目

        共 5697字,需瀏覽 12分鐘

         ·

        2023-06-10 04:44

        ?很久沒(méi)寫(xiě)文章了,做這個(gè)項(xiàng)目的目的-利用業(yè)余時(shí)間沉淀技術(shù)經(jīng)驗(yàn),準(zhǔn)備一個(gè)好用的腳手架,同時(shí)嘗試一些在工作中想用但是沒(méi)機(jī)會(huì)用的技術(shù)

        Gi tHub地址: ? https://github.com/mapcoding-cn/preferential-map ( 查看原文,歡迎star)


        技術(shù)方面的簡(jiǎn)單介紹

        在這個(gè)項(xiàng)目使用了DDD分層架構(gòu)提供服務(wù),拆箱即用

        主要組件:Spring boot + mybatis plus + mysql + wechat

        數(shù)據(jù)庫(kù)技術(shù): mysql使用了空間索引 全文索引 JSON類(lèi)型等


        腳手架中踐行的架構(gòu)理念

        領(lǐng)域模型

        bd63e21833452d7d140c23c405f5f5ef.webp

        • app: 項(xiàng)目入口和構(gòu)建,配置文件和資源,不侵入業(yè)務(wù)

        • test: 單元測(cè)試和非正式代碼入口,不打包,不上線(xiàn)[新增]

        • web: 展示層,發(fā)布web接口,處理業(yè)務(wù)無(wú)關(guān)的請(qǐng)求入?yún)⒑彤惓?=controller+VO),不侵入業(yè)務(wù)

        • biz: 應(yīng)用層,for具體應(yīng)用的業(yè)務(wù)邏輯,應(yīng)對(duì)業(yè)務(wù)易變性,避免非核心邏輯污染core層(BO DTO)

          • 業(yè)務(wù)流程編排和集成

          • 入出參轉(zhuǎn)換,接口適配

          • 安全認(rèn)證,權(quán)限控制

          • 切面功能如日志攔截

          • 應(yīng)用級(jí)異常的處理

          • 調(diào)度job入口(不含業(yè)務(wù)邏輯)

          • 消息訂閱入口(不含業(yè)務(wù)邏輯)

          • 流程引擎功能(不含業(yè)務(wù)邏輯)

          • 業(yè)務(wù)報(bào)警功能

          • 業(yè)務(wù)統(tǒng)計(jì)分析功能

          • 其他和業(yè)務(wù)運(yùn)行無(wú)關(guān)的模塊

          • 怎么寫(xiě)應(yīng)用層?有以下幾個(gè)原則,看下是否符合

        • core: 核心領(lǐng)域?qū)?針對(duì)核心業(yè)務(wù)抽象建模,反映基本業(yè)務(wù)現(xiàn)實(shí),需保持一定程度的穩(wěn)定性(BO DTO)

          • 和biz的區(qū)別,只關(guān)心核心業(yè)務(wù)

          • 業(yè)務(wù)無(wú)關(guān)的附著功能剝離到應(yīng)用層實(shí)現(xiàn)

        • infras: 基礎(chǔ)設(shè)施層,封裝項(xiàng)目的基礎(chǔ)能力,工具性的,業(yè)務(wù)無(wú)關(guān)的

          • util:靜態(tài)工具類(lèi),封裝通用工具,如HttpUtils DateUtils.

          • enum 枚舉類(lèi)

          • constant 常量類(lèi)

          • exception 異常類(lèi)

          • annotion 注解類(lèi)

          • model: 公用的bean,各領(lǐng)域?qū)ο蠓诺礁鲗永锩嫒?shí)現(xiàn)

          • config: 全局的工具性配置在放在這里

          • infras-dal:數(shù)據(jù)訪(fǎng)問(wèn)層,封裝數(shù)據(jù)庫(kù) redis等數(shù)據(jù)能力,(=dao層+DO),禁止做任何業(yè)務(wù)加工

          • infras-facade:對(duì)外接口層,定義對(duì)外接口,一般是rpc調(diào)用的二方包

          • infras-integration:對(duì)內(nèi)客戶(hù)端層,對(duì)引用外部服務(wù)進(jìn)行統(tǒng)一封裝,做接口防腐和適配

          • infras-common:

        eg

        開(kāi)發(fā)一個(gè)查詢(xún)接口,對(duì)地理對(duì)象進(jìn)行檢索,基本數(shù)據(jù)模型為點(diǎn)集

        • web: 發(fā)布接口/query,進(jìn)行入?yún)⑿r?yàn) 錯(cuò)誤碼處理 封裝VO,調(diào)用biz層,這是展示層

        • biz: 點(diǎn)和線(xiàn)是不同類(lèi)型要素,Point/Line,調(diào)用core層查詢(xún)并分別處理為Point/Line,這是應(yīng)用層

        • core: 封裝點(diǎn)集查詢(xún)邏輯,調(diào)用dal層,用數(shù)據(jù)庫(kù)或緩存,建立查詢(xún)索引等,這是核心業(yè)務(wù)層

        • infras基礎(chǔ)設(shè)施能力

          • dal: mybatis支持的數(shù)據(jù)訪(fǎng)問(wèn)層,僅做工具性查詢(xún),關(guān)注sql,redis指令等,這是數(shù)據(jù)訪(fǎng)問(wèn)層

          • facade: 對(duì)外接口模型,有業(yè)務(wù)依賴(lài)Rpc服務(wù),這里寫(xiě)接口,交由biz層實(shí)現(xiàn),發(fā)布為二方庫(kù)

          • integration: core查詢(xún)依賴(lài)web服務(wù)做關(guān)聯(lián),這里封裝客戶(hù)端服務(wù),以保持對(duì)內(nèi)服務(wù)的穩(wěn)定

          • common: utils enum constant

        • app:業(yè)務(wù)邏輯開(kāi)發(fā)完成后,在這里打包,發(fā)布

        • test:寫(xiě)單元測(cè)試和非正式代碼,后續(xù)會(huì)要求代碼覆蓋率

        命名規(guī)范

        • app: 只有啟動(dòng)類(lèi)Application

        • test: 除集成類(lèi)測(cè)試,單元測(cè)試類(lèi)命名=原始類(lèi)+Test后綴

        • web: 后綴controller

        • biz: 后綴Manager

        • core: 后綴service

        • dal: 后綴Mapper,實(shí)體類(lèi)DO和數(shù)據(jù)庫(kù)表一一對(duì)應(yīng)

        • facade: 后綴facade

        • integration : 后綴client

        • model: DTO數(shù)據(jù)傳輸性質(zhì)如序列化 BO業(yè)務(wù)封裝對(duì)象最常見(jiàn) VO面向顯示層的屬性輸出

        • util: 后綴utils

        • enum: 后綴enum

        • constant: Property等,不做強(qiáng)制約束,做到見(jiàn)名知意

        • exception: 后綴Exception Error

        開(kāi)發(fā)規(guī)范

        • 業(yè)務(wù)邏輯只發(fā)生在biz層和core層,禁止在其他層里面出現(xiàn)任何業(yè)務(wù)邏輯

        • 各模塊內(nèi)保持單一職責(zé),按照業(yè)務(wù)或職責(zé)劃分package

        • 禁止在業(yè)務(wù)中直接引用外部服務(wù),必須在integration中處理成client,并處理異常情況

        • 禁止core依賴(lài)biz層,web依賴(lài)dal層

        • 禁止更改各個(gè)model的原始依賴(lài)順序,如發(fā)現(xiàn)無(wú)法引用,請(qǐng)考慮依賴(lài)的合理性

        • 請(qǐng)保持dal層sql或指令的簡(jiǎn)潔性,不推薦寫(xiě)復(fù)雜sql或在sql中實(shí)現(xiàn)業(yè)務(wù)邏輯,要短平快

        • 統(tǒng)一在父pom里面處理依賴(lài)

        • 常量類(lèi)使用接口或者枚舉

        日志規(guī)范

        • 日志分級(jí),error/other,分別輸出到不同文件

        • 禁止error到處飛,線(xiàn)上新增error日志必須高度敏感,做好監(jiān)控

        • 系統(tǒng)的入口和出口,以及關(guān)鍵位置必須有日志輸出,不要怕日志打的多

        • 線(xiàn)上禁止輸出debug

        • 輸出日志需帶trace信息

        異常規(guī)范

        • 內(nèi)部異常類(lèi)統(tǒng)一繼承自UnimapException,對(duì)可感知業(yè)務(wù)異常進(jìn)行封裝

        • 異常根據(jù)嚴(yán)重程度分級(jí) ERROR WARNING,其中ERROR會(huì)攔截輸出到error日志中

        • 對(duì)外異常進(jìn)行分類(lèi),定義錯(cuò)誤碼體系

        • 建議將受檢異常轉(zhuǎn)為非受檢異常

        Git規(guī)范

        • 主分支 master 主分支的合并應(yīng)該在預(yù)發(fā)通過(guò)后,禁止直接提交master

        • 功能分支 feature-*-#version 開(kāi)發(fā)分支,在開(kāi)發(fā)階段使用,禁止提交不可編譯運(yùn)行的代碼

        • 發(fā)布版本 release-*-#version 測(cè)試和預(yù)發(fā)分支,提交QA的相對(duì)穩(wěn)定版本

        • 緊急修復(fù)分支 bugfix-*-#version 緊急修復(fù)線(xiàn)上bug

        • 如無(wú)明確的版本計(jì)劃,version建議為上線(xiàn)的日期

        • 編碼為utf8,換行符為\r LF,禁止Tab

        URL規(guī)范

        • 全部小寫(xiě),單詞間用-中劃線(xiàn)分割

        • 讀請(qǐng)求為get,寫(xiě)請(qǐng)求為post

        • 對(duì)外進(jìn)行Response統(tǒng)一封裝

        • 建議rest風(fēng)格,參數(shù)小于等于3個(gè)



        瀏覽 38
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费无码a在线观看视频区 | 激情 小说 亚洲 图片 伦 | 在线观看AA | 国模张雪馨私拍一二三在线 | 亚洲欧美性爱视频在线观看 | 乱伦AV网| 弄逼视频 | 美国一级片在线 | 五月激情啪啪 | 欧美综合社区 |