mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
1.5 KiB
1.5 KiB
Plugin Process Isolation
Why
现有插件体系仍是“同进程 + AssemblyLoadContext 隔离”,无法阻止插件 fatal crash 拖垮 Host,也无法阻止插件直接访问 Host 进程内对象和内存。
What Changes
- 增加插件运行模式概念:
in-proc、isolated-background、isolated-window - 一期落地
isolated-background - 新建独立 IPC 契约包和 IPC 封装包
- 在
PluginSdk中新增 Worker 入口与runtime.mode - 明确隔离模式下不再兼容对象实例共享型 API
- 新增正式架构文档说明 UI 方案、迁移策略、残余风险和 ClassIsland 借鉴
Impact
LanMountainDesktop.PluginSdk/LanMountainDesktop.PluginTemplate/- 新增
LanMountainDesktop.PluginIsolation.Contracts/ - 新增
LanMountainDesktop.PluginIsolation.Ipc/ docs/ARCHITECTURE.mddocs/PLUGIN_PROCESS_ISOLATION_ARCHITECTURE.md
Requirements
Requirement 1
宿主必须同时支持存量 in-proc 插件与未来的隔离插件,不得以本次改造打断旧插件加载。
Requirement 2
隔离插件的 Host/Worker 通信必须基于显式 IPC 路由和 DTO,而不是 Host 服务对象实例共享。
Requirement 3
一期必须把后台逻辑隔离为独立 Worker 进程,并显式记录 Host UI 壳层的残余风险。
Requirement 4
仓库文档必须把 ClassIsland IPC 的借鉴点和不照搬的部分写清楚,避免后续实现阶段误把插件协议做成远程对象模型。