|
|
@@ -0,0 +1,88 @@
|
|
|
+# MeloongCore 项目架构
|
|
|
+
|
|
|
+[返回 MeloongCore 仓库指示](../仓库指示.md)
|
|
|
+
|
|
|
+## 1. 项目定位
|
|
|
+
|
|
|
+`MeloongCore/Shared/MeloongCore.csproj` 是通用 C# 基础库,目标框架为 .NET Standard 2.0,使用 C# 13、Nullable、Implicit Usings 和 PolySharp。
|
|
|
+
|
|
|
+它属于独立 Git 仓库,不应依赖具体上层应用或 WPF。其目标是为 Windows、macOS 及不同上层应用提供一致的基础能力。
|
|
|
+
|
|
|
+## 2. 目录结构
|
|
|
+
|
|
|
+```text
|
|
|
+MeloongCore/Shared/
|
|
|
+├─ Main.cs # 库初始化与应用名
|
|
|
+├─ Extensions/ # 集合、字符串、异常、任务和网络扩展
|
|
|
+├─ General/
|
|
|
+│ ├─ Config.cs # JSON 配置抽象
|
|
|
+│ ├─ Logger.cs # 日志抽象
|
|
|
+│ ├─ Progress.cs # 进度模型
|
|
|
+│ ├─ Worker/ # 限流与可重做 Worker
|
|
|
+│ └─ 其他通用数据结构
|
|
|
+└─ Utils/ # 文件、目录、路径、任务、网络、加密等工具
|
|
|
+```
|
|
|
+
|
|
|
+## 3. 主要能力
|
|
|
+
|
|
|
+### 3.1 文件与路径
|
|
|
+
|
|
|
+`FileUtils`、`DirectoryUtils` 和 `PathUtils` 封装文件读写、压缩包、目录遍历、路径标准化和父子关系判断,供不同上层应用复用。
|
|
|
+
|
|
|
+### 3.2 异步与 Worker
|
|
|
+
|
|
|
+- `TaskUtils` 提供程序执行、并发遍历、聚合等待等通用任务能力;
|
|
|
+- `ProgressProvider` 支持切分与聚合子进度;
|
|
|
+- `RateLimitedWorker` 合并或限制高频调用;
|
|
|
+- `RedoableWorker` 管理可重做的异步工作。
|
|
|
+
|
|
|
+上层应用可以按需使用这些抽象组织异步任务与进度。
|
|
|
+
|
|
|
+### 3.3 配置
|
|
|
+
|
|
|
+`IConfigProvider` 定义读、写、删除、缓存丢弃等能力。默认 `JsonConfigProvider`:
|
|
|
+
|
|
|
+- 从 JSON 文件惰性读取;
|
|
|
+- 缓存反序列化后的值;
|
|
|
+- 通过 Worker 延迟 500 ms 合并写盘;
|
|
|
+- 使用 `ConfigEntry<T>` 提供固定 provider 的强类型配置;
|
|
|
+- 使用 `DynamicConfigEntry<T>` 支持运行时选择 provider。
|
|
|
+
|
|
|
+默认配置位于应用数据目录的 `config.json`,敏感配置 provider 指向 `secret.json`。加密写入目前仍有未实现分支,使用前需要核对现状。
|
|
|
+
|
|
|
+### 3.4 日志与通用类型
|
|
|
+
|
|
|
+库提供可替换的 Logger、并发列表、OneOf、值范围、数学和字符串工具等。上层应用可以替换 Logger 实例,将底层日志接入自身日志系统。
|
|
|
+
|
|
|
+## 4. 依赖
|
|
|
+
|
|
|
+- `Microsoft.Win32.Registry`:跨目标框架暴露注册表能力;
|
|
|
+- `Newtonsoft.Json`:配置与 JSON 工具;
|
|
|
+- `ThrottleDebounce`:限流/防抖基础;
|
|
|
+- `PolySharp`:为旧运行目标补足现代 C# 编译支持。
|
|
|
+
|
|
|
+## 5. 架构边界
|
|
|
+
|
|
|
+适合放入 MeloongCore 的代码应满足:
|
|
|
+
|
|
|
+- 不依赖具体上层应用的页面、全局状态或业务领域;
|
|
|
+- 不直接依赖 WPF 类型;
|
|
|
+- API 对其他 .NET 应用也有合理含义;
|
|
|
+- Windows 专属能力被清楚隔离,不阻塞 macOS 使用通用部分。
|
|
|
+
|
|
|
+WPF 特有实现应进入 `MeloongCore.Wpf`,上层应用特有实现应保留在对应应用仓库中。
|
|
|
+
|
|
|
+## 6. 优势与风险
|
|
|
+
|
|
|
+优势:
|
|
|
+
|
|
|
+- 目标框架和依赖方向支持跨项目复用;
|
|
|
+- 工具与配置已有对应测试;
|
|
|
+- 现代 C# API 提高了新代码的类型安全和可读性。
|
|
|
+
|
|
|
+风险:
|
|
|
+
|
|
|
+- 通用工具类较多,新增 API 时容易形成重复或过宽的职责;
|
|
|
+- 注册表等 Windows 能力出现在 Shared 中,需要保持调用层面的平台防护;
|
|
|
+- `JsonConfigProvider` 加密写入尚未实现完整;
|
|
|
+- 作为公共依赖修改时,需要考虑已有引用方的兼容性和独立发布节奏。
|