简单介绍下三个常用的生命周期
Transient:每一次GetService都会创建一个新的实例
Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)
Singleton:整个应用程序生命周期内只创建一个实例 。
使用场景
Singleton 通常用于全局单个实例。例如,你将拥有一个图像存储服务,你可以拥有一个从给定位置加载图像并将它们保存在内存中以备将来使用的服务。一些内存缓存,你可能会从磁盘读取一些图像或数据到redis,这个动作在应用程序运行期间不会改变。
范围生命周期表示每个客户端请求创建一次服务。通常我们将它用于 sql 连接。这意味着它将为每个请求创建和处理 sql 连接。
每次从服务容器请求服务时都会创建一个短暂的生命周期服务。例如,在一次请求中,你使用 httpclient 服务多次调用其他 web api 请求,但 web api 端点不同。届时,你将 httpclient 服务注册为瞬态。这意味着每次调用 httpclient 服务时,它都会创建一个新的 httpclient 来发送未使用过的请求。