Vue工业互联网平台:多租户跨平台支持,涵盖工业4.0主流业务需求,助力企业数字化转型
工业互联网CPS系统是一套前端基于Vue2.6,后端基于.NetCore3.1,前后端分离,支持跨平台、支持多租户、多语言、多数据库的平台型应用软件。 它涵盖了工业4.0领域主流的业务需求,如MES、WMS、SRM、EMS、QMS、Scada等。 本人深耕工业4.0领域多年,对传统实体企业数字化转型有着丰富的经验,本着自身扎实的技术,过硬的业务能力,开发了这套平台,希望可以帮助更多的企业早日实现工业转型改造。
(基于合并后的 WMSCloud_merged.txt 逆向分析)
一、背景与目标
WMSCloud 是一套“工业互联 CPS 系统”的后端实现,采用 ABP 3.x(.NET Core 3.1) 框架,面向 多租户、跨平台、前后端分离 的云化仓储场景。

本文站在“零源码泄露”红线之上,对系统级能力、运行时流程与可插拔扩展点进行白盒级描述,为二次开发、性能调优与 DevOps 提供路线图。
二、顶层架构速览
| 层级 | 技术选型 | 职责边界 |
|---|---|---|
| 接入层 | ASP.NET Core 3.1 Kestrel | TLS 终止、租户路由、SignalR 长连接 |
| 应用层 | ABP Application Service | 用例编排、DTO 自动验证、动态代理脚本生成 |
| 领域层 | ABP Domain + DDD | 聚合根、仓储、领域事件、软删除/多租户过滤器 |
| 基础设施 | EF Core 3.x + Dapper 混合 | EF 负责 UoW、Dapper 负责高频查询;支持 SQL Server、MySQL、Oracle 三栈 |
| 横向能力 | 审计、权限、缓存、本地化、文件嵌入、WebHook | 全部基于 ABP 模块系统,可热插拔 |
三、核心运行时管道(请求级)
- 租户解析
按优先级链式执行:DomainTenantResolveContributor→HttpHeaderTenantResolveContributor→HttpCookieTenantResolveContributor
结果缓存于HttpContextTenantResolverCache,一次请求仅解析一次。
- 多语言
采用 AbpUserRequestCultureProvider 三阶回退:
用户个性化设置 > Cookie/Header > 系统默认语言。
所有ApplicationService与RazorPage通过L()方法即时本地化,支持 ResX + JSON 双源。
- UoW(UnitOfWork)
默认 TransactionScope 被禁用(Configuration.UnitOfWork.IsTransactionScopeAvailable = false),以 IDbTransaction 显式控制。
中间件AbpUnitOfWorkMiddleware在管道早期开启事务,响应成功到达终端后自动CompleteAsync;若中途抛出AbpException则回滚。
- 审计与实体变更
- 审计:AbpAuditActionFilter→ 记录ActionArguments + ReturnValue + ExecutionDuration
- 实体变更:EntityChangeEventHelper在 Dapper 仓库 内触发Creating/Updating/Deleting事件,支持 软删除、创建人、修改人、删除人 自动赋值。
- 权限
采用AbpAuthorizationFilter统一拦截:
- 若返回类型为ObjectResult则返回AjaxResponse包装,状态码 403/401 自动区分。
- 支持AbpMvcAuthorizeAttribute多权限组合,RequireAllPermissions控制与或逻辑。
- SignalR 实时推送
AbpCommonHub继承OnlineClientHubBase,连接时自动维护IOnlineClientManager列表;SignalRRealTimeNotifier实现IRealTimeNotifier,把 领域事件 转为 客户端通知,支持 Web 与移动端双端。
四、数据访问双引擎
| 场景 | 引擎 | 关键特性 |
|---|---|---|
| OLTP 写、复杂聚合 | EF Core | 自动迁移、影子属性、全局查询过滤器(软删除/多租户) |
| OLAP 读、千级 QPS 报表 | Dapper | SQL 手写 + 表达式树自动分页;支持 QueryFilter 注入租户条件;连接、事务由 IActiveTransactionProvider 统一桥接 |
桥接原理:
工业互联网CPS系统是一套前端基于Vue2.6,后端基于.NetCore3.1,前后端分离,支持跨平台、支持多租户、多语言、多数据库的平台型应用软件。 它涵盖了工业4.0领域主流的业务需求,如MES、WMS、SRM、EMS、QMS、Scada等。 本人深耕工业4.0领域多年,对传统实体企业数字化转型有着丰富的经验,本着自身扎实的技术,过硬的业务能力,开发了这套平台,希望可以帮助更多的企业早日实现工业转型改造。

EF 的 IDbContextTransaction 被 ActiveTransactionProvider 包装为 DbTransaction,Dapper 仓库通过 ActiveTransactionProviderArgs.Empty 拿到同一事务,双引擎同事务提交。
五、可插拔扩展点
- 模块级
所有功能以AbpModule粒度存在,通过Configuration.Modules.Xxx()暴露配置 API;
自定义模块只需在PreInitialize阶段IocManager.Register即可被自动扫描。
- 仓储级
对任意实体追加 Dapper 仓库 无需改源码:csharp
Configuration.ReplaceService, MyDapperRepository>();
- 查询过滤器级
实现IDapperQueryFilter→ 自动被DapperQueryFilterExecuter聚合;可用于 数据权限、行级安全。
- 动态 WebAPI
AbpAppServiceConvention把IApplicationService在运行时生成 Controller,无需手写 API;
通过RemoteServiceAttribute可细粒度关闭元数据或暴露。
- 前端代理脚本
/api/AbpServiceProxies/GetAll支持 jQuery、Angular、Vue 多模板;
配合IApiProxyScriptingConfiguration可自定义 TypeScript DTO 生成规则。
六、性能与运维要点
| 维度 | 建议 |
|---|---|
| 连接池 | EF + Dapper 共用同一 DbProviderFactory,确保 MaxPoolSize 统一;推荐 100-200 |
| 审计表 | 单表写入易成瓶颈,可:1) 关闭非关键接口审计 2) 转 Kafka 异步落库 |
| SignalR | 使用 Redis Backplane 横向扩容;IOnlineClientManager 默认内存存储,集群下需替换为 Redis 实现 |
| 多租户 | 单库模式请开启 TenantId 索引;分库模式利用 ConnectionStringResolve 动态切换 |
| 日志 | 内置 Castle.Log4Net,支持 ES/Seq 输出;生产环境关闭 IsDebugEnabled 级别 |
七、二次开发路线图
- 业务微服务化
按聚合根边界拆分为 子域微服务,共享 Auth、Tenancy、Audit 等横切模块;通过 gRPC / WebHook 解耦。
- 读写分离
在DapperRepositoryBase层引入 主从库路由(基于IOptionsMonitor),只读查询自动走从库。
- 事件驱动
把 领域事件 升级为 RabbitMQ / Kafka 事件,支持 Saga 事务;ABP 已内置EventBus抽象,仅须实现IEventBus即可。
- 前端低代码
利用 Application API Model 元数据,自动生成 表单 + 表格 低代码模板;ABP 提供的IApiDescriptionModelProvider已包含 参数验证规则,可直接映射到 react-jsonschema-form。
八、结语
WMSCloud 后端借助 ABP 3.x 的模块化、多租户与双引擎数据访问能力,已具备 企业级 SaaS 基座 的全部特征。
开发者只需聚焦领域模型与业务用例,所有横切关注点(安全、审计、缓存、实时、本地化)均可通过 声明式配置 与 运行时注入 完成,极大降低云化仓储系统的交付与运维成本。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)