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

2.6 KiB
Raw Blame History

技术选型

所属模块:架构概览


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 包依赖

<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>