在 .NET 10 Native AOT 约束下,传统的运行时反射扫描(如 services.Scan(...))会导致 AOT 裁剪失败或冷启动缓慢。
BitzOrcas.Modern 采用编译期静态注册 + IAppModule 阶段化装配,确保所有服务在编译期完成依赖图谱解析。
依赖注入分阶段装配全景时序
服务生命周期选用黄金准则
| 生命周期 | 推荐使用场景 | 典型框架服务 | 严禁使用场景 |
|---|---|---|---|
| Scoped(作用域,默认首选) | 绑定当前 HTTP 请求上下文、数据库连接与租户会话 | IAggregateRepository<T>、ICurrentUser、ICurrentTenant、业务 Handler | 严禁在 Singleton 单例中直接注入 Scoped 服务(会导致内存泄漏或租户串号) |
| Singleton(单例) | 无状态的系统核心引擎、缓存连接池与配置策略 | IWorkflowEngine、IConnectionMultiplexer、ILicenseValidator | 严禁保存任何与特定租户或用户相关的状态字段 |
| Transient(瞬态) | 轻量级、无状态且无内部缓存的纯计算策略或转换器 | IRequestRule<T>、特定行业费率计算函数 | 涉及昂贵资源(如网络 Socket)初始化的对象 |
总结
BitzOrcas.Modern 的依赖注入设计杜绝了运行时反射:
- 静态强类型:编译期分析服务依赖关系,消除隐藏的注入异常;
- 作用域安全:租户上下文严格限制在 Scoped 生命周期中;
- AOT 编译友好:零动态 Emit 生成,应用启动毫秒级就绪。