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