网易首页 > 网易号 > 正文 申请入驻

.NET依赖注入三种生命周期:代码实测告诉你区别在哪

0
分享至

周三下午,一个新入职的后端工程师在Code Review时问我:为什么同样的接口,有时候注入的是同一个对象,有时候又不是?这个问题背后,其实是ASP.NET Core依赖注入容器里最基础也最容易踩坑的三个生命周期模式——Singleton、Scoped和Transient。搞懂它们的区别,能帮你避开80%的内存泄漏和并发问题。

我用一段极简代码做了实测,把三种模式的行为差异彻底摊开在桌面上。


测试设计很直接:一个生成随机ID的服务,一个调用两次该服务的控制器,观察实例ID的变化规律。


Singleton(单例模式)——全局唯一

注册方式:builder.Services.AddSingleton();

实测输出显示,三次API请求的实例ID都是178。构造函数只在第一次请求时执行了一次,后续所有请求都复用同一个对象。

这意味着什么?整个应用程序生命周期内,内存中只有一份实例。适合无状态、线程安全的服务,比如配置读取器、缓存管理器。但要小心——如果里面存了请求相关的数据,或者不是线程安全的,就会出大乱子。

Scoped(作用域模式)——请求内单例,请求间隔离

注册方式:builder.Services.AddScoped();

三次请求的实例ID分别是438、674、365。同一个请求内两次调用GetService拿到的是同一个对象,但不同请求之间完全隔离。

这是Web API的默认选择。数据库上下文(DbContext)就是典型场景——一个请求一个连接,请求结束自动释放,既避免了连接池耗尽,又防止了跨请求的数据混乱。

Transient(瞬态模式)——每次新建


注册方式:builder.Services.AddTransient();

输出最直观:同一个请求里两次调用,实例ID分别是794和182,两次都走了构造函数。每次解析都创建新实例,没有任何共享。

适合轻量级、无依赖的服务,或者需要完全隔离状态的场景。代价是GC压力——高频调用时对象创建和销毁的开销不可忽视。

三种模式的核心差异

用一张表说清:

模式实例创建时机共享范围典型风险 Singleton首次解析时全局内存泄漏、线程安全问题 Scoped作用域开始时单个请求跨作用域误用导致数据混乱 Transient每次解析时不共享高频创建的性能开销

实测代码里有个细节值得注意:Scoped模式下,同一个请求内多次解析返回同一实例,这是依赖注入容器自动做的缓存。如果你手动new一个作用域(CreateScope),里面又是另一套隔离规则。

另一个常见坑是服务之间的依赖关系。一个Singleton服务注入了Scoped服务会发生什么?容器会抛异常,因为这会导致Scoped服务被"提升"为事实上的单例,破坏了生命周期约定。

回到开头那个Code Review的问题。代码里混用了不同生命周期的服务,导致某些请求拿到了"脏数据"——前一个请求残留的状态。改成Scoped后问题解决。

依赖注入不是炫技,是管理复杂度的基础设施。选对生命周期,比写一堆线程锁和清理代码更治本。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
3-1放虎归山!上海传3坏消息广厦收3利好,让王博有了翻盘的底气

3-1放虎归山!上海传3坏消息广厦收3利好,让王博有了翻盘的底气

后仰大风车
2026-06-03 07:10:06
今夜,美股跳水!

今夜,美股跳水!

中国基金报
2026-06-04 00:15:43
孙正义重返亚洲首富,软银股价1年暴涨超300%

孙正义重返亚洲首富,软银股价1年暴涨超300%

21世纪经济报道
2026-06-03 22:19:57
15岁少年花14500元买股权“当股东”,妈妈:我儿子说了不算!法院判了

15岁少年花14500元买股权“当股东”,妈妈:我儿子说了不算!法院判了

北青网-北京青年报
2026-06-03 20:51:31
换阵!打泰国女排14人名单出炉,给赵勇的6点建议

换阵!打泰国女排14人名单出炉,给赵勇的6点建议

格斗社
2026-06-04 06:08:05
39岁左右的成熟阿姨这样打扮,看着很有韵味

39岁左右的成熟阿姨这样打扮,看着很有韵味

牛弹琴123456
2026-05-15 16:22:39
她是孙正义长女,3年生3娃,如今父亲成亚洲首富,自己创业当CEO

