外观
框架对比:MyBack(CQApi) vs VOL Pro
对象:
D:\VOL源码\MyBack(用户在用)vsD:\VOL源码\api_sqlsugar(VOL Pro 3.5.8)。 两侧均为源码实证。MyBack 分析基于 101 次源码探查,VOL 侧结论出自《后端源码分析.md》。
1. 一句话画像
| MyBack (CQApi) | VOL Pro 3.5.8 | |
|---|---|---|
| 本质 | Blog.Core 模板 + 深度行业化改造的分层单体 ERP(销售/采购/生产/品质/仓储/财务/模具,业务重资产) | 商用低代码 CRUD 框架(代码生成器 + 前后端闭环) |
| 架构形态 | 微服务全家桶"接线完毕、电闸全关"(网关/Nacos/Consul/MQ/APM/限流均有代码、默认禁用),实际单体分层运行 | 纯单体分层,无微服务组件 |
| .NET | 6.0(JwtBearer 等包还停在 5.x) | 8.0 |
| ORM | SqlSugar(多库模式:ERP/ERPPic/ERPLog 三 SqlServer 库启用,支持 CQRS 读写分离配置) | SqlSugar(查询真身)+ EF(壳),支持动态分库 ConfigId |
| 规模 | ~1500 .cs,Model 551 文件(手工 Entity+DTO 双份) | 9 项目,代码生成器产出,体量均匀 |
2. 技术栈对照
| 维度 | MyBack (CQApi) | VOL Pro |
|---|---|---|
| DI | Autofac + DynamicProxy(AOP 就绪) | 原生 DI 程序集扫描 |
| 认证 | JWT HS256 自签 + 可切 Ids4(关);网关二次鉴权 | JWT HS256 + 无感置换(vol_exp 头) |
| 权限 | 实际仅登录级 [Authorize] + 角色 Policy;菜单/按钮权限表保留但 PermissionHandler 已删 | 三级完整:认证 → 接口[ApiActionPermission] → 数据(字段级/UserAuth/租户),与前端框架打通 |
| 事务 | [UseTran] 特性 + UnitOfWorkFilter,人工标注(TranAOP 默认关) | ServiceBase 内部封装,钩子内 return Error 即回滚 |
| 缓存 | Memory+Redis 双实现;缓存 AOP 存在但未注册、零使用 | CacheContext 门面 + 菜单/字典/权限三件套版本号联动失效 |
| 日志/观测 | 强项:log4net(文件+入库+Mongo) + Serilog→ES/ELK + OPLog/请求/IP 日志中间件 + MiniProfiler + SkyAPM + SignalR 实时日志推送 | 请求日志落库(Sys_Log)为主,无 APM |
| 消息队列 | 自研 EventBus 三实现(RabbitMQ/Kafka/RedisMQ)+ protobuf,默认全关,仅 1 演示事件 | 无外置 MQ |
| 定时任务 | Quartz + 配置入库 + 管理 API(默认关) | Quartz HTTP 回调型,开箱可用 |
| 报表/导出 | FastReport.Core 2024(服务端报表+打印);无 Excel 导出包 | EPPlus/NPOI Excel 导入导出、下载模板 |
| 外部集成 | 重行业:钉钉审批流、企业微信、飞书、建行支付、富勒 MES、京东、阿里云 OSS | 框架为主,无行业集成 |
| 前端契约 | 通用 BindGrid/BindGridPager/FindByID/RSubmit;前端可传 SQL where 片段 | 固定 getPageData/Add/... API + SaveModel 约定 |
| 软删除/审计 | 无全局软删;无统一审计基类(AOP 未启用),单据自带 MakeOP/CheckOP 业务字段 | LogicDelField 全局逻辑删;CreateID/Creator/CreateDate 框架级自动审计 |
| 模型验证 | 无显式验证(无 ModelState/FluentValidation) | ObjectActionValidator + 前后端统一校验 |
| 代码生成 | 无(Entity/DTO 手工双份同构) | 核心卖点:Sys_TableInfo 配置 → 四层代码+Vue 页面+菜单 |
| 部署 | Dockerfile/Linux 目标,网关可独立部署 | IIS/Kestrel 常规 |
| 数据库 | SqlServer 三库(RYERPNew/Pic/Log,www.szry.online:58900) | 多库支持(演示库与 MyBack 同一台服务器) |
3. 架构风格对比
4. MyBack 优点
- 真实业务沉淀:七大业务域(销售/采购/生产/品质/仓储/财务/模具)实打实落地,含出入库 384KB 级复杂服务——这是买不来的资产。
- 行业集成深度:钉钉审批流、企微、飞书、建行支付、富勒 MES、京东、FastReport 打印——VOL 侧全部为零。
- 观测体系:MiniProfiler + SkyAPM + ELK 通道 + Mongo 日志 + SignalR 实时日志——生产排障能力远超 VOL。
- 架构余地:网关/注册中心/MQ/限流/AOP 全部接线完毕,业务长大时"开闸"即可演进,不必推倒。
- SecretFile 外置密钥设计(cqapi.audience.secret.txt)思路比 VOL 硬编码进仓库好。
5. MyBack 缺点(多数为"有骨头没肉")
- 横切组件启用率低:缓存 AOP、TranAOP、EventBus、Quartz、限流、Nacos/Consul 全部有代码未启用——维护心智负担大(要理解 14 个项目),实际收益小。
- 事务靠人工自觉:
[UseTran]忘标就裸奔;VOL 是框架兜底。 - 权限体系残缺:PermissionHandler 已删,只剩登录级;按钮/接口级权限与前端未打通——多角色场景裸露。
- 无代码生成:Entity+DTO 手工双份同构(551 文件的来源),新表开发效率远低于 VOL 生成器。
- .NET 6 + 5.x 包:已脱离 LTS 支持窗口(.NET 6 于 2024-11 EOL),升级欠账。
- 安全风险实存:
- 登录明文密码比对(LoginController.cs:78)
- 前端可传 SQL where 片段(BindGrid 系契约)——注入面与越权面
- 钉钉 appsecret、MES 测试账号明文入库
- 限流未启用
- 无模型验证、无统一审计、无软删——数据治理三件套全缺。
6. VOL 优点
- 开发效率碾压:配置生成四层+Vue 页面+菜单,新单据分钟级;Partial 生成/手写物理隔离,升级安全。
- 权限三级闭环(认证/接口/数据)与前端框架原生打通。
- 框架级兜底:事务、审计字段、逻辑删、模型验证、参数校验开箱即用。
- .NET 8 活跃演进(日期注释可追溯到 2025)。
- 双 ORM(EF 兼容壳)+ 多库 + 动态分库 + 国密/雪花/限流等现代件齐备。
7. VOL 缺点
- 强约定锁定:路由/字段/信封/缓存模式全定死,逃生口只有 Dapper/原生 SQL;深度定制要动 Core。
- 观测缺失:无 APM/链路追踪,生产排障基本靠 Sys_Log。
- 业务空白:ERP/MES 是演示级,无行业集成(支付/钉钉/MES 全无)。
- CORS 全放行、Swagger 常开、密钥明文——安全基线同样要人工收紧(见《后端源码分析.md》§13)。
- 商用框架:内核 Core 尽量不改,与自研需求冲突时受限。
8. 结论与建议
| 场景 | 建议 |
|---|---|
| 继续运营现有 ERP(MyBack) | 不迁移。业务资产在 MyBack,迁移成本远大于收益。优先补短板:①开启 TranAOP/给关键链路补 [UseTran] ②恢复接口级权限 ③堵 SQL 片段入口 ④密码改哈希 ⑤开限流 |
| 新增管理后台/报表型 CRUD 页面 | 用 VOL 做增量:开发效率高、权限/导出开箱即用,且两套后端同一台 DB 服务器,可共库共表(VOL 生成器直接指向 RYERPNew 建配置表即可,注意 VOL 需要 Sys_* 系统表) |
| 长期演进 | MyBack 补测试+升 .NET 8 后,其"微服务电闸"才有开的价值;VOL 侧则把自定义业务全部圈在 Partial,避免深度依赖内核 |
一句话:MyBack 是"业务很重、框架半成品",VOL 是"框架很完整、业务空白"。两者不是替代关系——MyBack 管存量业务,VOL 管增量页面是当前性价比最高的组合。
2026-11-02 整理。MyBack 侧敏感信息(密码/密钥)仅描述位置,未在文档中复制。