首页
/ Admin.NET前后端分离架构解析

Admin.NET前后端分离架构解析

2026-02-04 04:54:59作者:邬祺芯Juliet

Admin.NET 是一个基于 Vue3、Element-plus、Vite5 的前端技术栈和 .NET6、Furion、SqlSugar 的后端技术栈构建的前后端分离框架。本文将从前后端技术栈、通信机制、国产化适配及等保要求实现等方面,全面解析其架构设计与实现细节。

前端Vue3+Element-plus+Vite5技术栈

Admin.NET 的前端技术栈基于 Vue3、Element-plus 和 Vite5 构建,为开发者提供了高效、现代化的开发体验。以下是对其技术栈的详细解析:

技术栈组成

  1. Vue3:采用 Composition API 和 <script setup> 语法糖,提升代码的可读性和维护性。
  2. Element-plus:基于 Vue3 的 UI 组件库,提供丰富的组件和主题定制能力。
  3. Vite5:极速的开发构建工具,支持热模块替换(HMR)和按需编译。
  4. TypeScript:强类型支持,减少运行时错误。
  5. Pinia:轻量级状态管理库,替代 Vuex。

核心依赖

以下是项目的主要依赖项及其作用:

依赖项 版本 作用描述
vue ^3.5.18 核心框架,提供响应式数据和组件化开发能力。
element-plus ^2.10.4 UI 组件库,提供丰富的表单、表格、弹窗等组件。
vite ^7.0.6 构建工具,支持快速启动和热更新。
pinia ^3.0.3 状态管理库,简化全局状态的管理和共享。
axios ^1.11.0 HTTP 客户端,用于与后端 API 交互。
vue-router ^4.5.1 路由管理,支持动态路由和导航守卫。
@vueuse/core ^13.5.0 提供常用 Vue 组合式 API 的实用工具。

项目结构

以下是前端项目的核心目录结构:

flowchart TD
    src --> api["api/"]
    src --> assets["assets/"]
    src --> components["components/"]
    src --> layout["layout/"]
    src --> router["router/"]
    src --> stores["stores/"]
    src --> views["views/"]
    src --> utils["utils/"]
  • api/:封装后端接口请求。
  • components/:存放可复用的 Vue 组件。
  • stores/:Pinia 状态管理模块。
  • router/:定义前端路由配置。
  • views/:页面级组件。

代码示例

以下是一个典型的 Vue3 + Element-plus 组件示例:

<template>
  <el-button type="primary" @click="handleClick">点击我</el-button>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const count = ref(0);

const handleClick = () => {
  count.value++;
  console.log(`点击次数: ${count.value}`);
};
</script>

构建与运行

项目使用 pnpm 作为包管理工具,运行以下命令启动开发服务器:

pnpm install
pnpm run dev

性能优化

  1. 按需加载:通过 Vite 的 dynamic import 实现路由和组件的懒加载。
  2. CDN 引入:使用 vite-plugin-cdn-import 将部分依赖通过 CDN 引入,减少打包体积。
  3. 代码分割:Vite 自动拆分代码块,提升页面加载速度。

通过以上技术栈和优化手段,Admin.NET 的前端实现了高效开发和卓越性能。

后端Furion与SqlSugar的强强联合

Admin.NET 的后端架构采用了 Furion 框架与 SqlSugar ORM 的完美结合,为开发者提供了高效、灵活且易于维护的开发体验。Furion 作为一款全能的 .NET 应用框架,提供了丰富的功能和模块化设计,而 SqlSugar 则以其高性能和简洁的 API 成为 ORM 的首选。两者的结合,让 Admin.NET 在数据操作、业务逻辑实现和系统扩展性上表现出色。

Furion 框架的核心优势

Furion 是一个基于 .NET 的全栈开发框架,其设计理念是“让 .NET 开发更简单”。在 Admin.NET 中,Furion 提供了以下核心功能:

  1. 模块化开发
    Furion 支持模块化设计,开发者可以根据需求动态加载或卸载模块。例如,Admin.NET 中的多租户功能就是通过模块化实现的。

  2. 动态 WebAPI
    Furion 的动态 WebAPI 功能可以自动将服务类转换为 API 接口,无需手动编写控制器代码。以下是一个示例:

    [DynamicApiController]
    public class UserService
    {
        public string GetUserName(int userId)
        {
            return "Admin";
        }
    }
    
  3. 依赖注入与 AOP 支持
    Furion 内置了强大的依赖注入容器,并支持面向切面编程(AOP),方便实现日志、缓存、事务等横切关注点。

    flowchart LR
        A[业务逻辑] --> B[日志切面]
        A --> C[缓存切面]
        A --> D[事务切面]
    

SqlSugar ORM 的高效数据操作

