生态产品多个设计器现已发布候选版本

查看生态总览
跳转到内容

为什么选择曦寒 ​

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

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

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

30 秒结论 ​

适合这样的项目

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

这些情况建议先别选

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

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

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

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

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

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

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

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

大多数后台模板的权限模型到「角色绑菜单、菜单绑按钮」为止。业务一追问「他只能看本部门的人」「客服不能看全手机号」「出纳和会计不能是同一个人」,就得改代码。

曦寒在权限码之外又建了三个维度,再加三套治理机制。各维度的落地程度不同,下表按当前实现写:

维度回答的问题当前落地
权限码(如 saas:user:read)你能不能做这个操作每次请求实时查授权快照:角色继承、用户直授、委托与租户版本白名单合并后判定
数据范围(本人 / 本部门 / 本部门及下级 / 全部 / 自定义部门)这个操作能作用到哪些数据用户列表与用户导出按范围收窄;其它列表尚未接入
ABAC 属性条件授权在满足哪些 subject. / resource. / environment. 属性时才成立角色授权与用户直授都可挂条件,每次鉴权按当前请求求值;全部条件可盘点,某人某权限可按模拟的时间、IP 试算
字段级脱敏同一条数据里,哪些列你看得见明文服务端统一脱敏,读取、导出、排序过滤与写入校验同一口径
  • 约束规则引擎:可维护职责分离、互斥、基数、先决条件、时间、位置等规则;当前执行的是静态职责分离(SSD),在分配角色、调整角色继承、审批通过角色申请时拦截互斥角色组合,「拒绝」与「需审批」都直接阻断,「警告」与「仅记录」放行并写日志
  • 权限委托:委托人 → 被委托人 → 权限范围 → 生效与到期时间窗,可随时撤销,全程留痕
  • 访问策略:不看授权,按 IP、地区、时段、用户、角色、接口等条件整体放行、拒绝或只记录请求,超管同样受约束;新建一律只记录,启用拦截前先拿当前请求试一次,不会把自己锁在外面;登录失败过多的 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. 开源后台管理模板YuebonCore 等开箱就是一套完整后台,社区素材多底座常与模板一体,长大后拆解成本高需求接近标准后台,追求最快上线
D. 框架 + 中后台内核ABP 官方启动模板、曦寒基础应用既有可投产的成品,又有可独立演进的底座需要理解底座的模块化与分层概念,学习曲线更陡系统会长期长大,且不希望被模板绑死

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

四、用最小成本验证 ​

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

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

演示环境

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

下一步 ​

Released under The MIT License