Files
DMS/软件设计文档/原始文档/00-项目总体设计与依赖.md

75 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 软件开发文档 - 00. 项目总体设计与依赖
本文档是整个项目的顶层设计定义了项目结构、职责划分以及每个项目所需的NuGet包依赖。
## 1. 项目结构与职责 (修订版)
| 项目名 | 核心职责 | 关键内容 |
| ---------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `DMS.Core` | **领域核心**:定义业务规则和数据结构,不依赖任何具体技术实现。是整个系统的稳定内核。 | 领域模型 (`Device`, `Variable`)、业务枚举、仓储接口 (`IDeviceRepository`)、自定义业务异常。 |
| `DMS.Application` | **应用服务**编排领域模型完成业务用例Use Case处理事务、DTO转换。是UI层与核心层的桥梁。 | 应用服务 (`DeviceAppService`)、数据传输对象 (DTOs)、应用层接口、AutoMapper配置。 |
| `DMS.Infrastructure` | **基础设施**:提供所有外部技术的具体实现,如数据库访问、协议通信、日志记录等。负责实现核心层的接口。 | 数据库实体、SqlSugar仓储实现、S7/MQTT通信服务、NLog日志服务、数据处理链的具体处理器。 |
| `DMS.WPF` | **表现层**提供用户界面UI采用MVVM模式。负责用户交互、数据显示和请求派发。 | 视图 (Views)、视图模型 (ViewModels)、UI服务导航、对话框、依赖注入容器配置、程序入口。 |
## 2. NuGet包依赖清单
以下是每个项目必须安装的NuGet包请严格按照此清单进行安装。
### 2.1. `DMS.Core`
此项目应保持纯净,**不安装任何第三方NuGet包**,以确保其独立性。
### 2.2. `DMS.Application`
| 包名 | 用途 |
| ----------------------------------- | -------------------------------------------------------------------- |
| `AutoMapper` | 用于在领域模型和DTO之间进行自动对象映射。 |
| `AutoMapper.Extensions.Microsoft.DependencyInjection` | 将AutoMapper与依赖注入容器集成。 |
### 2.3. `DMS.Infrastructure`
| 包名 | 用途 |
| ----------------------------------- | -------------------------------------------------------------------- |
| `SqlSugarCore` | 强大的ORM框架用于数据库操作。 |
| `S7netplus` | 用于与Siemens S7系列PLC进行通信。 |
| `MQTTnet` | 高性能的.NET MQTT客户端库用于数据发布。 |
| `MQTTnet.Extensions.ManagedClient` | 提供了更稳定的托管MQTT客户端支持自动重连。 |
| `NLog` | 灵活的日志记录框架。 |
| `NLog.Extensions.Logging` | 将NLog与Microsoft的通用日志抽象集成。 |
| `Microsoft.Extensions.Caching.Memory` | 提供内存缓存功能,用于实现变量值变化检测。 |
### 2.4. `DMS.WPF`
| 包名 | 用途 |
| ----------------------------------------- | -------------------------------------------------------------------- |
| `Microsoft.Extensions.DependencyInjection` | 官方依赖注入框架,用于管理整个应用的生命周期和依赖关系。 |
| `CommunityToolkit.Mvvm` | 官方MVVM工具包提供`ObservableObject`, `RelayCommand`极大简化MVVM开发。 |
| `HandyControls` | 一套美观且功能强大的WPF UI控件库用于构建现代化界面如对话框、通知。 |
| `NLog.Extensions.Logging` | 用于在WPF项目中配置和使用NLog。 |
| `Microsoft.Xaml.Behaviors.Wpf` | 提供事件到命令的绑定等行为支持是MVVM的有力补充。 |
## 3. 开发环境初始化命令示例
您可以使用 `dotnet` CLI 快速创建项目并添加包:
```bash
# 创建解决方案和项目
dotnet new sln -n DMS
dotnet new classlib -n DMS.Core
dotnet new classlib -n DMS.Application
dotnet new classlib -n DMS.Infrastructure
dotnet new wpf -n DMS.WPF
# 将项目添加到解决方案
dotnet sln add ./**/*.csproj
# 为DMS.Application添加包
dotnet add DMS.Application package AutoMapper
# ...其他包
# 添加项目引用
dotnet add DMS.Application reference DMS.Core
dotnet add DMS.Infrastructure reference DMS.Application
dotnet add DMS.WPF reference DMS.Infrastructure
```