SqlSugar 是一款轻量级、高性能的 ORM 框架,支持多种数据库(如 MySQL、SQL Server、Oracle 等)。在 Admin.NET 中,SqlSugar 主要用于以下场景:

  1. 简洁的 CRUD 操作
    SqlSugar 提供了链式调用和 Lambda 表达式支持,使得数据库操作更加直观。例如:

    var user = db.Queryable<User>().Where(u => u.Id == 1).First();
    
  2. 分页查询
    SqlSugar 的分页功能非常强大,支持复杂的查询条件。以下是一个分页查询示例:

    var page = db.Queryable<User>()
                 .Where(u => u.Status == 1)
                 .ToPageList(pageIndex, pageSize, ref total);
    
  3. 事务管理
    SqlSugar 提供了简单的事务支持,确保数据操作的原子性:

    db.Ado.BeginTran();
    try
    {
        db.Insertable(user).ExecuteCommand();
        db.CommitTran();
    }
    catch
    {
        db.RollbackTran();
    }
    

Furion 与 SqlSugar 的完美结合

在 Admin.NET 中,Furion 和 SqlSugar 的结合主要体现在以下几个方面:

  1. 动态 API 与 ORM 的无缝集成
    Furion 的动态 API 功能可以直接暴露 SqlSugar 的查询结果,无需额外编写转换逻辑。

  2. 依赖注入的 ORM 实例
    Furion 的依赖注入容器可以轻松管理 SqlSugar 的数据库上下文,确保每次请求都能获取到正确的实例。

    classDiagram
        class ISqlSugarClient {
            +Queryable<T>()
            +Insertable<T>()
            +Updateable<T>()
        }
        class SqlSugarScope {
            +ISqlSugarClient Db
        }
        ISqlSugarClient <|-- SqlSugarScope
    
  3. 高性能与低延迟
    SqlSugar 的高性能特性与 Furion 的轻量级设计相结合,确保了 Admin.NET 在高并发场景下的稳定运行。

示例:用户管理模块的实现

以下是一个完整的用户管理模块实现示例,展示了 Furion 和 SqlSugar 的协同工作:

[DynamicApiController]
public class UserService
{
    private readonly ISqlSugarClient _db;

    public UserService(ISqlSugarClient db)
    {
        _db = db;
    }

    public List<User> GetUsers(int pageIndex, int pageSize)
    {
        return _db.Queryable<User>().ToPageList(pageIndex, pageSize);
    }

    public User GetUserById(int id)
    {
        return _db.Queryable<User>().First(u => u.Id == id);
    }
}

通过以上代码,开发者可以快速实现用户管理的 API,而无需关心底层的数据库操作细节。

总结

Furion 和 SqlSugar 的结合为 Admin.NET 提供了强大的后端支持,无论是快速开发还是高性能需求,都能轻松应对。两者的互补性让开发者能够专注于业务逻辑的实现,而无需被繁琐的技术细节所困扰。

前后端通信与动态API设计

Admin.NET 作为一个前后端分离的框架,其通信机制和动态API设计是其核心功能之一。通过前后端分离的架构,前端(Vue3 + TypeScript)与后端(.NET6 + Furion/SqlSugar)通过 RESTful API 进行交互,同时支持动态API生成和自定义扩展。以下将详细介绍其实现原理和设计思路。

前后端通信机制

Admin.NET 的前后端通信基于 HTTP 协议,通过 JSON 格式传输数据。前端使用 Axios 封装了统一的请求工具,后端则通过动态生成的 API 提供服务。以下是通信流程的示例:

sequenceDiagram
    participant Frontend as 前端(Vue3)
    participant Backend as 后端(.NET6)
    Frontend->>Backend: HTTP请求 (GET/POST/PUT/DELETE)
    Backend->>Frontend: JSON响应 (200/400/500)

请求封装

前端通过 src/api 目录下的模块化 API 文件组织请求,例如:

// src/api/admin.ts
import request from '@/utils/request';

export const getUserList = (params: any) => {
    return request({
        url: '/api/admin/user/list',
        method: 'get',
        params,
    });
};

响应处理

后端通过动态生成的 API 控制器处理请求,例如:

// Admin.NET.Web.Entry/Controllers/AdminController.cs
[ApiController]
[Route("api/admin")]
public class AdminController : ControllerBase
{
    [HttpGet("user/list")]
    public IActionResult GetUserList([FromQuery] UserQueryDto query)
    {
        // 业务逻辑处理
        return Ok(new { data = userList });
    }
}

动态API设计

Admin.NET 支持动态生成 API,通过 Furion 框架的特性,无需手动编写大量重复代码。以下是动态API的实现方式:

动态路由

通过 Furion 的动态路由功能,可以自动将服务层的方法暴露为 API:

// Admin.NET.Application/Service/UserService.cs
public class UserService : IDynamicApiController
{
    [HttpGet]
    public List<User> GetUserList()
    {
        // 查询用户列表
        return userList;
    }
}

自动生成Swagger文档

通过集成 Swagger,动态API会自动生成接口文档,方便前端开发人员调用:

