生命周期

生命周期有三种模式:瞬时(Transient)、作用域(Scoped)、单例(Singleton)

「瞬时,就是没有生存期。」

也就是说,每次从依赖注入系统中获取瞬时的服务实例时,都会创建一个全新的对象。

依赖注入系统中的服务容器不会保存它,也就是没有生存权的普通对象。

「单例,就是会一直存在,与应用同寿。」

也就是说,第一次从依赖注入系统中获取单例的服务实例时,才会创建一个全新的对象。

依赖注入系统中的服务容器会保存它,之后的每次使用都是直接从容器中获取它,也就是高贵的单例对象。

「作用域,理解起来没有那么直观,需要结合场景来说明。」

比如,在 ASP.NET 的应用中,每一个来自外部的请求,都可以理解为是一个请求作用域。不同的请求,就是不同的请求作用域。

在同一个请求作用域中,获取作用域模式的服务实例与单例模式的服务实例,具有同样的表现。

也就是说,第一次从依赖注入系统中获取服务实例时,才会创建一个全新的对象。

依赖注入系统会在服务容器中为该作用域开个单间,单独保存该对象。

当请求结束时,请求作用域会被销毁,单间自然也就没了,其中保存的对象也会随之销毁。

所以,在这种模式中生存的对象实例,都只作用于自己的域范围,不同的域不会互相干涉。

由此可见,服务一旦有了生命周期,那么依赖注入系统就可以根据需求,来保存和管理它们的实例。

摘抄链接:https://www.dongchuanmin.com/net/2009.html

posted @ 2024-06-21 19:14  芝士Hugh  阅读(3)  评论(0编辑  收藏  举报