NetCore3.1开发后台管理系统框架思路与实现

前言

在去年完成基于ASP.NET MVC的后台管理系统后,刚好进入NetCore大面积被关注时期,同时对于框架的细节,页面美观度等方面还有很大的提升空间,所以决定基于NetCore3.1重构一版进行查漏补缺

项目地址:https://gitee.com/code2roc/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号就工作整整五年了,回顾一路走来没有特别大的波澜与突破,作为一个普通人能做的也只是脚踏实地,每天进步学习一点点,相信终有收获。

大鹏一日同风起,扶摇直上九万里,加油!

 

posted @ 2021-04-11 16:48  code2roc  阅读(1556)  评论(2编辑  收藏  举报