三种服务生命周期
没问题,咱们先把这两个基础且关键的知识点讲透,这也是.NET依赖注入高频考点,后续项目中也会经常用到:
一、三种服务生命周期(AddScoped/AddSingleton/AddTransient)的核心区别
本质是服务实例的创建时机和复用规则不同,直接影响内存占用和数据一致性,用实际场景理解更清晰:
注册方式 实例创建规则 典型使用场景 
AddSingleton 程序启动后创建1个实例,全局复用(直到程序关闭) 无状态的工具类(如日志工厂、配置读取类)、全局唯一的资源(如数据库连接池) 
AddScoped 每次HTTP请求(或“作用域”)内创建1个实例,同一请求内复用,不同请求重新创建 有状态的业务类(如用户上下文、单次请求的事务处理类) 
AddTransient 每次获取服务(如GetService<T>()、构造函数注入)时,都创建新实例 轻量级、无复用必要的类(如临时数据验证类、单次使用的工具方法封装类) 
举个直观例子:
如果用AddSingleton注册“用户信息类”,会导致所有用户共享同一个实例——A用户的信息会被B用户看到,直接出数据安全问题;而用AddScoped,每个用户的请求会单独创建实例,就不会有这个问题。
