CORDIS / SERVICE RESOLUTION
同一个 fs 名称,会找到谁?
改变服务域与提供条件,比较共享、等待和分别提供的结果。
A、B 继承默认标签,选择同一条实现记录
普通 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
β 中查找失败,不会回退到 α。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消费者 Bfs 标签βαget('fs')BranchFsRootFs主体状态ACTIVEACTIVE
查看实现依据与读图条件
vendor/cordis/src/reflect.ts:277 · context.ts:121
消费者仅依赖 fs,提供者的 ACTIVE 与消费者初始化成功均按当前视角给定;PENDING 时消费者主体尚未运行。RootFs、BranchFs、SharedFs 是示意名称,不是实测实例或默认配置类名。
两个分支显式使用同一个 Symbol γ
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 名称共同标识消费者。