生命周期有三种模式:瞬时(Transient)、作用域(Scoped)、单例(Singleton)
「瞬时,就是没有生存期。」
也就是说,每次从依赖注入系统中获取瞬时的服务实例时,都会创建一个全新的对象。
依赖注入系统中的服务容器不会保存它,也就是没有生存权的普通对象。
「单例,就是会一直存在,与应用同寿。」
也就是说,第一次从依赖注入系统中获取单例的服务实例时,才会创建一个全新的对象。
依赖注入系统中的服务容器会保存它,之后的每次使用都是直接从容器中获取它,也就是高贵的单例对象。
「作用域,理解起来没有那么直观,需要结合场景来说明。」
比如,在 ASP.NET 的应用中,每一个来自外部的请求,都可以理解为是一个请求作用域。不同的请求,就是不同的请求作用域。
在同一个请求作用域中,获取作用域模式的服务实例与单例模式的服务实例,具有同样的表现。
也就是说,第一次从依赖注入系统中获取服务实例时,才会创建一个全新的对象。
依赖注入系统会在服务容器中为该作用域开个单间,单独保存该对象。
当请求结束时,请求作用域会被销毁,单间自然也就没了,其中保存的对象也会随之销毁。
所以,在这种模式中生存的对象实例,都只作用于自己的域范围,不同的域不会互相干涉。
由此可见,服务一旦有了生命周期,那么依赖注入系统就可以根据需求,来保存和管理它们的实例。
学习链接:https://www.dongchuanmin.com/net/2009.html
标签:依赖,服务,请求,实例,作用域,生命周期,单例 From: https://www.cnblogs.com/zjh2003/p/18260131