# 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)快速开发框架**
[](https://dotnet.microsoft.com/)
[](https://learn.microsoft.com/dotnet/desktop/wpf/)
[](./LICENSE)
[](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)