zoukankan      html  css  js  c++  java
  • 浅谈.net core 注入中的三种模式:Singleton、Scoped 和 Transient

    转载:https://www.geek-share.com/detail/2766236140.html

    (1)Singleton 单一实例模式:单一实例对象对每个对象和每个请求都是相同的,可以说是不同客户端不同请求都是相同的。

    (2)Transient 暂时性模式:暂时性对象始终不同,无论是不是同一个请求(同一个请求里的不同服务)同一个客户端,每次都是创建新的实例。

    (3)Scoped作用域模式:作用域对象在一个客户端请求中是相同的,但在多个客户端请求中是不同的。(这句是文档的原话,我觉得描述的很清晰)

    什么时候用哪种模式?这个不大好说(希望这个可以成为讨论点)

    比如一下吧:

    1、日志记录器可以实现为单例,因为在整个生命周期内都可以只使用一个实例;

    2、数据库访问上下文(DbContext)选择 Scoped 的应该是最佳候选,因为 services.AddDbContext 默认就是 Scoped

    注入模式

    同一个请求作用域

    不同的请求作用域

    AddSingleton 同一个实例 同一个实例
    AddScoped 同一个实例 新实例
    AddTransient 新实例 新实例
  • 相关阅读:
    Flink
    数据工程师
    数据库中间件
    数据仓库
    数据库
    设计模式
    机器学习
    Collections
    Concurrency
    Java
  • 原文地址:https://www.cnblogs.com/cxxtreasure/p/14350470.html
Copyright © 2011-2022 走看看