Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Reference

ADR-0003:不使用 Provider Factory(已废弃)

已被 ADR-0005 取代的 Provider Factory 决策记录。

Last updated
  • 状态:已废弃(被 ADR-0005 取代)
  • 日期:2026-06

背景

多厂商场景需要一种机制让消费方选择具体的 Provider。

原始决策

不使用 Factory 模式,改用 TryAddSingleton<TCapability, TProvider> 注册——首个注册的 Provider 胜出。

废弃原因

  • 直接注入共享接口时只有首个 Provider 可见。
  • IEnumerable<T> 不能恢复被 TryAdd 丢弃的实现。
  • 运行时按租户、地区或业务线选择 Provider 没有统一入口。
  • Singleton Provider 会捕获 typed/factory HttpClient,形成错误生命周期。
  • 包存在、接口实现和真实可用能力之间没有可查询的事实源。

替代方案

ADR-0005 引入 IntegrationProviderDescriptor + IIntegrationProviderCatalog + IIntegrationProviderResolver<T>,解决了上述全部问题。

相关

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%