跳转到内容

为什么选择曦寒

完整能力清单在 功能清单,这一页不重复。它只回答三个问题:

  1. 它究竟替我省掉什么?
  2. 我这个项目适合拿它当起点吗?
  3. 它和别的中后台方案有什么不同?

中后台的选型成本主要不在「能不能跑起来」,而在三年后还改不改得动。所以这一页会把代价和亮点写在一起。

30 秒结论

适合这样的项目

  • 企业内部系统 / 行业业务系统 / B 端 SaaS:用户有组织归属,权限要按人按数据切
  • 需要多租户:一套代码服务多个客户,且要能按版本卖不同的功能包
  • 有合规与审计要求:谁在什么时候改了哪条数据、动了谁的权限,都要留痕可查
  • .NET 后端 + Vue 前端的团队,希望前后端两侧都有现成规范可循

这些情况建议先别选

  • 面向 C 端的门户 / 交易 / 高并发系统:它是中后台内核,设计目标不是极限吞吐
  • 被锁在 .NET 6 / 8,或团队已深度绑定 EF Core:底座是 .NET 10 + SqlSugar
  • 前端团队是 React 技术栈:前端是 Vue 3,迁移等于重写
  • 只需要一个「有登录和菜单」的小后台:权限、租户、审计这套模型对小系统是过度设计

一、它替你省掉的那几个月

每个中后台项目开工时都要重做一遍下面这些东西。它们不产生业务价值,但每一样做不好都会在半年后变成事故:

你本来要写它已经内置
登录、令牌刷新、多端会话、找回密码JWT 双令牌、账号密码 / 邮箱短信验证码 / OAuth2 / 2FA、会话管理
角色菜单权限,然后被业务追问「他只能看自己部门的」RBAC + ABAC + 数据范围 + 字段级脱敏,四个正交维度
组织架构,然后发现部门树的上下级查询很慢部门闭包表 + 岗位 + 用户多部门归属
多租户,然后在每个查询里手动加 where tenant_id =字段级隔离内建于数据层,写路径有越权写守卫
操作日志,然后发现密码和令牌被明文记进了库七类审计日志,落库前自动脱敏
增删改查页面,一张表写一遍代码生成:实体 → DTO → API → 前端页一键产出
站内信、邮件、短信、群机器人各写一套消息中心 四渠道扇出 + 模板渲染 + SignalR 实时推送

内置 88 张表的数据模型与 50 多个后台页面,是这些能力落地后的实际体量。

二、五个真正拉开差距的地方

「有这个功能」和「这个功能经得起用」是两件事。下面五点是它与常见后台模板的实质差异。

1. 权限不止「角色—菜单」两层

大多数后台模板的权限模型到「角色绑菜单、菜单绑按钮」为止。业务提出「区域经理只能看本区域、且只能在工作时间审批、且金额超过 50 万要转审批」时,就得改代码。

曦寒把权限拆成四个正交维度,再加两套治理机制:

维度回答的问题
权限码 module:resource:action你能不能做这个操作
数据范围(本人 / 部门 / 租户)这个操作能作用到哪些数据
ABAC 属性条件在什么时间、什么 IP、什么资源状态下才成立
字段级脱敏同一条数据里,哪些列你看得见明文
  • 约束规则引擎:静态 / 动态职责分离、互斥、基数、先决条件、时间、位置等八类规则,违规可拒绝 / 警告 / 仅记录 / 转审批
  • 权限委托:委托人 → 被委托人 → 权限范围 → 生效与到期时间窗,可随时撤销,全程留痕

完整模型见 权限模型审批与约束

2. 多租户是内建维度,不是补丁

多租户如果做成「在业务代码里记得加过滤条件」,那么漏一处就是数据泄露。这里它落在数据层:租户过滤由框架统一施加,全局数据用 TenantId=0 约定,写路径另有守卫防止租户态误改全局行。

配套的还有商业化需要的那部分:租户版本(Edition)以权限白名单在运行时门控功能,开通时一站式建管理员与授权,降级自动回收越权授权。超级管理员可在平台态切入任意租户代为运维。

多租户与版本

3. 菜单、路由、权限码只有一份真源

后台系统最常见的腐化点,是菜单在数据库里、路由在前端代码里、权限码在第三个地方,三份逐渐对不上。

这里后端的 PageRegistry 统一登记页面码、路由路径、前端组件路径、权限码与国际化键,菜单种子据此同步;前端按后端下发的结果生成路由。新增一个页面只在一处登记,前端不再维护第二份清单。

菜单与路由

4. 列表页由配置生成,且三重感知

中后台八成的页面是「搜索 + 表格 + 导出」。这里它们由 Schema 配置生成,内置列设置、密度切换、高级搜索(时间区间、枚举多选)、个人视图保存、树形模式与列宽拖拽。

关键在于它对三件事有感知:权限(页面、字段、操作三级按权限码过滤,字段级脱敏)、租户个人偏好(列设置与搜索条件同步到后端,换台电脑还在)。

Schema 驱动页面

5. 底座可以单独带走

它的后端建立在 XiHan.Framework 之上,而框架是 66 个可独立引用的 NuGet 包,本身就是公开发布的产品。

这意味着两个方向都通:你可以拿整套 BasicApp 起步,也可以只借走框架的某几个模块用在自己的项目里。BasicApp 使用的全部是框架公开的接口,没有内部特权 API——所以「先用模板上线,之后逐步换成自己的实现」这条路是通的,不需要换底座。

三、中后台方案的四条路线

同类方案不在一个平面上,而是四条路线。下面只描述路线特征,不做优劣评判——很多时候「不选曦寒」才是对的

路线代表你得到什么你付出什么什么时候选它
A. 从零自建ASP.NET Core + Vue + 自选组件完全贴合业务,没有多余抽象身份、权限、租户、审计要自己写并维护多年系统形态特殊,且团队有稳定架构能力
B. 商业中后台 / 低代码平台各类商业 aPaaS 与低代码平台有 SLA、有实施支持、非开发者也能配置授权费用、平台绑定,深度定制受平台能力边界限制需求以配置为主,且预算与合规要求指向商业产品
C. 开源后台管理模板ZR.Admin.NET、YuebonCore 等开箱就是一套完整后台,社区素材多底座常与模板一体,长大后拆解成本高需求接近标准后台,追求最快上线
D. 框架 + 中后台内核Admin.NET(基于 Furion)、ABP 官方启动模板、曦寒基础应用既有可投产的成品,又有可独立演进的底座需要理解底座的模块化与分层概念,学习曲线更陡系统会长期长大,且不希望被模板绑死

曦寒站在 D。 与路线 C 最实质的区别是:模板部分可以逐块替换,底座不用换。与路线 B 的区别是:全部代码在你手上,MIT 许可,没有功能墙,代价是没有商业支持。

四、用最小成本验证

别信任何一页文档的自述,点一遍最快:

花多久做什么你会验证到什么
10 分钟打开 在线用例,用 superadmin / SuperAdmin@123 登录交互质感与能力广度是否够用
半天跟着 快速开始 在本地跑起前后端上手成本,以及你的环境是否顺畅
一天目录结构与代码地图请求生命周期二次开发「加一个业务功能要动几个文件」这个真实成本

演示环境

在线用例是公开演示环境,数据会被定期重置,请勿录入任何真实数据。

下一步

Released under The MIT License