前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解.NET Core 依赖注入生命周期

详解.NET Core 依赖注入生命周期

作者头像
心莱科技雪雁
发布2020-05-11 11:24:31
1.7K0
发布2020-05-11 11:24:31
举报
文章被收录于专栏:雪雁的专栏雪雁的专栏

前言

.NET Core 自带依赖注入框架,支持三种不同生命周期的注入模式:

  • Singleton 单例模式
  • Scoped 区域模式
  • Transient 瞬时模式

但是常常不知道什么时候使用哪种模式才最合适,接下来我就用代码详细解读一下三种模式

代码示例

首先新建.NET Core API项目来进行代码测试

分别新建 Scoped、Singleton、Transient 三种模式的服务与接口,里面写一个GetIndex() 方法获取index ,用来区别服务的生命周期。

三个服务代码都是如此,然后添加依赖注入

最后在控制器中天加测试方法

使用 [FromService] 特性注入服务,每次服务注入两次,用来区别服务的变化,输出服务的index,启动项目查看结果

上图可以看到单例和区域模式下,两次注入的服务index是叠加的,可以说明两次服务注入的都是同一个。而瞬时模式两次注入的服务index都是初始值,也就说明两次服务都是新的。然后我们不停止项目在执行一次方法

可以看到单列模式和区域模式有了不同,单例模式注入的服务,index值一直在叠加,而区域模式有重新从0开始叠加。

总结

结合以上示例可以清楚的分别三种模式的差别

  • Singleton 单例模式,服务在第一次请求时被创建,其后的每次请求都沿用这个已创建的服务。
  • Scoped 作用域模式,服务在每次请求时被创建,整个请求过程中都贯穿使用这个创建的服务。
  • Transient     瞬态模式,服务在每次请求时被创建
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麦扣聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 代码示例
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档