znlgis 博客

GIS开发与技术分享

第一章: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 5/6)

当前版本(基于.NET 6/8)

2.2 技术演进路线

Admin.NET的技术演进始终紧跟.NET生态的发展:

后端技术演进

前端技术演进

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作为底层框架的原因:

核心特性

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框架,支持主流数据库,性能优异,使用简单。

核心特性

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有显著的性能提升和更好的开发体验。

核心特性

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'">
            
          </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组件。

常用组件

3.2.3 Vite5

Vite是新一代前端构建工具,提供极速的开发体验。

核心特性

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应用。

多租户模式

多租户实现

// 租户实体基类
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 动态权限控制

框架实现了细粒度的权限控制机制:

权限类型

数据权限范围

// 数据权限实现
[DataScopeFilter]
public async Task<List<SysUser>> GetUserList()
{
    return await _sysUserRep.AsQueryable()
        .Where(u => u.Status == StatusEnum.Enable)
        .ToListAsync();
}

4.3 代码生成器

Admin.NET提供了强大的代码生成器,支持:

生成内容

生成配置

4.4 国产化适配

Admin.NET完美支持国产化环境:

国产数据库支持

国产操作系统支持

国密算法支持

4.5 微服务准备

虽然Admin.NET是单体架构,但已为微服务化做好准备:

微服务基础


5. 适用场景分析

5.1 最佳适用场景

企业级管理系统

电商平台后台

SaaS应用

政企信息化

5.2 不太适合的场景

高并发互联网应用

实时通信应用

大数据处理

5.3 选择建议

选择Admin.NET的考虑因素:

推荐使用

谨慎使用


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交流群

7.3 相关项目

应用商城

插件生态

7.4 学习资源

视频教程

博客文章

开源组件


8. 学习路线规划

8.1 入门阶段(1-2周)

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

学习内容

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

实践任务

8.2 基础阶段(2-4周)

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

学习内容

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

实践任务

8.3 进阶阶段(1-2月)

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

学习内容

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

实践任务

8.4 高级阶段(2-3月)

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

学习内容

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

实践任务

8.5 持续学习

关注重点

参与贡献


总结

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

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

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