CORDIS / SERVICE RESOLUTION

同一个 fs 名称,会找到谁?

改变服务域与提供条件,比较共享、等待和分别提供的结果。

选择条件 · 支持方向键

A、B 继承默认标签,选择同一条实现记录

同域共享时的 fs 服务解析A、B 继承默认标签,选择同一条实现记录;假设消费者仅依赖 fs,标签决定查找哪条实现。消费方:已声明 fs 依赖同一 root 的服务实现槽查找 α查找 α消费者 Afs → αinject: ['fs']消费者 Bfs → αinject: ['fs']默认域 αfs: RootFs提供者 ACTIVE标签对应一条底层实现α、β、γ 代表 Symbol 身份,不是标签的打印文本。
同域共享时的 fs 服务解析A、B 继承默认标签,选择同一条实现记录;假设消费者仅依赖 fs,标签决定查找哪条实现。消费者 Context · 同一 root服务实现槽αα消费者 Afs → αinject: ['fs']消费者 Bfs → αinject: ['fs']默认域 αfs: RootFs提供者 ACTIVE标签对应一条底层实现

普通 extend() 没有更换 fs 的域标签;两个消费者使用同一提供者。

推演条件消费者 A消费者 Bfs 标签ααget('fs')RootFsRootFs主体状态ACTIVEACTIVE
查看实现依据与读图条件

vendor/cordis/src/context.ts:99 · reflect.ts:237
消费者仅依赖 fs,提供者的 ACTIVE 与消费者初始化成功均按当前视角给定;PENDING 时消费者主体尚未运行。RootFs、BranchFs、SharedFs 是示意名称,不是实测实例或默认配置类名。

A 换到 β,但 β 尚未提供 fs

隔离后缺失时的 fs 服务解析A 换到 β,但 β 尚未提供 fs;假设消费者仅依赖 fs,标签决定查找哪条实现。消费方:已声明 fs 依赖同一 root 的服务实现槽查找 β查找 α消费者 Afs → βinject: ['fs']消费者 Bfs → αinject: ['fs']私有域 β尚无 fs 实现实现缺失 · EMPTY默认域 αfs: RootFs提供者 ACTIVEα、β、γ 代表 Symbol 身份,不是标签的打印文本。
隔离后缺失时的 fs 服务解析A 换到 β,但 β 尚未提供 fs;假设消费者仅依赖 fs,标签决定查找哪条实现。消费者 Context · 同一 root服务实现槽βα消费者 Afs → βinject: ['fs']消费者 Bfs → αinject: ['fs']私有域 β尚无 fs 实现实现缺失 · EMPTY默认域 αfs: RootFs提供者 ACTIVE

β 中查找失败,不会回退到 α。A 的插件主体等待,B 继续使用默认提供者。

推演条件消费者 A消费者 Bfs 标签βαget('fs')undefinedRootFs主体状态PENDINGACTIVE
查看实现依据与读图条件

vendor/cordis/src/context.ts:121 · fiber.ts:597
消费者仅依赖 fs,提供者的 ACTIVE 与消费者初始化成功均按当前视角给定;PENDING 时消费者主体尚未运行。RootFs、BranchFs、SharedFs 是示意名称,不是实测实例或默认配置类名。

A、B 使用不同标签,各有自己的提供者

隔离后提供时的 fs 服务解析A、B 使用不同标签,各有自己的提供者;假设消费者仅依赖 fs,标签决定查找哪条实现。消费方:已声明 fs 依赖同一 root 的服务实现槽查找 β查找 α消费者 Afs → βinject: ['fs']消费者 Bfs → αinject: ['fs']私有域 βfs: BranchFs提供者 ACTIVE默认域 αfs: RootFs提供者 ACTIVEα、β、γ 代表 Symbol 身份,不是标签的打印文本。
隔离后提供时的 fs 服务解析A、B 使用不同标签,各有自己的提供者;假设消费者仅依赖 fs,标签决定查找哪条实现。消费者 Context · 同一 root服务实现槽βα消费者 Afs → βinject: ['fs']消费者 Bfs → αinject: ['fs']私有域 βfs: BranchFs提供者 ACTIVE默认域 αfs: RootFs提供者 ACTIVE

两份 fs 注册在不同域;同一域内再次提供同名服务仍会冲突。

推演条件消费者 A消费者 Bfs 标签βαget('fs')BranchFsRootFs主体状态ACTIVEACTIVE
查看实现依据与读图条件

vendor/cordis/src/reflect.ts:277 · context.ts:121
消费者仅依赖 fs,提供者的 ACTIVE 与消费者初始化成功均按当前视角给定;PENDING 时消费者主体尚未运行。RootFs、BranchFs、SharedFs 是示意名称,不是实测实例或默认配置类名。

两个分支显式使用同一个 Symbol γ

同 label 连通时的 fs 服务解析两个分支显式使用同一个 Symbol γ;假设消费者仅依赖 fs,标签决定查找哪条实现。消费方:已声明 fs 依赖同一 root 的服务实现槽查找 γ查找 γ消费者 Afs → γinject: ['fs']消费者 Bfs → γinject: ['fs']共享域 γfs: SharedFs提供者 ACTIVE标签对应一条底层实现α、β、γ 代表 Symbol 身份,不是标签的打印文本。
同 label 连通时的 fs 服务解析两个分支显式使用同一个 Symbol γ;假设消费者仅依赖 fs,标签决定查找哪条实现。消费者 Context · 同一 root服务实现槽γγ消费者 Afs → γinject: ['fs']消费者 Bfs → γinject: ['fs']共享域 γfs: SharedFs提供者 ACTIVE标签对应一条底层实现

A、B 接入同一 γ 域。默认 α 的提供者未参与此图;同描述的两个 Symbol 不等于同一个标签。

推演条件消费者 A消费者 Bfs 标签γγget('fs')SharedFsSharedFs主体状态ACTIVEACTIVE
查看实现依据与读图条件

vendor/cordis/src/context.ts:121 · loader/src/config/isolate.ts:71
消费者仅依赖 fs,提供者的 ACTIVE 与消费者初始化成功均按当前视角给定;PENDING 时消费者主体尚未运行。RootFs、BranchFs、SharedFs 是示意名称,不是实测实例或默认配置类名。

α、β、γ 表示 Symbol 身份。实线查找已有实现,虚线指向缺失位置;颜色与 A/B 名称共同标识消费者。

基线 d7432673 · 静态源码关系推演,无运行采样。服务域不代表独立进程或安全沙箱;打印时显示四种条件。