第一章-Admin.NET框架概述与入门指南

第一章:Admin.NET框架概述与入门指南

目录

  1. Admin.NET简介
  2. 框架发展历程与版本演进
  3. 核心技术栈详解
  4. 框架特色与优势
  5. 适用场景分析
  6. 与其他框架对比
  7. 社区生态与资源
  8. 学习路线规划

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提供了丰富的内置功能模块:

  1. 主控面板:控制台页面,支持工作台、分析页、统计等功能展示
  2. 用户管理:企业用户和系统管理员用户维护,支持用户职务、机构、角色、数据权限绑定
  3. 机构管理:公司组织架构维护,支持多层级树形结构
  4. 职位管理:用户职务管理,职务可作为用户标签
  5. 菜单管理:系统菜单配置,包括目录、菜单、按钮权限
  6. 角色管理:角色绑定菜单和数据授权范围
  7. 字典管理:系统固定数据维护
  8. 访问日志:用户登录和退出日志管理
  9. 操作日志:系统操作日志和异常日志管理
  10. 服务监控:服务器运行状态监控
  11. 在线用户:在线用户查看和强制下线
  12. 公告管理:系统通知公告发布
  13. 文件管理:文件上传下载,支持多种存储方式
  14. 任务调度:分布式作业调度系统
  15. 系统配置:系统运行参数维护
  16. 邮件短信:邮件和短信发送功能
  17. 系统接口:Swagger API文档生成
  18. 代码生成:前后端代码一键生成
  19. 在线构建器:表单元素拖拽生成Vue代码
  20. 微信对接:微信小程序开发和支付
  21. 导入导出:文件导入导出和PDF报告生成
  22. 限流控制:接口访问限制
  23. ES日志:Elasticsearch日志存储
  24. 开放授权:OAuth 2.0标准授权登录
  25. APIJSON:腾讯APIJSON协议适配
  26. 数据库视图:查询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 官方资源

代码仓库

在线文档

演示环境

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、博客园等平台有相关实践文章

开源组件


8. 学习路线规划

8.1 入门阶段(1-2周)

目标:了解框架结构,能够运行项目

学习内容

  1. 环境搭建(.NET SDK、Node.js、数据库)
  2. 项目获取和初始化
  3. 后端项目结构了解
  4. 前端项目结构了解
  5. 项目运行和基本操作

实践任务

  • 成功运行Admin.NET前后端项目
  • 完成基本的用户登录操作
  • 浏览系统各个功能模块

8.2 基础阶段(2-4周)

目标:掌握框架核心概念,能够进行简单开发

学习内容

  1. SqlSugar基本使用
  2. Furion动态API
  3. 权限系统原理
  4. Vue3 Composition API
  5. Element Plus组件使用
  6. 代码生成器使用

实践任务

  • 使用代码生成器创建新模块
  • 手动创建一个简单的CRUD模块
  • 理解前后端数据交互流程

8.3 进阶阶段(1-2月)

目标:深入理解框架设计,能够进行复杂业务开发

学习内容

  1. 多租户实现原理
  2. 数据权限实现原理
  3. 认证授权机制
  4. 事件总线使用
  5. 任务调度使用
  6. 第三方集成(微信、OSS等)

实践任务

  • 实现一个完整的业务模块
  • 集成第三方服务
  • 自定义权限控制逻辑

8.4 高级阶段(2-3月)

目标:能够进行框架级别的定制和优化

学习内容

  1. 框架源码分析
  2. 性能优化技巧
  3. 安全加固措施
  4. 部署和运维
  5. 插件开发
  6. 微服务改造

实践任务

  • 开发自定义插件
  • 进行性能优化
  • 完成生产环境部署

8.5 持续学习

关注重点

  • 框架版本更新
  • .NET版本更新
  • Vue生态更新
  • 社区最佳实践

参与贡献

  • 提交Issue反馈问题
  • 贡献Pull Request
  • 分享使用经验
  • 帮助其他开发者

总结

Admin.NET是一个功能完善、开箱即用的.NET通用权限开发框架。它整合了Furion和SqlSugar等优秀开源项目,采用Vue3 + Element Plus的现代化前端技术栈,能够帮助开发者快速构建企业级应用系统。

通过本章的学习,你应该对Admin.NET有了全面的认识,包括其核心技术栈、特色功能、适用场景以及学习路线。在接下来的章节中,我们将深入学习如何搭建开发环境、理解项目架构、进行二次开发等内容。

无论你是.NET新手还是有经验的开发者,Admin.NET都能为你提供一个快速起步的平台。让我们开始Admin.NET的学习之旅吧!

posted @ 2025-11-29 13:06  我才是银古  阅读(0)  评论(0)    收藏  举报