zoukankan      html  css  js  c++  java
  • AutoFac文档6(转载)

    目录

    1. 开始
    2. Registering components
    3. 控制作用域和生命周期
    4. 用模块结构化Autofac
    5. xml配置
    6. 与.net集成
    7. 深入理解Autofac
    8. 指导
    9. 关于
    10. 词汇表

    实例生命周期

    实例生命周期决定的在同一个服务的每个请求中实例是如何共享的。

    当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用域) 或者在某种上下文环境中的单例。比如 一个线程 或者一个HTTP请求 (per lifetime 作用域)。

    这条规则适用于显示调用Resolve从容器中检索对象或者容器中为了满足依赖而隐式实现的对象。

    更深入的探讨请参考an Autofac Lifetime Primer.

    Per Dependency

    在其他容器中也称作瞬态或者工厂,使用Per Dependency作用域,服务对于每次请求都会返回单独的实例。

    在没有指定其他参数的情况下,这是默认是作用域。

     
    1
    2
    3
    4
    5
    builder.RegisterType<X>();
     
    // or
     
    builder.RegisterType<X>().InstancePerDependency();

    Single Instance

    使用Single Instance作用域,所有对父容器或者嵌套容器的请求都会返回同一个实例。

     
    1
    builder.RegisterType<X>().SingleInstance();

    Per Lifetime Scope

    这个作用域适用于嵌套的生命周期。一个使用Per Lifetime 作用域的component在一个 nested lifetime scope内最多有一个实例。

    当对象特定于一个工作单元时,这个非常有用。比如,一个HTTP请求,每一个工作单元都会创建一个nested lifetime,如果在每一次HTTP请求中创建一个nested lifetime,那么其他使用 per-lifetime 的component在每次HTTP请求中只会拥有一个实例。

    这种配置模型在其他容器中等价于per-HTTP-request, per-thread等。

     
    1
    builder.RegisterType<X>().InstancePerLifetimeScope();

    的ASP.NET和WCF集成中,每一次web请求或者方法调用,InstancePerLifetimeScope会被默认附加到component上

    上下文的

    上下文作用域和per-lifetime作用域类似,但是对可见性提供更多显示的控制。

    在大多数程序中,同一层次的容器嵌套代表一个工作单元,如果需要多层嵌套(例如global->request->transation),可以使用标签确保component在多层结构中的某一层共享。

     
    1
    builder.RegisterType<X>().InstancePerMatchingLifetimeScope(MyContextHierarchy.UserSession);

    提供的标签和生命周期作用域是对应的。

     
    1
    2
    var userSessionLifetime = container.BeginLifetimeScope();
    userSessionLifetime.Tag = MyContextHierarchy.UserSession;
  • 相关阅读:
    记录:将图片数据生成 tfrecords 文件并在训练使用时读取
    记录:EM 算法估计混合高斯模型参数
    记录:Ubuntu 18.04 安装 tensorflow-gpu 版本
    记录:tf.saved_model 模块的简单使用(TensorFlow 模型存储与恢复)
    记录:TensorFlow 中的 padding 方式
    mybatis list映射
    idea使用插件mybatis-generator-plus生成mapper文件(mysql亲测可用)
    Element-UI树形表格
    Mysql5.7版本ERROR 1055问题
    为DISTINCT、GROUP BY和ORDER BY效率问题提提速
  • 原文地址:https://www.cnblogs.com/sandea/p/3289935.html
Copyright © 2011-2022 走看看