Files
DMS/软件设计文档/00-项目总体设计.md

104 lines
4.4 KiB
Markdown
Raw Normal View History

2025-07-20 23:09:47 +08:00
# 软件开发文档 - 设备管理系统 (DMS)
## 1. 引言
### 1.1. 项目概述
本文档旨在详细阐述设备管理系统DMS的设计与实现方案。该系统是一个用于管理、监控和数据采集的综合平台核心功能包括
* **多协议设备支持**:能够管理和监控多种通信协议(如 Siemens S7、OPC UA、Modbus的设备。
* **层级化设备模型**:支持“设备 -> 变量表 -> 变量”的层级结构化管理。
* **灵活的数据转发**变量数据在采集后可配置转发至一个或多个MQTT服务器。
* **实时数据处理**:通过链式处理器对采集到的原始数据进行清洗、计算和转换。
* **历史数据存储**:将处理后的数据存入数据库,用于历史追溯和分析。
* **现代化的用户界面**基于WPF框架提供直观、响应迅速的操作界面。
### 1.2. 设计原则
* **分层架构 (Layered Architecture)**:采用经典的洋葱架构思想,将项目分为`核心(Core)``应用(Application)``基础设施(Infrastructure)``表现(Presentation)`四层,实现高内聚、低耦合。
* **依赖倒置原则 (DIP)**:高层模块不依赖于低层模块的具体实现,而是依赖于抽象(接口)。接口定义在核心层,具体实现在基础设施层。
* **单一职责原则 (SRP)**:每个类和模块都只负责一项功能。
* **可扩展性**:系统设计应易于扩展,例如,未来可以方便地增加新的通信协议或数据处理器。
## 2. 项目结构设计
系统将由以下四个主要项目组成,以实现关注点分离。
### 2.1. `DMS.Core` - 核心层
这是整个系统的核心,不依赖于任何外部框架或技术。
* **职责**:
* 定义核心的业务领域模型Domain Models`Device`, `VariableTable`, `Variable`, `MqttServer`
* 定义业务规则和逻辑。
* 定义仓储库Repositories和领域服务的接口`IDeviceRepository`, `IVariableRepository`
* **包含内容**:
* `Models/`: 存放领域模型类。
* `Enums/`: 存放核心业务相关的枚举。
* `Interfaces/`: 存放仓储库和领域服务的接口定义。
* `Exceptions/`: 存放自定义的业务异常。
### 2.2. `DMS.Application` - 应用层
负责编排和协调领域对象以完成具体的业务用例。
* **职责**:
* 实现具体的应用服务Use Cases如“添加新设备”、“更新变量值”。
* 定义数据传输对象DTOs用于在表现层和应用层之间传递数据。
* 处理事务和授权等应用级关注点。
* **包含内容**:
* `Services/`: 存放应用服务的实现。
* `DTOs/`: 存放数据传输对象。
* `Interfaces/`: 存放应用服务的接口。
### 2.3. `DMS.Infrastructure` - 基础设施层
提供所有与外部世界交互的技术实现。
* **职责**:
* 实现 `DMS.Core` 中定义的仓储接口,负责与数据库进行交互(使用 `SqlSugar` ORM
* 实现与其他外部系统的集成如S7协议通信、MQTT客户端、日志记录NLog等。
* 管理数据库连接、迁移和配置。
* **包含内容**:
* `Data/`: 包含 `DbContext` 和数据库初始化逻辑。
* `Repositories/`: 仓储接口的具体实现。
* `Services/`: 存放与基础设施相关的服务实现如S7通信服务、MQTT发布服务
* `Entities/`: 数据库表对应的实体类。
### 2.4. `DMS.WPF` - 表现层
用户界面UI负责与用户交互和数据显示。
* **职责**:
* 提供用户操作界面。
* 显示来自应用层的数据。
* 将用户的操作请求发送给应用层。
* **包含内容**:
* `Views/`: XAML窗口和用户控件。
* `ViewModels/`: 视图模型MVVM模式
* `Services/`: UI相关的服务如导航、对话框和通知服务。
* `App.xaml.cs`: 程序启动和依赖注入DI容器的配置。
### 2.5. 项目依赖关系图
```mermaid
graph TD
subgraph 表现层
DMS.WPF
end
subgraph 应用层
DMS.Application
end
subgraph 核心层
DMS.Core
end
subgraph 基础设施层
DMS.Infrastructure
end
DMS.WPF --> DMS.Application
DMS.Application --> DMS.Core
DMS.Infrastructure --> DMS.Application
DMS.Infrastructure --> DMS.Core
```