【发布时间】:2019-03-17 09:05:21
【问题描述】:
我在
上找到了一篇文章https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.1
它解释了 asp.net 核心 DI 和服务生命周期。
文章提到以下生命周期:
- 瞬态
- 范围
- 单例
我试图找到一个真实世界的例子,或者至少是一个关于何时使用每个生命周期的更好解释。
【问题讨论】:
-
我们使用 Autofac 等效的“Scoped”作为我们的用户上下文对象。我们在这里缓存所有权限检查结果,以便我们可以减少数据库的负载。用户上下文对象的生命周期与 Web 请求的生命周期相同。我们将“Singleton”用于特殊的工厂服务,因为它们为应用程序的生命周期而存在,我们将“瞬态”用于工厂生产的东西、不应该为应用程序生命周期的服务等。
-
transient - 不存储状态; scoped - 存储请求生命周期的状态;单例 - 存储应用程序生命周期的状态
标签: c# asp.net asp.net-core dependency-injection