asp.net core 何时使用瞬态、范围和单例

简单介绍下三个常用的生命周期

Transient:每一次GetService都会创建一个新的实例

Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)

Singleton:整个应用程序生命周期内只创建一个实例 。

使用场景

Singleton 通常用于全局单个实例。例如,你将拥有一个图像存储服务,你可以拥有一个从给定位置加载图像并将它们保存在内存中以备将来使用的服务。一些内存缓存,你可能会从磁盘读取一些图像或数据到redis,这个动作在应用程序运行期间不会改变。

范围生命周期表示每个客户端请求创建一次服务。通常我们将它用于 sql 连接。这意味着它将为每个请求创建和处理 sql 连接。

每次从服务容器请求服务时都会创建一个短暂的生命周期服务。例如,在一次请求中,你使用 httpclient 服务多次调用其他 web api 请求,但 web api 端点不同。届时,你将 httpclient 服务注册为瞬态。这意味着每次调用 httpclient 服务时,它都会创建一个新的 httpclient 来发送未使用过的请求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值