ASP.NET 中 AddTransient AddScoped AddSingleton 的区别
Sep 24, 2021
在 .NET
中依赖注入有三种生命周期:
Singleton
在程序运行时只创建一个对象实例. 它会在第一次使用该对象时创建, 之后的所有请求获取的都是同一个对象. 由于单例是全局存在的, 如果这种Service
里面发生了内存泄漏, 会影响到整个程序.Scoped
我们称ASP.NET
每一个请求创建了一个scope
, 因此对于Scoped
生命周期会在当前请求生效. 即每一个请求都会创建一个新的实例, 但是在一个请求中所有实例都相同. 适用于一个请求中保存状态.Transient
在每次获取实例时都创建一个新的实例. 所以它会占用比较多的内存和资源, 对性能产生影响. 只适合无状态的轻量级的Service
.