浅谈.net core 注入中的三种模式:Singleton、Scoped 和 Transient

转载:https://www.geek-share.com/detail/2766236140.html

(1)Singleton 单一实例模式:单一实例对象对每个对象和每个请求都是相同的,可以说是不同客户端不同请求都是相同的。

(2)Transient 暂时性模式:暂时性对象始终不同,无论是不是同一个请求(同一个请求里的不同服务)同一个客户端,每次都是创建新的实例。

(3)Scoped作用域模式:作用域对象在一个客户端请求中是相同的,但在多个客户端请求中是不同的。(这句是文档的原话,我觉得描述的很清晰)

什么时候用哪种模式?这个不大好说(希望这个可以成为讨论点)

比如一下吧:

1、日志记录器可以实现为单例,因为在整个生命周期内都可以只使用一个实例;

2、数据库访问上下文(DbContext)选择 Scoped 的应该是最佳候选,因为 services.AddDbContext 默认就是 Scoped

 

 

注入模式

同一个请求作用域

不同的请求作用域

AddSingleton 同一个实例 同一个实例
AddScoped 同一个实例 新实例
AddTransient 新实例 新实例
posted @ 2021-01-30 20:55  竹林听雨行  阅读(641)  评论(0编辑  收藏  举报