我试图在 ASP.NET Core 中的 DI 上下文中理解单例生存期。
首先,据我所知,单一实例将"在应用程序生命周期内"可用。但是,"应用程序生存期"是什么意思?如果是网站,并且用户登录,则首先创建单例,用户注销并在几个小时后返回站点并重新登录,该用户是否会获得相同的单例实例?多个用户呢?多个用户可以获取同一个单一实例吗?
其次,应用程序生存期何时在 .NET Core 中结束?大多数文章都讨论如何注册应用程序关闭事件。但是,是什么触发了应用程序关闭?是否总是外部事件,如 IISreset 或系统关闭?还是内存崩溃等内部事件?如果没有重置或内存或任何其他问题,它会永远持续下去吗?
这里的单例(即不是单例设计模式(表示创建的根IServiceProvider
的单个实例,因此实际上单个实例将用于所有请求,直到进程退出。
它与每个请求或会话无关。如果希望每个请求都有一个新实例,但已共享,请使用作用域生存期。