# ZaneUpperComputer.wpf **Repository Path**: MY_JR/zane-uppercomputer.wpf ## Basic Information - **Project Name**: ZaneUpperComputer.wpf - **Description**: ZaneUpperComputer.wpf 是一款面向工业自动化场景的上位机控制系统,采用 MVVM 分层架构,集成设备通讯、数据采集、配方管理、实时监控等核心能力。界面基于 Material Design 风格,功能模块高度可扩展,可用于快速搭建锂电新能源,半导体等工业设备的数据采集、MES上传、与数据监控软件。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-05 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 
# ZaneUpperComputer **一款基于 WPF 与 DDD 领域驱动设计的工业上位机(HMI)快速开发框架** [![.NET](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/) [![WPF](https://img.shields.io/badge/WPF-Windows-512BD4)](https://learn.microsoft.com/dotnet/desktop/wpf/) [![License](https://img.shields.io/badge/License-Apache--2.0-blue)](./LICENSE) [![Platform](https://img.shields.io/badge/Platform-Windows-0078D4?logo=windows)](https://learn.microsoft.com/windows/)
## 📖 项目简介 ZaneUpperComputer 是一款面向工业自动化场景的可复用上位机框架,采用 **DDD(领域驱动设计)+ MVVM** 分层架构,已集成多机台运行时、PLC/仪表通信、生产记录、报警、权限、MES Outbox、日志和备份恢复。界面采用 Material Design 风格,客户工艺通过独立机型模块扩展。 ## ✨ 核心特性 - **DDD 分层架构**:严格的领域驱动分层,职责清晰、易于测试与演进 - **MVVM 双向绑定**:基于 `CommunityToolkit.Mvvm` 的 Source Generator 模式,样板代码极少 - **模块化解耦**:通过 `MediatR` 实现命令 / 事件驱动的 CQRS 风格协作 - **多机台运行时**:每台设备独立维护通信、工位流程、生产状态和会话数据 - **工业通讯抽象**:集成 `HslCommunication`,当前包含 Siemens S7 与简化网口/串口仪表检测 - **Material Design UI**:`MaterialDesignThemes` 现代化界面,内置多皮肤切换 - **生产级持久化**:`Entity Framework Core` + `SQLite`,覆盖生产、报警、审计、权限、MES 和维护数据 - **结构化日志**:`Serilog` 多 Sink 输出(控制台 / 文件),配置驱动 - **插件化扩展**:独立的 `DillonMvvm.Plugins` 可独立打包(`GeneratePackageOnBuild`) - **数据导出**:使用 `NPOI` 和后台任务生成生产及查询文件 - **身份与权限**:游客只读、用户登录、角色与树状权限、操作审计和会话超时 - **MES 可靠投递**:Outbox、重试、DeadLetter、人工重传和断网恢复 - **远程文件交互**:`Renci.SshNet.Async` 支持 SFTP / SSH 远程操作 ## 🛠️ 技术栈 | 分类 | 技术 / 组件 | 版本 | | --- | --- | --- | | 运行时 | .NET (WPF) | 8.0 (net8.0-windows) | | MVVM | CommunityToolkit.Mvvm | 8.4.0 | | UI 主题 | MaterialDesignThemes | 5.2.1 | | 中介者 / CQRS | MediatR | 13.0.0 | | ORM / 数据库 | EF Core SQLite | 8.0.29 | | 日志 | Serilog (Console / File / Hosting) | 4.3.0 | | Excel | NPOI | 2.7.2 | | 工业通讯 | HslCommunication | 12.3.3 | | 远程交互 | Renci.SshNet.Async | 1.4.0 | | 图表 | LiveCharts.Wpf | 0.9.7 | | 主机 / DI | Microsoft.Extensions.Hosting | 9.0.7 | ## 🏗️ 软件架构 项目遵循 DDD 经典分层,由表示层、应用层、领域层、领域核心、基础设施层、控件库与插件层组成。 ``` ┌──────────────────────────────────────────────────────────┐ │ ZaneUpperComputer.App 表示层 / 启动宿主 │ │ Views · ViewModels · Themes · Resources · Common │ └───────┬──────────────────┬───────────────────┬──────────┘ │ │ │ ┌───────▼──────────┐ ┌─────▼──────┐ ┌────────▼─────────┐ │ Application │ │ Controls │ │ DillonMvvm. │ │ 应用层 │ │ 控件库 │ │ Plugins 插件层 │ │ Services/Dtos/ │ │ │ │ │ │ EventHandlers │ │ │ │ │ └───────┬──────────┘ └────────────┘ └──────────────────┘ │ ┌───────▼──────────┐ │ Domain │ 领域层:Entities / EventBus │ Domain.Core │ 领域核心:EntityBases / Repository 抽象 / Communication 抽象 └───────┬──────────┘ │ ┌───────▼──────────┐ │ Infrastructure │ 基础设施层:EF Core / SQLite / 通信 / MES / 日志 │ │ Security / Configuration / Utils └──────────────────┘ ``` **项目依赖关系** | 项目 | 职责 | 依赖 | | --- | --- | --- | | `ZaneUpperComputer.App` | 启动入口、视图与视图模型 | Application、Controls、Infrastructure、Plugins | | `ZaneUpperComputer.Application` | 应用服务、事件处理、DTO | Domain | | `ZaneUpperComputer.Domain` | 领域实体、领域事件 | Domain.Core | | `ZaneUpperComputer.Domain.Core` | 领域抽象基类与接口 | — | | `ZaneUpperComputer.Infrastructure` | EF Core、设备通讯、MES、安全与配置 | Application、Domain.Core、Machines.Common | | `ZaneUpperComputer.Controls` | 通用 WPF 用户控件库 | — | | `DillonMvvm.Plugins` | 可独立打包的插件包 | — | ## 📂 目录结构 ``` ZaneUpperComputer/ ├── ZaneUpperComputer.App/ # 启动项目 (WinExe) │ ├── Common/ # 通用:特性、组件、转换器、事件总线、服务 │ ├── Models/ │ ├── Resources/ # 字体、图片、语言、样式 │ ├── Themes/ # 主题资源 │ ├── ViewModels/ # Dialog / Sub / Work 视图模型 │ └── Views/ # 主窗口及各功能视图 ├── ZaneUpperComputer.Application/ # 应用层 │ ├── Dtos/ │ ├── EventHandlers/ │ └── Services/ ├── ZaneUpperComputer.Domain/ # 领域层 │ ├── Entities/ │ ├── EventBus/ │ └── Extension/ ├── ZaneUpperComputer.Domain.Core/ # 领域核心 │ ├── Communication/ # 通讯抽象 │ ├── EntityBases/ │ ├── EventBus/ │ └── Repository/ # 仓储抽象 ├── ZaneUpperComputer.Infrastructure/ # 基础设施层 │ ├── Common/ # Extension / Utils │ ├── Communication/ # ReaderFactory / ReaderStrategy │ ├── Configuration/ # appsettings / Serilog │ ├── Persistence/ # EF Core、SQLite 与后台任务 │ └── Security/ # 身份认证与权限实现 ├── ZaneUpperComputer.Machines.Common/ # 多机台、PLC、仪表和工位公共契约 ├── ZaneUpperComputer.Machines.HeliumLeak/ # 氦检机型实现 ├── ZaneUpperComputer.Controls/ # 通用控件库 ├── DillonMvvm.Plugins/ # 插件层(可打包为 NuGet) │ ├── Attributes/ │ ├── Extensions/ │ ├── IServices/ │ ├── Models/ │ └── Services/ ├── ZaneUpperComputer.*Tests/ # 架构、机台运行时和持久化测试 └── ZaneUpperComputer.sln ``` ## 🚀 快速开始 ### 环境要求 - **.NET 8.0 SDK** 及以上 - **Visual Studio 2022 (17.8+)** 或 **VS Code**(安装 C# 与 .NET 桌面开发工作负载) - **Windows 10 / 11**(WPF 依赖 Windows 桌面运行时) ### 获取与运行 ```bash # 1. 克隆仓库 git clone https://gitee.com/iamzhouweian/zane-uppercomputer.wpf.git ZaneUpperComputer cd ZaneUpperComputer # 2. 还原依赖 dotnet restore # 3. 编译解决方案 dotnet build # 4. 运行启动项目 dotnet run --project ZaneUpperComputer.App/ZaneUpperComputer.App.csproj ``` > 也可直接使用 Visual Studio 2022 打开 `ZaneUpperComputer.sln`,将 `ZaneUpperComputer.App` 设为启动项目后按 `F5` 运行。 ## ⚙️ 配置说明 运行时配置文件位于 `ZaneUpperComputer.Infrastructure/Configuration/`,构建时会复制到输出目录: | 文件 | 用途 | | --- | --- | | `appsettings.json` | 应用级通用配置 | | `Serilog.json` | Serilog 日志级别与输出 Sink 配置 | 通讯相关参数(设备地址、协议类型等)通过 `ReaderFactory` + `ReaderStrategy` 注入,可按设备类型扩展策略实现。 ## 🧩 主要功能模块 | 模块 | 视图 | 说明 | | --- | --- | --- | | 登录鉴权 | `LoginView` | 用户登录与权限入口 | | 主框架 | `MainWindowView` | 导航与页面承载 | | 生产首页 | `WorkView` | 多机台选择、工位生产记录、设备状态与运行日志 | | 生产数据 | `ProduceView` | 生产记录查询、统计与受控导出 | | 报警中心 | `MonitorView` | 当前/历史报警、确认与导出 | | 设备配置 | `DeviceConfigurationView` | 机台、PLC 与仪表连接参数 | | 平台配置 | `PlatformConfigurationView` | 系统、MES 与日志路径参数 | | 用户与权限 | `SecurityManagementView` | 用户、角色和树状权限管理 | | 系统设置 | `SystemSettingView` | 查询、维护、备份和运行管理入口 | | 主题皮肤 | `SkinView` | 界面主题切换 | | 关于 | `AboutView` | 版本与作者信息 | ## 🤝 参与贡献 1. Fork 本仓库 2. 新建特性分支,如 `feat/xxx` 3. 提交代码(遵循现有代码风格与提交规范) 4. 新建 Pull Request 并描述变更内容 ## 📄 开源许可 本项目基于 [Apache License 2.0](./LICENSE) 开源,转载 / 引用请注明出处。 ## 🙏 致谢 本项目站在以下优秀开源项目的肩膀上,在此致以诚挚感谢: - [CommunityToolkit.Mvvm](https://github.com/CommunityToolkit/Mvvm) - [MaterialDesignThemes](https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit) - [MediatR](https://github.com/jbogard/MediatR) - [Entity Framework Core](https://github.com/dotnet/efcore) - [Serilog](https://github.com/serilog/serilog) - [NPOI](https://github.com/nissl-lab/npoi) - [HslCommunication](https://github.com/dathlin/HslCommunication) - [LiveCharts](https://github.com/Live-Charts/Live-Charts)