4.4 KiB
4.4 KiB
软件开发文档 - 设备管理系统 (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。
- 定义核心的业务领域模型(Domain Models),如
- 包含内容:
Models/: 存放领域模型类。Enums/: 存放核心业务相关的枚举。Interfaces/: 存放仓储库和领域服务的接口定义。Exceptions/: 存放自定义的业务异常。
2.2. DMS.Application - 应用层
负责编排和协调领域对象以完成具体的业务用例。
- 职责:
- 实现具体的应用服务(Use Cases),如“添加新设备”、“更新变量值”。
- 定义数据传输对象(DTOs),用于在表现层和应用层之间传递数据。
- 处理事务和授权等应用级关注点。
- 包含内容:
Services/: 存放应用服务的实现。DTOs/: 存放数据传输对象。Interfaces/: 存放应用服务的接口。
2.3. DMS.Infrastructure - 基础设施层
提供所有与外部世界交互的技术实现。
- 职责:
- 实现
DMS.Core中定义的仓储接口,负责与数据库进行交互(使用SqlSugarORM)。 - 实现与其他外部系统的集成,如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. 项目依赖关系图
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