什么时候应该使用 AddSingleTon,什么时候应该使用 AddScoped 和什么时候应该使用 AddTransient

时间:2021-06-24 11:42:58

标签: asp.net-core .net-core

请举例说明什么时候应该使用 AddSingleTon,什么时候应该使用 AddScoped,什么时候应该使用 AddTransient。

2 个答案:

答案 0 :(得分:0)

据我所知,Singleton 通常用于全局单一实例。例如,您将拥有一个图像存储服务,您可以拥有一个从给定位置加载图像并将它们保存在内存中以备将来使用的服务。

范围生命周期表示每个客户端请求创建一次服务。通常我们将它用于 sql 连接。这意味着它将创建和处理每个请求的 sql 连接。

每次从服务容器请求服务时都会创建一个短暂的生命周期服务。例如,在一次请求中,您使用 httpclient 服务多次调用其他 web api 请求,但 web api 端点不同。届时,您将 httpclient 服务注册为瞬态。这意味着每次调用 httpclient 服务时,它都会创建一个新的 httpclient 来发送不同的请求。

答案 1 :(得分:0)

Transient — 每次请求服务时都会创建服务。它会根据该对象的每个请求获取注入对象的新实例。每次注入这个对象在类中注入时,都会创建一个新的实例。

Scoped — 针对每个请求创建服务(每个请求一次)。最推荐用于 WEB 应用程序。因此,例如,如果在请求期间您使用相同的依赖注入,在许多地方,您将使用该对象的相同实例,它将引用相同的内存分配。

Singleton — 服务在应用程序的生命周期内创建一次。它对整个应用程序使用相同的实例。