48 lines
3.3 KiB
Markdown
48 lines
3.3 KiB
Markdown
# 项目概述:DMS (Device Management System - 设备管理系统)
|
||
|
||
此目录包含了设备管理系统 (DMS) 的源代码,这是一个基于 C#/.NET 8 构建的应用程序。该系统主要由一个用于用户界面的 WPF 桌面应用程序组成,后端采用分层架构,包括 Core(核心)、Application(应用)和 Infrastructure(基础设施)项目。此外,还为基础设施层和 WPF 层配备了专门的单元测试项目。
|
||
|
||
项目自述文件中提到的一个重要特性是 OPC UA 服务实现,表明该系统是为工业设备通信和管理而设计的。
|
||
|
||
## 项目结构
|
||
|
||
解决方案 (`DMS.sln`) 由几个关键项目组成:
|
||
|
||
* **`DMS.Core`**: 包含基础的、可复用的组件和共享模型。可能包括实用工具、通用数据传输对象 (DTOs) 以及核心业务逻辑抽象。它引用了 `Microsoft.Extensions.Logging.Abstractions`、`Newtonsoft.Json` 和 `NLog`。
|
||
* **`DMS.Application`**: 实现应用特定的业务逻辑。它依赖于 `DMS.Core`,并使用 `AutoMapper`(用于对象映射)和 `Microsoft.Extensions`(用于托管和日志记录抽象)等库。
|
||
* **`DMS.Infrastructure`**: 处理数据访问、外部集成和技术实现。它引用了 `DMS.Core` 和 `DMS.Application`。关键依赖包括:
|
||
* `SqlSugarCore`:用于数据库交互(MySQL)。
|
||
* `MQTTnet`:用于 MQTT 协议通信。
|
||
* `OPCFoundation.NetStandard.Opc.Ua`:用于 OPC UA 通信。
|
||
* `S7netplus`:用于西门子 S7 PLC 通信。
|
||
* `NPOI`:用于读写 Excel 文件。
|
||
* `AutoMapper.Extensions.Microsoft.DependencyInjection`:用于 AutoMapper 的依赖注入设置。
|
||
* **`DMS.WPF`**:主 WPF 桌面应用程序。它以 `net8.0-windows` 为目标,并使用 WPF 特定的库,如 `CommunityToolkit.Mvvm`、`HandyControl`(UI 工具包)、`Hardcodet.NotifyIcon.Wpf`(系统托盘图标)和 `iNKORE.UI.WPF.Modern`(现代 UI 样式)。它依赖于 `DMS.Application` 和 `DMS.Infrastructure`。
|
||
* **`DMS.Infrastructure.UnitTests`**:针对 `DMS.Infrastructure` 项目的单元测试。使用 `xunit`、`Moq`、`Bogus`(用于伪造数据)和 `Microsoft.NET.Test.Sdk`。
|
||
* **`DMS.WPF.UnitTests`**:针对 `DMS.WPF` 项目的单元测试。同样使用 `xunit`、`Moq` 和 `Bogus`。
|
||
|
||
## 构建与运行
|
||
|
||
这是一个 .NET 8 解决方案。您需要安装 .NET 8 SDK 以及 Visual Studio 或 JetBrains Rider 等 IDE 来构建和运行它。
|
||
|
||
**构建:**
|
||
在解决方案目录下使用标准 .NET CLI 命令:
|
||
`dotnet build`
|
||
|
||
**运行:**
|
||
主可执行文件是 WPF 应用程序 (`DMS.WPF`)。您可以使用以下命令运行它:
|
||
`dotnet run --project DMS.WPF`
|
||
|
||
**测试:**
|
||
单元测试包含在 `DMS.Infrastructure.UnitTests` 和 `DMS.WPF.UnitTests` 中。
|
||
使用以下命令运行所有测试:
|
||
`dotnet test`
|
||
|
||
## 开发规范
|
||
|
||
* **语言与框架:** C# 配合 .NET 8。
|
||
* **架构:** 分层架构(Core, Application, Infrastructure)配合 WPF 表现层。
|
||
* **UI 模式:** MVVM(Model-View-ViewModel),由 `CommunityToolkit.Mvvm` 支持。
|
||
* **依赖注入 (DI):** 使用 Microsoft.Extensions.DependencyInjection,在 `DMS.WPF` 项目中进行配置。
|
||
* **日志记录:** 使用 NLog 进行日志记录,配置文件位于 `DMS.WPF\Configurations\nlog.config`。
|
||
* **对象映射:** 使用 AutoMapper 进行对象到对象的映射。 |