她是孙正义长女,3年生3娃,如今父亲成亚洲首富,自己创业当CEO

素衣读史
2026-06-03 21:59:16
“第二个朝鲜”出现了?俄罗斯正在养虎为患,真正慌的是巴基斯坦

“第二个朝鲜”出现了?俄罗斯正在养虎为患,真正慌的是巴基斯坦

原来仙女不讲理
2026-06-03 14:49:33
听我一句劝,男人到了七十岁之后,千万别在女人面前做这五件事

听我一句劝,男人到了七十岁之后,千万别在女人面前做这五件事

王二哥老搞笑
2026-06-04 00:58:27
法国特种兵突袭11万吨俄罗斯油轮,不到24小时,普京政府准时断供

法国特种兵突袭11万吨俄罗斯油轮,不到24小时,普京政府准时断供

小小科普员
2026-06-03 14:54:50
最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

最高院:提供 “口交” “肛交”等进入式性服务,是否属卖淫行为?

周军律师聊案子
2026-04-21 09:50:16
女人允许你“看”这里,就是对你动情了,男人千万别错过

女人允许你“看”这里,就是对你动情了,男人千万别错过

那年秋天
2026-05-13 08:26:45
2012年“东莞恶魔”蔡伟落网,审讯时面露微笑:杀女人比杀猪简单

2012年“东莞恶魔”蔡伟落网,审讯时面露微笑:杀女人比杀猪简单

莫地方
2026-06-04 01:50:05
殷桃在深山隐居,5000平米大院子,活成无数人羡慕的模样

殷桃在深山隐居,5000平米大院子,活成无数人羡慕的模样

小椰的奶奶
2026-06-03 10:04:36
外媒上手微软Surface Laptop Ultra:可能是有史以来最好笔记本

外媒上手微软Surface Laptop Ultra:可能是有史以来最好笔记本

IT之家
2026-06-03 11:29:07
35岁陈学冬近况曝光,现身奚梦瑶婚礼,面部微肿胀,已做三年手术

35岁陈学冬近况曝光,现身奚梦瑶婚礼,面部微肿胀,已做三年手术

白宸侃片
2026-06-04 01:56:27
柬埔寨揭水泥封井双尸案 两中国人涉案一人落网

柬埔寨揭水泥封井双尸案 两中国人涉案一人落网

环球趣闻分享
2026-06-03 15:34:37
逛山姆是托举后续!宝妈痛哭道歉,全家信息被扒,孩子不敢上学

逛山姆是托举后续!宝妈痛哭道歉,全家信息被扒,孩子不敢上学

街上的行人很刺眼
2026-06-03 08:18:20
将对阵俄罗斯19岁少女!23岁乌克兰名将哭了:她每天竟然能睡得着

将对阵俄罗斯19岁少女!23岁乌克兰名将哭了:她每天竟然能睡得着

风过乡
2026-06-03 08:05:21
敲定个人协议!皇马 1.2 亿草签恩佐 穆帅携4大新援亮相

敲定个人协议!皇马 1.2 亿草签恩佐 穆帅携4大新援亮相

球事百科吖
2026-06-03 17:32:43
2026-06-04 06:43:00
报错免疫体
报错免疫体
一名在需求评审和数据异常中反复横跳的产品运营。
4560文章数 33关注度
往期回顾 全部

科技要闻

传DeepSeek融资意向500亿:腾讯投100亿

头条要闻

男子不想上班辞职后上武当山当道士 8个月后选择下山

头条要闻

男子不想上班辞职后上武当山当道士 8个月后选择下山

体育要闻

选择中国品牌的库里,和他们的巨大野心

娱乐要闻

官方痛批乱象 刘涛郑恺等艺人遭点名

财经要闻

AI,开始偷懒了?

汽车要闻

专访蒋平:安全不做高低配 长安要让安全技术普惠

态度原创

手机
教育
数码
公开课
军事航空

手机要闻

小米18系列不装了,标准版接近中屏,Pro系列有独占新技术!

教育要闻

江苏航空职业技术学院:值得填报吗?热门专业就业现状及报考分析#搜索千校视频计划

数码要闻

高通CEO安蒙:“2026年是智能体之年”,Token成AI新货币

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

媒体:美伊和谈以方却从中作梗 内塔尼亚胡有私人算计

无障碍浏览 进入关怀版