paths:
  /api/user/list:
    get:
      tags:
        - User
      summary: 获取用户列表
      responses:
        200:
          description: 成功

数据交互格式

前后端数据交互采用统一的 DTO(数据传输对象)格式,确保数据的一致性和安全性。例如:

字段名 类型 说明
id string 用户ID
name string 用户名
createTime string 创建时间

动态API扩展

Admin.NET 支持通过插件机制扩展动态API。例如,新增一个插件模块的 API:

// Plugins/Admin.NET.Plugin.ApprovalFlow/Controllers/ApprovalController.cs
[ApiController]
[Route("api/approval")]
public class ApprovalController : ControllerBase
{
    [HttpPost("submit")]
    public IActionResult SubmitApproval([FromBody] ApprovalDto dto)
    {
        // 审批逻辑
        return Ok();
    }
}

总结

通过动态API设计和统一的通信机制,Admin.NET 实现了前后端的高效协作。开发者可以快速扩展功能,同时保持代码的整洁性和可维护性。

国产化适配与等保要求实现

Admin.NET 框架在设计之初就充分考虑了国产化适配和等保要求,确保系统能够在国产软硬件环境中稳定运行,并满足国家信息安全等级保护的相关标准。以下将从国产化适配和等保要求实现两个方面展开详细介绍。

国产化适配

1. 国产数据库支持

Admin.NET 支持多种国产数据库,包括但不限于达梦数据库(DM)、人大金仓(Kingbase)、神通数据库(ShenTong)等。通过 SqlSugar ORM 的灵活配置,可以轻松切换数据库类型,无需修改业务逻辑代码。

// 示例:配置达梦数据库连接
services.AddSqlSugar(new ConnectionConfig()
{
    ConnectionString = "Server=127.0.0.1;Port=5236;Database=AdminNET;User Id=SYSDBA;Password=123456;",
    DbType = DbType.Dm,
    IsAutoCloseConnection = true
});

2. 国产操作系统适配

框架支持在麒麟操作系统、统信 UOS 等国产操作系统上部署运行。通过 Docker 容器化技术,可以快速在国产操作系统环境中完成部署。

flowchart TD
    A[国产操作系统] --> B[安装 Docker]
    B --> C[拉取 Admin.NET 镜像]
    C --> D[启动容器]
    D --> E[完成部署]

3. 国密算法支持

Admin.NET 集成了国密算法(SM2、SM3、SM4),用于数据加密、签名和完整性保护。以下是 SM4 加密的示例代码:

// 示例:SM4 加密
string plainText = "Hello, Admin.NET!";
string key = "0123456789ABCDEF";
string iv = "FEDCBA9876543210";
string encryptedText = SM4Util.Encrypt(plainText, key, iv);
Console.WriteLine(encryptedText);

等保要求实现

1. 身份鉴别与访问控制

  • 多因素认证:支持用户名密码、短信验证码、动态令牌等多种认证方式。
  • 角色权限分离:通过 RBAC(基于角色的访问控制)模型,实现细粒度的权限管理。
classDiagram
    class User {
        +string Username
        +string Password
        +List<Role> Roles
    }
    class Role {
        +string Name
        +List<Permission> Permissions
    }
    class Permission {
        +string Name
        +string Code
    }
    User "1" *-- "n" Role
    Role "1" *-- "n" Permission

2. 安全审计

  • 操作日志:记录用户的关键操作行为,包括登录、数据修改等。
  • 访问日志:记录用户访问系统的详细信息,便于追溯和分析。

3. 数据完整性保护

  • 数据签名:使用 SM3 算法对关键数据进行签名,确保数据在传输和存储过程中不被篡改。
  • 数据加密:敏感数据(如用户密码)采用 SM4 加密存储。

4. 安全漏洞防护

  • 防 SQL 注入:通过 SqlSugar 的参数化查询功能,有效防止 SQL 注入攻击。
  • 限流控制:集成 AspNetCoreRateLimit 组件,防止恶意请求和 DDoS 攻击。
// 示例:限流配置
services.AddRateLimiting(options =>
{
    options.GlobalLimits = new List<RateLimitRule>
    {
        new RateLimitRule
        {
            Endpoint = "*",
            Limit = 100,
            Period = "1m"
        }
    };
});

5. 安全事件响应

  • 异常监控:通过 Elasticsearch 实时监控系统异常,及时发现并处理安全事件。
  • 告警机制:支持邮件、系统通知等多种告警方式,确保安全事件能够及时通知相关人员。
sequenceDiagram
    participant User
    participant System
    participant Admin
    User->>System: 触发异常
    System->>Elasticsearch: 记录异常日志
    System->>Admin: 发送告警通知
    Admin->>System: 处理异常

通过以上措施,Admin.NET 不仅能够满足国产化适配需求,还能全面符合等保要求,为企业和开发者提供安全可靠的技术支持。

登录后查看全文
热门项目推荐
相关项目推荐