- Create MigrationTool console app for exporting DB config to K8s YAML - Support dry-run mode and validation - Add Npgsql and YamlDotNet dependencies
2.0 KiB
2.0 KiB
计划 006-01 总结:插件加载基础设施
执行状态:✅ 已完成
完成的任务
Task 1: PluginLoadContext 隔离机制
- ✅ 创建
src/yarpgateway/Plugins/PluginLoadContext.cs - ✅ 实现可卸载的 AssemblyLoadContext
- ✅ 支持共享契约程序集(使用默认 ALC)
- ✅ 创建单元测试
PluginLoadContextTests.cs
Task 2: PluginLoader 发现和加载逻辑
- ✅ 创建
src/yarpgateway/Plugins/PluginLoader.cs - ✅ 实现插件发现(从目录扫描 plugin.json)
- ✅ 实现影子复制(支持热重载)
- ✅ 创建
DiscoveredPlugin.cs和PluginMetadata.cs - ✅ 创建单元测试
PluginLoaderTests.cs
Task 3: PluginHost 生命周期管理
- ✅ 创建
src/yarpgateway/Plugins/PluginHost.cs - ✅ 实现
PluginHandle.cs封装 ALC 和插件实例 - ✅ 支持加载/卸载/重载插件
- ✅ 提供 WeakReference 卸载验证
- ✅ 创建单元测试
PluginHostTests.cs
实现的文件
| 文件 | 描述 |
|---|---|
src/yarpgateway/Plugins/PluginLoadContext.cs |
ALC 隔离机制 |
src/yarpgateway/Plugins/PluginLoader.cs |
插件发现和加载 |
src/yarpgateway/Plugins/PluginHost.cs |
生命周期管理 |
tests/YarpGateway.Tests/Unit/Plugins/PluginLoadContextTests.cs |
隔离测试 |
tests/YarpGateway.Tests/Unit/Plugins/PluginLoaderTests.cs |
加载测试 |
tests/YarpGateway.Tests/Unit/Plugins/PluginHostTests.cs |
生命周期测试 |
测试结果
dotnet test --filter "FullyQualifiedName~Plugin"
已通过! - 失败: 0,通过: 15,总计: 15
验证
- ✅ 构建通过:
dotnet build src/yarpgateway/YarpGateway.csproj- 0 错误 - ✅ 所有单元测试通过
- ✅ 插件可在独立 AssemblyLoadContext 中加载
- ✅ 插件可通过 WeakReference 验证卸载
- ✅ 支持动态发现和加载插件
后续计划
阶段 6 还需完成:
- PLUG-03:插件隔离与生命周期管理(已实现基础设施)
- YARP 集成:将插件集成到 YARP 管道