一套能直接用的 WPF 工业上位机(HMI)框架,带源码 📅 2026/8/15 15:51:26 目录前言项目介绍项目功能项目特点项目技术项目代码整体结构项目效果项目源码总结前言工业上位机软件这块市面上的方案要么太重要么太定制化每次新项目都得从零搭一遍架子。之前做过几个设备控制项目发现大量时间花在重复的架构搭建和基础功能实现上真正投入业务逻辑的时间反而不多。这次基于 WPF 和 DDD 分层架构做了一套快速开发框架把设备通讯、数据采集、配方管理、实时监控这些工业场景的通用能力都集成好了目标是下次再做类似项目时可以直接拿来用把精力放在业务本身。项目介绍一套面向工业自动化场景的上位机控制框架采用 DDD 领域驱动设计分层架构界面基于 Material Design 风格。涵盖了设备通讯、数据采集、配方管理、实时监控等核心能力可用于搭建半导体、CMP 等工业设备的运行控制与监控软件。框架整体按 DDD 经典分层拆成表示层、应用层、领域层、基础设施层外加独立的控件库和插件层每一层的职责边界都很清楚。项目功能功能模块具体说明登录鉴权用户登录入口权限验证基础首页看板关键指标与设备状态概览工作台日常作业主界面承载核心操作实时监控设备状态监控LiveCharts 实时曲线展示配方管理工艺配方的增删改查与下发业务配置业务参数配置管理系统设置系统级参数配置主题切换Material Design 多皮肤切换数据持久化SQLite 本地存储基于 SqlSugarCore ORMExcel 导入导出基于 MiniExcel 的高性能处理远程文件操作基于 Renci.SshNet.Async 的 SFTP/SSH 操作项目特点DDD 分层清晰领域层和基础设施层严格分离业务逻辑不依赖具体技术实现替换数据库或通讯协议不影响核心业务MVVM 样板代码极少CommunityToolkit.Mvvm 的源生成器模式[ObservableProperty]和[RelayCommand]在编译时生成绑定代码CQRS 风格的协作方式MediatR 处理命令和事件模块之间通过消息通信耦合度低通讯协议可插拔ReaderFactory ReaderStrategy 工厂策略模式换设备类型只需要新增策略实现不用动现有代码插件化打包DillonMvvm.Plugins 可独立生成 NuGet 包功能模块可以按需分发项目技术技术方向具体选型运行时.NET 8.0 (WPF)MVVM 框架CommunityToolkit.Mvvm 8.4.0UI 主题MaterialDesignThemes 5.2.1中介者/CQRSMediatR 13.0.0ORMSqlSugarCore 5.1.4.198数据库Microsoft.Data.Sqlite 9.0.8对象映射Mapster 7.4.0日志Serilog 4.3.0Excel 处理MiniExcel 1.41.3工业通讯HslCommunication 12.3.3远程交互Renci.SshNet.Async 1.4.0图表LiveCharts.Wpf 0.9.7依赖注入Microsoft.Extensions.Hosting 9.0.7项目代码整体结构解决方案包含七个项目按 DDD 分层组织├── sss.GenericWpf.App/ # 表示层启动入口 │ ├── Views/ # 所有视图 │ ├── ViewModels/ # 所有视图模型 │ ├── Resources/ # 字体、图片、样式 │ └── Themes/ # 主题资源 ├── sss.GenericWpf.Application/ # 应用层 │ ├── Dtos/ # 数据传输对象 │ ├── Services/ # 应用服务 │ └── EventHandlers/ # 事件处理器 ├── sss.Wpf.Domain/ # 领域层 │ ├── Entities/ # 领域实体 │ ├── EventBus/ # 领域事件 │ └── Extension/ # 领域扩展 ├── sss.Wpf.Domain.Core/ # 领域核心 │ ├── EntityBases/ # 实体基类 │ ├── Repository/ # 仓储抽象接口 │ └── Communication/ # 通讯抽象接口 ├── sss.Wpf.Infrastructure/ # 基础设施层 │ ├── Repositories/ # 仓储具体实现 │ ├── Communication/ # 通讯具体实现 │ └── Configuration/ # 配置文件 ├── sss.GenericWpf.Controls/ # 通用控件库 └── DillonMvvm.Plugins/ # 插件层项目效果启动后的主界面左边是导航菜单右边是内容区域。首页看板展示设备运行状态、产量统计等关键指标。实时监控页面用 LiveCharts 绘制实时曲线数据刷新流畅。配方管理页面提供配方的增删改查和下发操作数据存储在本地的 SQLite 数据库中。通讯模块支持配置多种设备地址和协议类型切换设备时只需要调整策略配置业务代码不用动。主题切换功能可以在亮色和暗色之间切换界面风格统一。整个界面基于 Material Design视觉上比较现代和传统工控软件的风格有明显区别。项目源码可以直接克隆、还原依赖、编译运行示例数据已经预置好了。https://github.com/chinaxuyanan/YR_TM总结框架把工业上位机开发中那些重复性的基础设施工作都封装好了。项目结构DDD分层确实让职责边界清晰了不少换数据库或者换设备通讯协议的时候影响范围被限制在基础设施层领域层不需要改动。CommunityToolkit.Mvvm 的源生成器模式用起来确实省事View 和 ViewModel 之间的绑定代码量少了很多。MediatR 做模块间通信的方式也算顺手命令和事件的处理逻辑各自独立不会堆在一个类里越写越大。如果大家也在做类似的工业上位机项目这套架子可以拿过去直接用或者在它的基础上做定制扩展。引入地址