问题域/PD-388

服务注册与依赖注入

Service Registry & Dependency Injection

通过IoC容器管理服务生命周期,支持多种服务发现和依赖自动注入

子问题

1.服务发现机制

2.依赖拓扑排序

3.生命周期管理

4.热插拔替换

5.双轨兼容:新旧注册系统并存的路由决策

6.关键服务保护:防止插件覆盖信任根服务

各项目的解法1 solutions

Signals

横向对比

维度Langflow
注册方式三源:@register_service 装饰器 + lfx.toml 配置 + Entry Points
依赖解析双轨:新系统 inspect.signature 自动推断 + 旧系统 get_type_hints 显式声明
生命周期懒初始化 + async teardown 逐服务关闭 + ready 状态标记
线程安全双重检查锁单例 + KeyedMemoryLockManager 按服务类型加锁
接口契约8 个 Protocol 接口 + runtime_checkable,消费者只依赖协议
保护机制SettingsService 不可被插件覆盖,始终使用内置 Factory

最佳实践

1.支持多种注册方式(装饰器/配置/Entry Points)

2.inspect.signature 自动推断依赖,减少手动声明样板代码

3.Protocol 接口契约实现框架层与应用层的依赖反转