做过企业信息化的人都知道:每个新项目都要重新搭权限、写登录、搞审批流、接消息队列……重复造轮子,乏味且耗时。
有没有一套开箱即用的框架,把这些基础设施全部封装好,让你专注业务逻辑?
Scm.Net 就是为此而生。
笔者多年从事供应链系统及企业信息化系统的产品与研发,在梳理多种项目经验的过程中,开发了这套企业级中后台管理系统的快速开发框架。它采用前后端分离架构,内置权限管理、代码生成、工作流引擎、实时消息、数据可视化等企业级核心能力,目前已支撑 8 款产品落地运行。
01 项目背景与定位
在企业信息化领域,供应链管理系统(SCM)是覆盖面最广、复杂度最高的场景之一。一个完整的供应链体系涉及订单、仓储、运输、配送、计费、园区管理、资产管理和物联网等多个子系统。每个子系统都需要认证授权、权限管控、工作流审批、消息推送、定时任务、数据可视化等基础能力。
Scm.Net 的作者将这些年在多个项目中反复使用的基础设施提炼为一套通用框架,目标只有一个:让开发者不再重复搭建基础设施,专注于业务实现。
🎯 核心定位
企业级中后台管理系统快速开发框架 | 前后端分离架构 | 开箱即用 | 可扩展插件机制
Scm.Net 框架全景
02 已落地产品矩阵
框架的价值不在 PPT 里,而在实际产品中。目前基于 Scm.Net 已开发并运行的产品包括:
| OMS | ||
| WMS | ||
| TMS | ||
| DMS | ||
| BMS | ||
| YMS | ||
| EAM | ||
| IOT |
从订单到仓储,从运输到计费,从园区到物联网——一套框架,8 个产品,覆盖供应链全链路。这足以证明框架的通用性和可扩展性。
03 核心特性全景
Scm.Net 的特性覆盖面非常广,我们按四个维度逐一拆解。
🔐 认证与安全
多维度安全体系
账号登录 手机号登录 邮箱登录 OAuth OIDC SAML 面部识别 指纹识别 声纹识别 TOTP 双因素 AES/DES 加密 JWT Bearer
多种登录方式
— 支持账号、手机号、邮箱,以及 OAuth、OIDC、SAML 等第三方联合登录,满足企业内外部多种接入场景 生物识别
— 面部识别、指纹识别、声纹识别接口预留,未来可无缝接入 双因素认证
— 基于 TOTP 的 OTP 动态口令,为高安全场景提供第二道防线 数据加密
— 前后端传输参数支持 AES/DES 加密签名,防止中间人攻击 JWT 鉴权
— Bearer Token 认证,支持自动刷新,无需频繁登录 六级权限体系
— 公司 / 部门 / 岗位 / 分组 / 用户 / 角色,精细到按钮级别
⚙️ 系统与框架
基础设施全覆盖
多数据库 多缓存 代码生成器 工作流引擎 动态API 定时任务 实时通信 MQTT物联
多数据库支持
— SQLite、MySQL、MariaDB、PostgreSQL、SQL Server、Oracle、Firebird、MongoDB,8 种数据库一个框架全覆盖 多种缓存机制
— MemoryCache、Dictionary、Redis 三种方案灵活切换 代码生成器
— 自动生成实体、DAO、DTO/VO,支持自定义模板,彻底告别手写 CRUD 工作流引擎
— 可视化流程设计、节点配置、表单绑定、在线审批,开箱即用 动态 API
— 自动注册服务为 Web API,无需手动编写 Controller,大幅减少样板代码 API 文档
— Scalar + Swagger UI 双引擎生成,支持自定义注释 定时任务
— Quartz.NET 集成,支持动态任务增删改查 实时通信
— SignalR WebSocket 实时推送与在线聊天 设备物联
— MQTT 协议支持,内置 Broker,直连物联网设备
💼 业务能力
| MQTT 通信 | |
| RabbitMQ | |
| AI 大模型 | |
| 图像处理 | |
| 数据可视化 | |
| 文件管理 | |
| ID 生成器 | |
| 插件扩展 |
🌐 平台兼容
跨平台运行
— Windows、macOS、Linux、HarmonyOS 全覆盖 响应式布局
— 电脑、平板、手机多种终端自适应 多租户架构
— 可扩展为多租户、多组织架构应用
04 技术栈深度解析
后端核心依赖
Scm.Net 后端基于 .NET 10.0,兼容 .NET 6/7/8/9/10 多个版本。以下是核心依赖一览:
| .NET | ||
| SqlSugarCore | ||
| ImageSharp | ||
| MQTTnet | ||
| RabbitMQ.Client | ||
| Quartz.NET | ||
| SignalR | ||
| Mapster | ||
| Serilog | ||
| Newtonsoft.Json | ||
| JWT Bearer | ||
| Scalar | ||
| Swagger UI |
💡 技术选型亮点
ORM 选用 SqlSugar 而非 Entity Framework Core,是因为 SqlSugar 对多数据库支持更友好,且 API 更简洁。对象映射选用 Mapster 而非 AutoMapper,性能高出数倍。API 文档同时集成 Scalar 和 Swagger,给开发者更多选择。
前端技术栈(Scm.Vue)
前端独立仓库 Scm.Vue,基于 Vue 3 + Vite 8 + Element Plus 构建:
| Vue | ||
| Vite | ||
| Element Plus | ||
| Pinia | ||
| ECharts | ||
| Axios | ||
| SignalR | ||
| Vue I18n |
前端还内置了 40+ 业务组件(scTable、scSearch、scUpload、scDynamicForm 等),支持 三种界面模式:
工作台模式
(Console)— 支持default/header/menu/dock四种风格 云桌面模式
(Desktop)— 类 Windows 桌面体验 大屏模式
(Monitor)— 数据可视化大屏展示
05 架构设计与项目结构
Scm.Net 采用了清晰的分层架构,各模块职责明确:
Scm.Net/
├── Scm.Net/ # Web API 主入口
│ ├── Controllers/ # API 控制器
│ ├── Resources/ # 资源文件
│ ├── data/ # 数据文件(SQLite、上传文件)
│ ├── Program.cs # 应用入口与启动配置
│ └── appsettings.json # 应用配置
├── Scm.Core/ # 核心业务逻辑层
├── Scm.Dao/ # 数据访问层(DAO)
├── Scm.Dto/ # 数据传输对象层(DTO)
├── Scm.Common/ # 公共枚举、工具类
├── Scm.Common.Dto/ # 公共 DTO 定义
├── Scm.Common.Excel/ # Excel 导入导出
├── Scm.Common.Log/ # 日志记录
├── Scm.Common.Os/ # 操作系统工具
├── Scm.Dsa.Dba.Sugar/ # SqlSugar 仓储基类
├── Scm.Dsa.Dfa.Json/ # JSON 数据格式转换
├── Scm.Server/ # 服务端核心(接口+基础服务)
├── Scm.Server.Api/ # 动态 API 注册
├── Scm.Server.Bearer/ # JWT Bearer 认证
├── Scm.Server.Cache/ # 缓存扩展
├── Scm.Server.Dao/ # 服务端 DAO 扩展
├── Scm.Server.Dvo/ # DTO/VO 映射
├── Scm.Server.MQTT/ # MQTT 通讯
├── Scm.Server.RabbitMQ/ # RabbitMQ 集成
├── Scm.Server.SignalR/ # SignalR 实时通讯
├── Scm.Server.Quartz/ # Quartz 定时任务
├── Scm.Server.Swagger/ # Swagger 文档
├── Scm.Server.Scalar/ # Scalar 文档
├── Scm.Server.Aiml/ # AI 大模型集成
├── Scm.Server.Service/ # 业务服务扩展
├── Scm.Email/ # 邮件服务
├── Scm.Phone/ # 短信服务
├── Scm.Generator/ # 代码生成器
├── Samples.*/ # 示例项目
├── Libs/ # 预编译库
├── Test/ # 测试项目
└── Scm.Net.sln # 解决方案文件架构设计上有几个值得关注的点:
模块化拆分策略
注意看项目命名规律:Scm.Server.* 是服务端扩展模块,每个模块负责一个独立能力(MQTT、RabbitMQ、SignalR、Quartz、Swagger、Scalar、AI等)。这种设计让你可以按需引用——如果你的项目不需要 MQTT,就不引用 Scm.Server.MQTT,保持项目轻量。
动态 API 机制
Scm.Server.Api 实现了动态 Web API 注册——你只需要写 Service,框架自动将其注册为 Web API,无需手写 Controller。这借鉴了 Panda.DynamicWebApi 的思路,大幅减少样板代码。
三层分离
Scm.Dao
— 数据访问层,封装数据库操作 Scm.Dto
— 数据传输对象,接口数据契约 Scm.Core
— 核心业务逻辑,真正的业务代码
06 四大设计原则
好的框架背后一定有清晰的设计哲学。Scm.Net 有四条核心设计原则,值得每个使用者理解:
原则一:数据库仅用于存储数据
除 CRUD 外不使用任何依赖特定数据库的特性(如存储过程、触发器、视图等),可平滑迁移到任何支持标准 SQL 的数据引擎。这意味着你今天用 SQLite 开发,明天切到 Oracle,几乎零成本。
原则二:单表操作为主
原则上仅允许单表操作(最多不超过两张表),通过数据冗余设计提升查询效率。这看似"反范式",实则是用空间换时间——在高并发场景下,避免 JOIN 带来的性能问题。
原则三:JSON 数据交互
多端数据交互基于 JSON 格式,保证低噪音的同时提升可扩展性。新字段加上去不需要改接口签名,前后端解耦更彻底。
原则四:蛇形命名 DTO
DTO 统一使用 snake_case 命名,适配多场景异构应用需求。Python、Java、Go 等语言默认蛇形命名,这样可以无缝对接多语言生态。
07 五分钟快速启动
Step 1:获取代码
# 克隆后端
git clone https://gitee.com/leadiot/scm.net.git
# 克隆前端
git clone https://gitee.com/leadiot/scm.vue.gitStep 2:配置数据库
编辑 Scm.Net/appsettings.json,修改数据库连接串:
{
"Sql": {
"Type": "Sqlite",
"Text": "Data Source=data/scm.db;"
}
}💡 零配置启动
默认使用 SQLite,系统启动时自动初始化数据库和种子数据,无需手动建表。开箱即用,拉下来就能跑。
Step 3:启动后端
cd Scm.Net
dotnet run访问 http://localhost:5000/scalar 确认后端接口正常。
Step 4:启动前端
cd Scm.Vue
npm install
npm run dev访问 http://localhost:2800 进入前端页面。
演示账号
admin | 123456 |
在线演示地址:http://www.c-scm.net
08 AI 大模型集成
在 AI 蓬勃发展的当下,Scm.Net 也没有缺席。Scm.Server.Aiml 模块集成了 7+ 主流大语言模型:
7+大模型接入,1统一接口
这意味着你可以在企业系统中直接集成 AI 能力——智能客服、文档摘要、数据分析、代码辅助等场景,一个接口切换不同模型,无需为每个模型单独适配。
09 核心配置一览
appsettings.json 是整个系统的配置中枢,以下是核心配置节点说明:
Kestrel | |
Cache | |
Uid | |
Sql | |
Jwt | |
Cors | |
Quartz | |
Email | |
Oidc | |
Otp | |
Generator | |
Serilog | |
Scalar | |
Swagger |
10 内置 API 接口
框架自带以下基础控制器,无需额外开发:
CaptchaController | |
UploadController | |
DownloadController | |
GeneratorController | |
QuartzController | |
HbController | |
OnLineController |
启动后访问 http://localhost:5000/scalar 查看完整 API 文档,所有接口均可在线调试。