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;
  • 相关阅读:
    GetHub下载不成功
    Cache 判断Ip几分钟内攻击次数
    .net 通过Url获取站点json数据
    Linq 读取Xml 数据
    ef Linq 自定义字段列表
    面试的心得
    触发器--单独字段变化另一个字段也变化
    Ajax跨域 取值 Jsonp的定义注意事项
    asp.net里,各种下载方式汇总
    c# 获取硬件信息
  • 原文地址:https://www.cnblogs.com/sandea/p/3289935.html
Copyright © 2011-2022 走看看