Skip to content
bitzorcas
中EN

Concept

依赖注入与生命周期:编译期装配与服务治理规范

详解 BitzOrcas.Modern 依赖注入体系:阶段性装配顺序、服务生命周期划分准则(Scoped / Singleton / Transient)、Roslyn 静态注册与 Native AOT 零反射注入。

Last updated

在 .NET 10 Native AOT 约束下,传统的运行时反射扫描(如 services.Scan(...))会导致 AOT 裁剪失败或冷启动缓慢。 BitzOrcas.Modern 采用编译期静态注册 + IAppModule 阶段化装配,确保所有服务在编译期完成依赖图谱解析。

依赖注入分阶段装配全景时序

"4. Minimal API 路由映射 ([GenerateEndpoint])""3. 10 级管道行为 (Mediator Behaviors)""2. 业务模块 (IAppModule 编译期发现)""1. 基础设施核心 (DB / Redis / CAP)""API Host (Program.cs)""4. Minimal API 路由映射 ([GenerateEndpoint])""3. 10 级管道行为 (Mediator Behaviors)""2. 业务模块 (IAppModule 编译期发现)""1. 基础设施核心 (DB / Redis / CAP)""API Host (Program.cs)"1. AddBitzInfrastructure(...) 注册双 ORM 适配器与缓存12. AddBitzModules(...) 调用各模块 IAppModule.ConfigureServices23. AddApplicationPipelines(...) 显式注册 10 级管道顺序34. MapGeneratedEndpoints(...) 静态绑定 Minimal API 路由4

服务生命周期选用黄金准则

生命周期推荐使用场景典型框架服务严禁使用场景
Scoped(作用域,默认首选)绑定当前 HTTP 请求上下文、数据库连接与租户会话IAggregateRepository<T>、ICurrentUser、ICurrentTenant、业务 Handler严禁在 Singleton 单例中直接注入 Scoped 服务(会导致内存泄漏或租户串号)
Singleton(单例)无状态的系统核心引擎、缓存连接池与配置策略IWorkflowEngine、IConnectionMultiplexer、ILicenseValidator严禁保存任何与特定租户或用户相关的状态字段
Transient(瞬态)轻量级、无状态且无内部缓存的纯计算策略或转换器IRequestRule<T>、特定行业费率计算函数涉及昂贵资源(如网络 Socket)初始化的对象

总结

BitzOrcas.Modern 的依赖注入设计杜绝了运行时反射:

  • 静态强类型:编译期分析服务依赖关系,消除隐藏的注入异常;
  • 作用域安全:租户上下文严格限制在 Scoped 生命周期中;
  • AOT 编译友好:零动态 Emit 生成,应用启动毫秒级就绪。

100%

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