对三种依赖注入生命周期的理解

参考文档:
https://www.yoyomooc.com/yoyomooc/aspnet-core-for-beginners-Dependency-Injection

AddSingleton()

文档中:
AddSingleton()方法创建一个Singleton服务。首次请求时会创建Singleton服务。然后,所有后续请求都使用相同的实例。因此,通常,每个应用程序只创建一次Singleton服务,并且在整个应用程序生命周期中使用该单个实例。

个人理解:每个项目跑起来之后,一旦生命周期为Singleton的服务被创建出来,就一直使用这一个,直到项目被停止运行或者删除,这个服务就被销毁。

AddTransient()

文档中:
AddTransient() 方法可以称作:暂时性模式,会创建一个 Transient 服务。每次请求时,都会创建一个新的 Transient 服务实例。

个人理解:用户的每一个HTTP请求,使用到了一个生命周期为Transient的服务,这个服务就被创建一次,使用完成后销毁。

AddScoped()

文档中:
AddScoped()方法创建一个 Scoped 服务。在范围内的每个请求中创建一个新的 Scoped 服务实例。例如,在 Web 应用程序中,它为每个 http 请求创建 1 个实例,但在同一 Web 请求中的其他调用中使用相同的实例,在一个客户端请求中是相同的,但在多个客户端请求中是不同的。

个人理解:客户端A使用该软件时,使用生命周期为Scoped的服务,只创建一次,客户端A结束Web访问后被销毁。客户端A与客户端B同时使用该服务时,是创建的两个服务,并不共用一个。

因为我的开发经验很少,对这几种生命周期基本没有自己的理解,如果我理解错了,希望朋友们可以在评论区中提醒我,谢谢大家。后续我有更正确的理解或者更详细的理解,会补充在博客中。

猜你喜欢

转载自www.cnblogs.com/Kit-L/p/13183714.html
今日推荐