前言
在去年完成基于ASP.NET MVC的后臺管理系統后,剛好進入NetCore大面積被關注時期,同時對于框架的細節,頁面美觀度等方面還有很大的提升空間,所以決定基于NetCore3.1重構一版進行查漏補缺
專案地址:https://gitee.com/grassprogramming/FastExecutorCore
概述
先列舉一下框架中前后端設計包含的功能,如下圖所示

?

?
上述是我從已經完成的框架中整理挑選出來認為比較通用、常用的部分,單獨一部分拿出來都是有很多功能點進行細化的,后續會大致梳理一下如何從零開發一個框架的思路
技術選型
技術選型對于框架后續開發使用的順手程度與擴展方便性都有很大的影響,我這里ORM與IOC都是選擇手動實作的,因為這是一個個人學習框架,我會將自己的之前積累的一些輪子盡量改造優化之后進行實踐應用,了解到更多不足之處,一般選擇第三方組件時的原則就是簡單,簡單,還是簡單,能夠快速上手,并且有自己結合業務封裝的空間,才能提高框架的擴展性,鑒權與快取我選擇了使用Redis存盤搭配StackExchange連接庫,Redis支持多種資料結構能夠靈活配合我們框架的實作思路,前端部分我選擇了jquery+zui組件庫進行開發,之前版本使用過vue+elementui本地化html的方式進行開發,在資料渲染及動態聯動計算方面vue確實很方便,但我開發的后臺管理系統的一個原則就是簡單,所以并不會進行前后端分離部署(代碼是分離的),一定程度上會浪費單頁應用的特性,并且jquery在各種效果與三方組件庫方面還是非常完善與強大的,基本遇到的問題能夠有快速的解決方案,何樂而不為呢,
實作思路
完成一個表的增刪改查
選擇一張簡單的表,我選擇的是系統引數,沒有任何業務關聯,且可以包含字符,日期,數字等常用欄位型別,可以掌握ORM的基本CRUD,介面接收傳遞引數形式,路由的個性化跳轉等
Table組件/Form表單/模態視窗的使用
完成介面部分,我們需要將介面對接到具體頁面,需要熟練掌握Table組件的資料系結,自定義模板列,配合分頁組件使用方式,模態視窗的打開/關閉/傳遞引數/回呼/不同型別提示框的使用,Form表單的賦值與提交引數歸并整合提交
前端Ajax請求與js/css版本的統一控制
完成一個表的功能后,我們需要對Ajax請求進行封裝,控制請求的統一出處,便于后續對接身份鑒權(請求統一攜帶Token),針對前端快取問題,我們可以對頁面加載的js/css檔案進行統一處理,加入版本號控制,避免后期發現問題到處改
統一介面回傳與引數獲取
進行框架開發比較重要的就是制定規范,規定好資料回傳的統一格式有利于后續框架業務功能的頁面快速批量生成修改,針對前端提交的資料后端介面需要統一處理,例如要支持json/form/url引數/檔案的接收
DB層基類定義
針對不同表的增刪改查需要進行泛型基類的定義,這樣我們能夠快速生成一個表的DB操作模板再根據具體需求去進行修改或者業務組合,且有利于進行快取DB基類的擴展與統一操作
多個表組合業務功能模塊開發
例如和可以進行部門-人員這兩個表的開發,可以對后端介面業務組合操作的一個模式進行規范確定,上手ORM的事務使用,Form表單能夠使用更多的UI組件,對前期沒有考慮的方面進行補充優化
前端組件封裝與二次開發
針對樹組件/上傳附件組件/富文本組件/數字輸入框組件一般來說對于具體業務功能或者展現樣式都或多或少有些缺陷,需要我們針對框架需求進行個性化修改,例如富文本我們需要對字體設定型別進行重新整理,對接附件介面實作圖片上傳等
身份鑒權
在完成了幾個業務功能后,我們可以進行登陸/登出/鑒權/Token存盤/Token認證/匿名訪問/攔截器等功能的開發實作
業務堆疊
上述就是開發框架前期的一個基本思路,相當于完成了百分之五十,為后續的開發模式打下良好的基礎,我們只要往上堆功能即可,例如登陸驗證碼/代碼自動生成/日志管理/定時任務等
框架介紹
本次開發的后臺管理框架主要核心功能及特點包含以下幾塊
1.組織架構:包括部門/人員/角色/模塊及RBAC權限管理,引入兼職模塊,人員可以兼職不同部門/人員
2.資料平臺:統一管理表結構/代碼項,提供表CRUD及頁面代碼的快速生成/匯入匯出遷移功能
3.擴展組件:集成定時任務及主頁訊息元件的動態渲染
4.支持附件的多庫存盤,多種策略存盤
5.系統大部分功能都通過可視化界面操作,降低配置難度
6.內置資料表的快取模板類,繼承基類后一鍵支持快取,且與事務操作結合優化,保證資料與快取的強一致性
7.實作框架與業務專案代碼分離,專案代碼以插件化形式掛載在框架的發布包中,支持熱更新
系統概略圖如下:
?
總結
在開發框架程序中遇到很多難題,但是隨著問題的逐步解決,會對某些平常作業中接觸不到的知識領域有更多的了解,踩過的坑會被牢記,會養成良好的規劃習慣,訂好了規范,打好了基礎,才能穩步前進,說是開發一個框架不如說是對于自己所掌握技能的一個整理與總結,形成自己的一套做事/開發的方法論,同時去豐富自己的一些理論知識,把那些只知道如何實作的功能去形象專業的表述出來,技術人員需要的不僅僅是技術,后續會在此框架基礎上使用SpringBoot進行Java版本的開發與優化,加入作業流,訊息通信等模塊,到今年的7.1號就作業整整五年了,回顧一路走來沒有特別大的波瀾與突破,作為一個普通人能做的也只是腳踏實地,每天進步學習一點點,相信終有識訓,
大鵬一日同風起,扶搖直上九萬里,加油!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/274962.html
標籤:.NET技术
