.NET 8.0 快速开发框架 简单高效

781 阅读4分钟

前言

为什么近年来开发框架层出不穷?尽管已有许多优秀的快速开发框架,如 ABP 和其他类似的框架,但是作为一名开发者,我们常需遵循公司的技术选型。即使 ABP 提供了丰富的功能,但如果公司不支持,我们也无法使用。

ABP 类的框架确实有其独特魅力:约定优于配置、快捷 API、一键生成等功能让人感觉瞬间高大上。

记得一位擅长 ABP 的新同事,被安排开发一个简单的文件上传模块,结果花了两周时间才完成,期间不断查阅文档,甚至对 ASP.NET Core 感到陌生。我们意识到,使用熟悉的框架是多么重要。

项目介绍

一个基于.NET 8 和 Entity Framework Core 的快速开发框架,支持多控制器模块、总线事件处理、多数据库连接、多模块开发方式,并具备自动任务注册与发现功能,还内置了代码生成器,力求实现简约高效的设计理念。

项目特点

基于 .NET 8,尽可能减少框架特性,但要足够便捷,例如实现自动依赖注入。

尽量减少对第三方库的依赖,但要便于后期添加所需的第三方库。

包含基本的权限管理和身份验证功能,以减少重复工作。

实现一套 CRUD 功能,使常见操作得以快速生成,并支持通过代码生成器创建这些组件。

提供一套后台管理前端界面,包括登录页和系统管理页面。

集成一些实用工具,以辅助部署或生成项目。

项目规划

框架提供一个简洁高效的开发环境,实现快速开发的同时,保证系统的灵活性和扩展性。

通过支持多数据库、多项目模块以及强大的鉴权机制,使得开发过程更加便捷,同时也方便后期维护和扩展。

日志库:NLog

Redis 客户端:StackExchange.Redis

JSON 库:Newtonsoft.Json

轻量级数据库:LiteDB(用于应用存储)

事件分发库:MediatR

ORM 框架:Entity Framework Core

定时任务库:FluentScheduler

模板生成器引擎:Razor

服务启动工具:winSW

架构设计

多Controller项目模块:支持各自API模块使用独立项目。例如,AdminController 可以作为一个独立项目,其他业务模块也可以各自拥有独立项目。

多数据库支持:允许不同业务范围使用不同的数据库。例如,系统管理模块可以使用 MSSQL DB1,而业务模块可以使用 MySQL DB2。

功能模块

鉴权模块:使用 JWT 进行鉴权标识,后端实现一套功能点权限管理体系,支持对任何需要权限控制的 API 进行权限控制,并可灵活分配给不同角色或用户。

工具集成

代码生成工具:利用 Razor 引擎自动生成 CRUD 相关代码。

部署辅助工具:使用 winSW 搭建服务启动模块,简化部署流程。

项目结构

Simple Framework 项目结构说明,具体如下图所示:

基础库Simple.Core

包含帮助类,用于简化开发工作。

示例:帮助类、工具方法等。

Web项目扩展库Simple.Core.Web

SimpleModule:应用模块基类,便于分模块开发。

自动注入:自动扫描并注入标记了特定属性的类。

AppAuthController:鉴权基类控制器。

AppCurdController:CRUD操作基类控制器。

AppDomainEventDispatcher:应用事件分发管理。

SimpleHost:一键启动默认配置好的 Web 控制台主机。

JWT 相关类:处理 JWT 认证和授权。

异常处理类:处理应用程序中的异常情况。

HostServiceExtension:服务注册、模块注册等扩展方法。

EFCore 扩展库Simple.EntityFrameworkCore

AppDbContext:继承自DbContext 的基类。

BaseCurdService:CRUD操作实现类。

EFLoggerFactory:EF Core 日志记录工厂。

代码生成器Simple.Generator

基于 RazorLight 模板引擎的代码生成工具。

定时任务Simple.Job

基于 FluentScheduler 的定时任务框架,支持任务自动注册和配置。

Admin 和 Common 模块

支持自动注入、定时任务、数据库初始化、领域事件处理等功能。

可在控制台或 WebAPI 应用中使用构造函数注入。

WebHost 和 控制台主机项目

支持快速启动 Web 或控制台应用程序。

AOT 快速部署服务 Simple.RunService

提供 AOT 编译,支持快速部署服务,无需安装额外环境。

前端页面适配

基于 Vue.js 2 和 Element UI 的前端页面实现,包括登录、菜单管理、角色授权等功能。

注意事项

配置文件隔离:开发环境与生产环境的配置文件应分开管理。

项目地址

Gitee:gitee.com/VCodeWork/s…

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!