前言
基于.NET 8.0 的 NetCoreFast 代码生成器,节省90%的时间。
本文将详细介绍如何利用.NET 脚手架工具来实现前后端分离的应用开发。
项目介绍
基于 EF Core 的 Code First 模式,本框架支持代码自动生成,帮助我们迅速搭建前后端分离的.NET应用程序,并且支持多租户系统开发。
致力于提供极简设计,避免不必要的复杂性,确保 .NET 8.0 版本为大家带来极致的开发体验。
强烈推荐使用 CodeGen 代码生成器来初始化项目,以便充分利用框架的自动化功能,加快开发速度。
开发环境
-
集成开发环境 (IDE) :Visual Studio 2022
-
运行时平台:.NET 8.0
-
缓存服务:Redis 5.0.14
-
支持的数据库
SQL Server
MySQL 8.0 及以上版本
SQLite
PostgreSQL
项目架构
1、基础框架
ASP.NET Core 8.0 + EF Core 8.0(采用 Code First 模式)
2、数据交互
Newtonsoft.Json 用于序列化
AutoMapper 用于对象映射
3、安全与认证
JWT + IdentityModel 提供权限控制
4、依赖管理
Autofac 用于依赖注入
5、API 文档
Swagger + Swashbuckle.AspNetCore.ReDoc 自动生成 API 文档
6、缓存机制
StackExchange.Redis / csRedis
7、任务调度
Quartz 定时任务调度
8、文档操作
DotNetCore.NPOI 支持 Word/Excel 处理
9、日志记录
NLog 日志管理系统
10、文本处理
hyjiacan.py4n 汉字转拼音功能
11、图像处理
SkiaSharp 跨平台 2D 图像处理 API
SkiaSharp.QrCode 跨平台二维码生成器
12、模板引擎
Mustachio 用于代码生成
13、批量操作
Zack.EFCore.Batch 高性能批量数据库操作
14、查询工具
System.Linq.Dynamic.Core 动态 LINQ 查询工具
15、其他工具
ChakraCore.NET JavaScript 引擎集成
配套前端
1、后台管理前端解决方案
2、移动端/微信端(uniapp解决方案)
项目使用
安装必备软件
1、Git客户端
下载并安装 TortoiseGit 客户端,并使用码云账户登录。
本项目托管在码云,需要使用 Git 下载 NetCoreFast 项目。
如果计划使用 CodeGen.exe 进行项目初始化或更新,请确保已安装 Git 客户端并能登录码云。
2、安装 Redis
安装 Redis 并配置服务,因为项目中的即时聊天和缓存功能依赖于 Redis。
3、代码生成器
下载并解压 CodeGen.zip:
下载 CodeGen.zip 文件并解压缩。
初始项目
创建项目文件夹:新建项目文件夹,如 D:\project\CMS,其中 CMS 是项目名称。
初始化 CodeGen:将解压后的 CodeGen.exe 文件复制到 CMS 文件夹并运行。
1、生成NetCoreFast Api接口项目
输入 "1",选择 "NetCoreFast Api接口项目生成"。
输入 "1",选择 "初始项目"。此过程会从码云下载原始项目并重命名为 CMSApi。
用 VS 打开 CMSApi 项目,在 Model 层添加实体类,并重新生成项目。
输入 "2",选择 "生成代码",自动生成 BLL 和 Controller 类。
输入 "3",选择 "删除生成的代码"(可选)。
输入 "4",选择 "升级项目"(可选)。
2、生成Elementplus-admin-codegen后台前端管理界面项目
输入 "2",选择 "Elementplus-admin-codegen 后台前端管理界面项目生成"。
输入 "1",选择 "初始项目"。此过程会从码云下载原始项目并重命名为 CMSUI。
输入 "4",选择 "升级项目"(可选),以获取最新代码。
快速开发
1、修改数据库连接字符串
在appsettings.Development.json(调试环境配置文件) 或 appsettings.Production.json(生产环境)配置文件。
2、编写Model实体类
在Model\Entity文件夹添加子模块目录,比如Model\Entity\Cms,在Model\Entity\Cms添加model实体类。
3、运行代码生成器,生成代码
本脚手架高度封装,代码写法统一规范,多数代码相似,因此可以一键生成增、删、改、查操作的代码。
大部分逻辑自动生成,仅需少量手写逻辑。若无特殊需求,数据访问层(DAL)无需额外编写。
4、数据迁移
在 Visual Studio 2022 中 依次点击 工具 > NuGet 包管理器 > 程序包管理器控制台。
选择默认项目(Model)。
输入命令 Add-Migration 数据库版本名,例如:Add-Migration cms1。
回车确认执行。
5、重新生成项目,运行Web项目
查看数据库表是否生成,浏览器访问。
项目说明
1、自动生成类代码扩展
如果类代码是自动生成的,向类里增加方法,重新自动生成,会将增加的方法删除,需要一种机制将我们扩展的代码和自动生成的代码合并。
框架有两个扩展合并点,即BLL.Etc目录扩展点和Web.Controllers.Etc目录扩展点。
2、权限控制
有两种权限控制方案
基于角色-权限-资源的权限控制(较细粒度)
基于角色策略的权限控制(粗粒度)
3、登录与请求、获取用户信息
请求需要授权才能访问的操作方法(加[Authorize]或[Authority]注解的方法)需要在header携带token,如访问获取用户信息的操作方法GetUserinfo
4、查询过滤器
查询过滤器Web.Filter.QueryFilterAttribute主要用于给添加修改、查询删除操作方法设置条件。
5、定时器任务Quartz
定时器帮助类Web.Util.QuartzHelper.cs。有两种定时器用法:作为服务使用定时器、非服务使用定时器
6、Excel导入与导出
office帮助类Web.Util.OfficeHelper.cs。主要功能有导入与导出Excel
7、Websocket使用
websocket涉及类库ImCore、控制器类Web.Controllers.WebSocketController、配置文件 主要参考了ImCor
8、升级项目
建议不要更改本框架相关类,可以编写自己单独的类,方便升级。
项目地址
Gitee:gitee.com/qinyongchen…
最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。
也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!