Files
WCTDataMiner/docs/architecture/技术选型.md
ssss 28cb2533a7 docs: 完善数据模型设计
- 重命名 log_file 为 test_scenario(测试场景)
- 拆分维度表:tx_panel、tx_hardware、tx_software、rx_type
- 采用星型模型设计,消除数据冗余
- 为所有表添加软删除字段 is_deleted
- 更新关系说明,包含全局查询过滤器配置
- 更新 ER 图和查询示例

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 15:53:30 +08:00

58 lines
2.6 KiB
Markdown
Raw 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.
# 技术选型
> 所属模块:[架构概览](./概览.md)
---
## 1. 技术栈总览
| 层级 | 技术选型 | 版本 | 选型理由 |
|------|----------|------|----------|
| 运行时 | .NET | 8.0 LTS | 长期支持版本,性能优秀,跨平台 |
| 语言 | C# | 12.0 | 强类型、现代语法、优秀的正则表达式支持 |
| ORM | Entity Framework Core | 8.0 | .NET 标准 ORMCode First 支持LINQ 查询 |
| 数据库 | SQLite / PostgreSQL | - | SQLite 适合单机PostgreSQL 适合多用户并发 |
| 日志框架 | Serilog | 4.0+ | 结构化日志,多种 Sink 支持 |
| 配置管理 | Microsoft.Extensions.Configuration | - | 强类型配置,支持 JSON/环境变量 |
| CLI 框架 | System.CommandLine | 2.0-beta4 | 官方 CLI 库,参数解析完善 |
| 正则表达式 | System.Text.RegularExpressions | - | .NET 原生支持,编译正则高效 |
---
## 2. 技术决策记录
| # | 决策点 | 选择 | 备选方案 | 决策理由 |
|---|--------|------|----------|----------|
| 1 | .NET 版本 | .NET 8.0 LTS | .NET 9.0 | LTS 版本稳定,企业级应用首选 |
| 2 | 数据库选择 | SQLite当前/ PostgreSQL后续 | SQL Server | 初期单机使用 SQLite后续可切换 PostgreSQL |
| 3 | 解析模式 | 批处理 | 流式处理 | 日志文件是静态文件,批处理更合适 |
| 4 | 数据格式 | 结构化存储 | 原始存储 + 计算 | 解析后存储便于后续分析 |
| 5 | ORM 模式 | Code First | Database First | 便于版本控制,迁移自动化 |
| 6 | 数据库切换 | 抽象 DbContext 工厂 | 硬编码连接 | 支持配置切换数据库类型 |
---
## 3. NuGet 包依赖
```xml
<ItemGroup>
<!-- ORM -->
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" />
<!-- CLI -->
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<!-- 配置 -->
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<!-- 日志 -->
<PackageReference Include="Serilog" Version="4.0.0" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
</ItemGroup>
```