第一章-Admin.NET框架概述与入门指南
第一章:Admin.NET框架概述与入门指南
目录
1. Admin.NET简介
1.1 什么是Admin.NET
Admin.NET是一款基于.NET6(现已支持.NET8)开发的通用权限开发框架,采用前后端分离架构模式。后端基于Furion框架和SqlSugar ORM实现,前端采用Vue3 + Element-plus + Vite5技术栈。该框架整合了众多优秀的开源技术和组件,采用模块插件式开发模式,能够快速搭建企业级应用系统。
Admin.NET的核心理念是"站在巨人肩膀上",通过整合业界最优秀的开源框架和组件,为开发者提供一个开箱即用的通用权限管理系统。无论是简单的后台管理系统,还是复杂的企业级应用,Admin.NET都能够提供强大的支持。
1.2 核心设计理念
Admin.NET遵循以下核心设计理念:
开箱即用:框架提供了完整的权限管理、用户管理、菜单管理等通用功能,开发者可以直接使用而无需从零开始开发。
模块化设计:采用插件式开发模式,每个功能模块都可以独立开发、测试和部署,降低了模块之间的耦合度。
代码简洁:代码结构清晰,注释详尽,遵循.NET开发规范,即便是初学者也能快速上手。
灵活扩展:框架提供了丰富的扩展点和接口,开发者可以根据业务需求进行二次开发和定制。
国产化支持:完美适配国产化软硬件环境,支持国产中间件、国产数据库、麒麟操作系统等。
1.3 主要功能模块
Admin.NET提供了丰富的内置功能模块:
- 主控面板:控制台页面,支持工作台、分析页、统计等功能展示
- 用户管理:企业用户和系统管理员用户维护,支持用户职务、机构、角色、数据权限绑定
- 机构管理:公司组织架构维护,支持多层级树形结构
- 职位管理:用户职务管理,职务可作为用户标签
- 菜单管理:系统菜单配置,包括目录、菜单、按钮权限
- 角色管理:角色绑定菜单和数据授权范围
- 字典管理:系统固定数据维护
- 访问日志:用户登录和退出日志管理
- 操作日志:系统操作日志和异常日志管理
- 服务监控:服务器运行状态监控
- 在线用户:在线用户查看和强制下线
- 公告管理:系统通知公告发布
- 文件管理:文件上传下载,支持多种存储方式
- 任务调度:分布式作业调度系统
- 系统配置:系统运行参数维护
- 邮件短信:邮件和短信发送功能
- 系统接口:Swagger API文档生成
- 代码生成:前后端代码一键生成
- 在线构建器:表单元素拖拽生成Vue代码
- 微信对接:微信小程序开发和支付
- 导入导出:文件导入导出和PDF报告生成
- 限流控制:接口访问限制
- ES日志:Elasticsearch日志存储
- 开放授权:OAuth 2.0标准授权登录
- APIJSON:腾讯APIJSON协议适配
- 数据库视图:查询SQL和表实体视图维护
2. 框架发展历程与版本演进
2.1 版本历史
Admin.NET作为一个开源项目,经历了多个版本的迭代和优化:
早期版本(基于.NET Core 3.1)
- 初始版本基于.NET Core 3.1开发
- 采用传统的MVC架构模式
- 前端使用Vue2 + Element UI
中期版本(基于.NET 5/6)
- 升级到.NET 5和.NET 6
- 引入Furion框架作为底层基础
- 前端升级到Vue3 + Element Plus
- 引入SqlSugar作为ORM框架
当前版本(基于.NET 6/8)
- 全面支持.NET 6和.NET 8
- 采用Vue3 + Element Plus + Vite5
- 集成更多企业级功能
- 完善国产化适配
- 引入更多第三方集成
2.2 技术演进路线
Admin.NET的技术演进始终紧跟.NET生态的发展:
后端技术演进:
- 从.NET Core 3.1到.NET 8的平滑升级
- 从传统Repository模式到SqlSugar的演进
- 从手动依赖注入到Furion自动注入
- 从同步编程到全异步编程模式
前端技术演进:
- 从Vue2到Vue3的全面升级
- 从Webpack到Vite的构建工具迁移
- 从Element UI到Element Plus的组件库升级
- 从JavaScript到TypeScript的语言升级
2.3 版本兼容性
当前Admin.NET支持的环境版本:
| 组件 | 最低版本 | 推荐版本 |
|---|---|---|
| .NET SDK | 6.0 | 8.0 |
| Node.js | 16.0 | 20.x LTS |
| pnpm | 8.0 | 9.x |
| 数据库 | MySQL 5.7 / SQL Server 2012 / PostgreSQL 10 | MySQL 8.0 / SQL Server 2019 / PostgreSQL 15 |
3. 核心技术栈详解
3.1 后端技术栈
3.1.1 Furion框架
Furion是一个让.NET开发更简单、更通用、更流行的开源框架。Admin.NET选择Furion作为底层框架的原因:
核心特性:
- 依赖注入:自动扫描和注册服务,无需手动配置
- 动态API:自动生成RESTful API,无需编写Controller
- 数据校验:内置强大的数据验证机制
- 统一返回:规范化API返回格式
- 异常处理:全局异常捕获和处理
- 日志记录:集成多种日志框架
- 跨域配置:简化CORS配置
- Swagger集成:自动生成API文档
Furion在Admin.NET中的应用:
// 动态API示例
[ApiDescriptionSettings(Order = 100)]
public class SysUserService : IDynamicApiController
{
private readonly SqlSugarRepository<SysUser> _sysUserRep;
public SysUserService(SqlSugarRepository<SysUser> sysUserRep)
{
_sysUserRep = sysUserRep;
}
/// <summary>
/// 获取用户列表
/// </summary>
[DisplayName("获取用户列表")]
public async Task<SqlSugarPagedList<SysUser>> Page(PageUserInput input)
{
return await _sysUserRep.AsQueryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.Account), u => u.Account.Contains(input.Account))
.WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName))
.OrderBy(u => u.OrderNo)
.ToPagedListAsync(input.Page, input.PageSize);
}
}
3.1.2 SqlSugar ORM
SqlSugar是一款老牌.NET开源ORM框架,支持主流数据库,性能优异,使用简单。
核心特性:
- 多数据库支持:MySQL、SQL Server、Oracle、PostgreSQL、SQLite、达梦、人大金仓等
- 代码优先:自动生成数据库表结构
- CRUD操作:链式查询,支持复杂SQL
- 事务管理:支持分布式事务
- 读写分离:内置读写分离支持
- 二级缓存:查询结果自动缓存
- 软删除:内置软删除支持
- 数据过滤:全局数据过滤器
SqlSugar在Admin.NET中的应用:
// 仓储注入
public class SysUserService : IDynamicApiController
{
private readonly SqlSugarRepository<SysUser> _sysUserRep;
// 条件查询示例
public async Task<List<SysUser>> GetList()
{
return await _sysUserRep.AsQueryable()
.Where(u => u.Status == StatusEnum.Enable)
.Includes(u => u.Roles) // 导航属性
.ToListAsync();
}
// 复杂联表查询
public async Task<dynamic> GetUserWithOrg()
{
return await _sysUserRep.Context.Queryable<SysUser>()
.LeftJoin<SysOrg>((u, o) => u.OrgId == o.Id)
.Select((u, o) => new { u.Account, u.RealName, OrgName = o.Name })
.ToListAsync();
}
}
3.1.3 其他后端组件
| 组件 | 用途 | 说明 |
|---|---|---|
| NewLife.Redis | Redis缓存 | 高性能Redis客户端 |
| Magicodes.IE | 导入导出 | Excel/Word/PDF导入导出 |
| SKIT.FlurlHttpClient.Wechat | 微信开发 | 微信公众号、小程序、支付SDK |
| IdGenerator | ID生成 | 雪花ID生成器 |
| UAParser | 用户代理解析 | 解析浏览器、操作系统信息 |
| OnceMi.AspNetCore.OSS | 对象存储 | 阿里云、腾讯云、MinIO等OSS |
| NETCore.MailKit | 邮件发送 | SMTP邮件发送 |
| Lazy.Captcha.Core | 验证码 | 图形验证码、滑动验证码 |
| AspNetCoreRateLimit | 限流 | API访问限流 |
| Elasticsearch.Net | ES日志 | Elasticsearch客户端 |
| Sundial | 任务调度 | 分布式作业调度 |
3.2 前端技术栈
3.2.1 Vue3
Vue3是Admin.NET前端的核心框架,相比Vue2有显著的性能提升和更好的开发体验。
核心特性:
- Composition API:更灵活的组件逻辑复用
- 响应式系统:基于Proxy的响应式实现
- Teleport:模态框等场景的DOM传送
- Fragments:多根节点组件
- Suspense:异步组件加载
Vue3在Admin.NET中的应用:
<template>
<div class="user-list">
<el-table :data="tableData" v-loading="loading">
<el-table-column prop="account" label="账号" />
<el-table-column prop="realName" label="姓名" />
<el-table-column prop="status" label="状态">
<template #default="{ row }">
<el-tag :type="row.status === 1 ? 'success' : 'danger'">
{{ row.status === 1 ? '启用' : '禁用' }}
</el-tag>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { getUserList } from '/@/api/system/user';
const tableData = ref([]);
const loading = ref(false);
const loadData = async () => {
loading.value = true;
try {
const res = await getUserList();
tableData.value = res.data.items;
} finally {
loading.value = false;
}
};
onMounted(() => {
loadData();
});
</script>
3.2.2 Element Plus
Element Plus是Element UI的Vue3版本,提供了丰富的企业级UI组件。
常用组件:
- 表单组件:Input、Select、DatePicker、Form
- 数据展示:Table、Tree、Pagination
- 反馈组件:Dialog、Message、Notification
- 导航组件:Menu、Tabs、Breadcrumb
- 布局组件:Layout、Container、Card
3.2.3 Vite5
Vite是新一代前端构建工具,提供极速的开发体验。
核心特性:
- 即时启动:利用ESM实现秒级冷启动
- 热更新:毫秒级的模块热替换
- 按需编译:只编译当前需要的模块
- 优化打包:基于Rollup的生产构建
3.2.4 前端目录结构
Web/
├── src/
│ ├── api/ # API接口定义
│ │ ├── system/ # 系统管理接口
│ │ ├── platform/ # 平台管理接口
│ │ └── model/ # 接口类型定义
│ ├── assets/ # 静态资源
│ ├── components/ # 公共组件
│ ├── directives/ # 自定义指令
│ ├── hooks/ # 组合式函数
│ ├── layout/ # 布局组件
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia状态管理
│ ├── utils/ # 工具函数
│ └── views/ # 页面视图
│ ├── system/ # 系统管理页面
│ ├── platform/ # 平台管理页面
│ └── home/ # 首页
├── public/ # 公共静态资源
├── lang/ # 国际化语言包
└── api_build/ # API生成工具
4. 框架特色与优势
4.1 多租户架构
Admin.NET内置了完善的多租户支持,可以快速构建SaaS应用。
多租户模式:
- 共享数据库:所有租户共用一个数据库,通过TenantId字段区分
- 独立数据库:每个租户使用独立的数据库
- 混合模式:核心数据共享,业务数据隔离
多租户实现:
// 租户实体基类
public abstract class EntityTenant : EntityBase
{
/// <summary>
/// 租户Id
/// </summary>
[SugarColumn(ColumnDescription = "租户Id")]
public virtual long? TenantId { get; set; }
}
// 全局租户过滤器
public class TenantEntityFilter : IEntityFilter
{
public Expression<Func<T, bool>> GetFilter<T>() where T : class
{
var tenantId = App.GetService<IUserManager>()?.TenantId;
if (typeof(T).IsAssignableTo(typeof(EntityTenant)))
{
return u => (u as EntityTenant).TenantId == tenantId;
}
return null;
}
}
4.2 动态权限控制
框架实现了细粒度的权限控制机制:
权限类型:
- 菜单权限:控制用户可访问的菜单
- 按钮权限:控制用户可操作的按钮
- 数据权限:控制用户可访问的数据范围
- 接口权限:控制用户可调用的API
数据权限范围:
- 全部数据
- 本部门及以下数据
- 本部门数据
- 仅本人数据
- 自定义数据
// 数据权限实现
[DataScopeFilter]
public async Task<List<SysUser>> GetUserList()
{
return await _sysUserRep.AsQueryable()
.Where(u => u.Status == StatusEnum.Enable)
.ToListAsync();
}
4.3 代码生成器
Admin.NET提供了强大的代码生成器,支持:
生成内容:
- 后端实体类
- 后端服务类
- 后端输入/输出DTO
- 前端API接口
- 前端页面组件
- 菜单SQL脚本
生成配置:
- 表前缀处理
- 字段类型映射
- 表单控件类型
- 查询条件配置
- 列表显示配置
4.4 国产化适配
Admin.NET完美支持国产化环境:
国产数据库支持:
- 达梦数据库
- 人大金仓
- 神通数据库
- 南大通用
- 瀚高数据库
国产操作系统支持:
- 麒麟操作系统
- 统信UOS
- 中标麒麟
国密算法支持:
- SM2:非对称加密
- SM3:消息摘要
- SM4:对称加密
4.5 微服务准备
虽然Admin.NET是单体架构,但已为微服务化做好准备:
微服务基础:
- 统一配置中心支持
- 服务注册发现支持
- 分布式缓存
- 分布式任务调度
- 消息队列集成
5. 适用场景分析
5.1 最佳适用场景
企业级管理系统:
- ERP系统
- CRM系统
- OA办公系统
- 进销存系统
- 项目管理系统
电商平台后台:
- 商品管理
- 订单管理
- 会员管理
- 营销活动
SaaS应用:
- 多租户业务系统
- 垂直行业解决方案
- 企业级服务平台
政企信息化:
- 政务管理系统
- 数据中台
- 智慧城市项目
5.2 不太适合的场景
高并发互联网应用:
- 秒杀系统
- 社交平台
- 直播平台
实时通信应用:
- 即时通讯
- 在线游戏
- 实时协作
大数据处理:
- 数据分析平台
- 日志处理系统
- 实时计算
5.3 选择建议
选择Admin.NET的考虑因素:
推荐使用:
- 团队熟悉.NET技术栈
- 项目周期较短,需要快速交付
- 需要完善的权限管理功能
- 有国产化适配需求
- 中小型项目或企业内部系统
谨慎使用:
- 团队对Vue3不熟悉
- 项目有特殊架构要求
- 需要高度定制化的UI
- 超大规模并发场景
6. 与其他框架对比
6.1 与ABP Framework对比
| 特性 | Admin.NET | ABP Framework |
|---|---|---|
| 学习曲线 | 较低 | 较高 |
| 开发效率 | 高 | 中 |
| 微服务支持 | 基础 | 完善 |
| 文档质量 | 良好 | 优秀 |
| 社区活跃度 | 活跃 | 非常活跃 |
| 企业支持 | 社区 | 商业+社区 |
| 国产化支持 | 优秀 | 一般 |
6.2 与RuoYi对比
| 特性 | Admin.NET | RuoYi |
|---|---|---|
| 后端语言 | C# | Java |
| 前端框架 | Vue3 | Vue2/Vue3 |
| ORM框架 | SqlSugar | MyBatis |
| 权限设计 | RBAC+数据权限 | RBAC+数据权限 |
| 代码生成 | 支持 | 支持 |
| 多租户 | 支持 | 支持 |
6.3 与YuebonCore对比
| 特性 | Admin.NET | YuebonCore |
|---|---|---|
| 框架基础 | Furion | 自研 |
| ORM | SqlSugar | Dapper+EF |
| 前端技术 | Vue3 | Vue2 |
| 功能完整度 | 较全 | 较全 |
| 更新频率 | 频繁 | 一般 |
7. 社区生态与资源
7.1 官方资源
代码仓库:
- Gitee:https://gitee.com/zuohuaijun/Admin.NET
- GitHub:https://github.com/zuohuaijun/Admin.NET
- GitCode:https://gitcode.com/zuohuaijun/Admin.NET
在线文档:
演示环境:
- 演示地址:https://demo.adminnet.top
- 账号:superAdmin.NET
- 密码:Admin.NET++010101
7.2 交流社区
QQ交流群:
- 交流群1:87333204
- 交流群2:252381476
7.3 相关项目
应用商城:
- iMES工厂管家:基于Admin.NET的MES管理系统
插件生态:
- Admin.NET.Plugin.ApprovalFlow:审批流插件
- Admin.NET.Plugin.DingTalk:钉钉集成插件
- Admin.NET.Plugin.GoView:大屏可视化插件
- Admin.NET.Plugin.K3Cloud:金蝶云集成插件
- Admin.NET.Plugin.ReZero:零代码插件
- Admin.NET.Plugin.WorkWeixin:企业微信插件
7.4 学习资源
视频教程:
- B站搜索"Admin.NET"可找到相关视频教程
博客文章:
- CSDN、博客园等平台有相关实践文章
开源组件:
- Furion文档:https://dotnetchina.gitee.io/furion
- SqlSugar文档:https://www.donet5.com/Home/Doc
- vue-next-admin文档:https://lyt-top.gitee.io/vue-next-admin-doc-preview/
8. 学习路线规划
8.1 入门阶段(1-2周)
目标:了解框架结构,能够运行项目
学习内容:
- 环境搭建(.NET SDK、Node.js、数据库)
- 项目获取和初始化
- 后端项目结构了解
- 前端项目结构了解
- 项目运行和基本操作
实践任务:
- 成功运行Admin.NET前后端项目
- 完成基本的用户登录操作
- 浏览系统各个功能模块
8.2 基础阶段(2-4周)
目标:掌握框架核心概念,能够进行简单开发
学习内容:
- SqlSugar基本使用
- Furion动态API
- 权限系统原理
- Vue3 Composition API
- Element Plus组件使用
- 代码生成器使用
实践任务:
- 使用代码生成器创建新模块
- 手动创建一个简单的CRUD模块
- 理解前后端数据交互流程
8.3 进阶阶段(1-2月)
目标:深入理解框架设计,能够进行复杂业务开发
学习内容:
- 多租户实现原理
- 数据权限实现原理
- 认证授权机制
- 事件总线使用
- 任务调度使用
- 第三方集成(微信、OSS等)
实践任务:
- 实现一个完整的业务模块
- 集成第三方服务
- 自定义权限控制逻辑
8.4 高级阶段(2-3月)
目标:能够进行框架级别的定制和优化
学习内容:
- 框架源码分析
- 性能优化技巧
- 安全加固措施
- 部署和运维
- 插件开发
- 微服务改造
实践任务:
- 开发自定义插件
- 进行性能优化
- 完成生产环境部署
8.5 持续学习
关注重点:
- 框架版本更新
- .NET版本更新
- Vue生态更新
- 社区最佳实践
参与贡献:
- 提交Issue反馈问题
- 贡献Pull Request
- 分享使用经验
- 帮助其他开发者
总结
Admin.NET是一个功能完善、开箱即用的.NET通用权限开发框架。它整合了Furion和SqlSugar等优秀开源项目,采用Vue3 + Element Plus的现代化前端技术栈,能够帮助开发者快速构建企业级应用系统。
通过本章的学习,你应该对Admin.NET有了全面的认识,包括其核心技术栈、特色功能、适用场景以及学习路线。在接下来的章节中,我们将深入学习如何搭建开发环境、理解项目架构、进行二次开发等内容。
无论你是.NET新手还是有经验的开发者,Admin.NET都能为你提供一个快速起步的平台。让我们开始Admin.NET的学习之旅吧!

浙公网安备 33010602011771号