工业互联网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 模块系统,可热插拔

三、核心运行时管道(请求级)

  1. 租户解析
    按优先级链式执行:
    DomainTenantResolveContributorHttpHeaderTenantResolveContributorHttpCookieTenantResolveContributor
    结果缓存于 HttpContextTenantResolverCache,一次请求仅解析一次。
  1. 多语言
    采用 AbpUserRequestCultureProvider 三阶回退:
    用户个性化设置 > Cookie/Header > 系统默认语言。
    所有 ApplicationServiceRazorPage 通过 L() 方法即时本地化,支持 ResX + JSON 双源
  1. UoW(UnitOfWork)
    默认 TransactionScope 被禁用Configuration.UnitOfWork.IsTransactionScopeAvailable = false),以 IDbTransaction 显式控制。
    中间件 AbpUnitOfWorkMiddleware 在管道早期开启事务,响应成功到达终端后自动 CompleteAsync;若中途抛出 AbpException 则回滚。
  1. 审计与实体变更
    - 审计:AbpAuditActionFilter → 记录 ActionArguments + ReturnValue + ExecutionDuration
    - 实体变更:EntityChangeEventHelperDapper 仓库 内触发 Creating/Updating/Deleting 事件,支持 软删除、创建人、修改人、删除人 自动赋值。
  1. 权限
    采用 AbpAuthorizationFilter 统一拦截:
    - 若返回类型为 ObjectResult 则返回 AjaxResponse 包装,状态码 403/401 自动区分。
    - 支持 AbpMvcAuthorizeAttribute 多权限组合,RequireAllPermissions 控制与或逻辑。
  1. 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 的 IDbContextTransactionActiveTransactionProvider 包装为 DbTransaction,Dapper 仓库通过 ActiveTransactionProviderArgs.Empty 拿到同一事务,双引擎同事务提交


五、可插拔扩展点

  1. 模块级
    所有功能以 AbpModule 粒度存在,通过 Configuration.Modules.Xxx() 暴露配置 API;
    自定义模块只需在 PreInitialize 阶段 IocManager.Register 即可被自动扫描。
  1. 仓储级
    对任意实体追加 Dapper 仓库 无需改源码:
    csharp
    Configuration.ReplaceService, MyDapperRepository>();
  1. 查询过滤器级
    实现 IDapperQueryFilter → 自动被 DapperQueryFilterExecuter 聚合;可用于 数据权限、行级安全
  1. 动态 WebAPI
    AbpAppServiceConventionIApplicationService 在运行时生成 Controller,无需手写 API
    通过 RemoteServiceAttribute 可细粒度关闭元数据或暴露。
  1. 前端代理脚本
    /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 级别

七、二次开发路线图

  1. 业务微服务化
    按聚合根边界拆分为 子域微服务,共享 Auth、Tenancy、Audit 等横切模块;通过 gRPC / WebHook 解耦。
  1. 读写分离
    DapperRepositoryBase 层引入 主从库路由(基于 IOptionsMonitor),只读查询自动走从库。
  1. 事件驱动
    领域事件 升级为 RabbitMQ / Kafka 事件,支持 Saga 事务;ABP 已内置 EventBus 抽象,仅须实现 IEventBus 即可。
  1. 前端低代码
    利用 Application API Model 元数据,自动生成 表单 + 表格 低代码模板;ABP 提供的 IApiDescriptionModelProvider 已包含 参数验证规则,可直接映射到 react-jsonschema-form

八、结语

WMSCloud 后端借助 ABP 3.x 的模块化、多租户与双引擎数据访问能力,已具备 企业级 SaaS 基座 的全部特征。

开发者只需聚焦领域模型与业务用例,所有横切关注点(安全、审计、缓存、实时、本地化)均可通过 声明式配置运行时注入 完成,极大降低云化仓储系统的交付与运维成本。

Logo

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

更多推荐