Autofac 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Autofac 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 MIT
开发语言 C# .NET
操作系统 Windows
软件类型 开源软件
开发厂商
地区 不详
提 交 者 红薯
适用人群 未知
收录时间 2010-04-26

软件简介

Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成。

Autofac的主要特性如下:

  1. 灵活的组件实例化:Autofac支持自动装配,给定的组件类型Autofac自动选择使用构造函数注入或者属性注入,Autofac还 可以基于lambda表达式创建实例,这使得容器非常灵活,很容易和其他的组件集成。 var defaultLog = new ConsoleLog();  builder.Register(c => new Connection(){ Log = c.ResolveOptional<ILog>() ?? defaultLog });大家知道lambda表达式并不是 在声明的时候的执行的,只有等到容器的Resolve()方法调用的时候,表达式才执行。表达式还有一个好处是不需要使用反射或者是使用XML语法来表 达。
  2. 资源管理的可视性:基于依赖注入容器构建的应用程序的动态性,意味着什么时候应该处理那些资源有点困难。Autofac通过跟踪特 定作用域内的实例和依赖来解决这个问题(DeterministicDisposal)。IDisposable接口接口是把双刃剑,既是一个老孙手上 的金箍棒,也是老孙头上的魔咒,有一种明确的方式告诉那一部分应该被清理,但是一个组件要何时处理并不是很容易确定的事情,比如说一个服务可以有多个实现 的时候就变得很糟糕,组件的创建上(GOF的创建型设计模式)有的是通过工厂方式创建的,有的是单件方式创建的,有些需要被清理,有些却不需要清理。组件 的使用者无法知道是否把转换为IDisposable接口调用它的Disposal方法。Autofac通过容器来跟踪组件的资源管理。对于不需要清理的 对象,例如Console.Out,我们调用ExternallyOwned()方法告诉容器不用清理。细粒度的组件生命周期管理:应用程序中通常可以存 在一个应用程序范围的容器实例,在应用程序中还存在大量的一个请求的范围的对象,例如一个HTTP请求,一个IIS工作者线程或者用户的会话结束时结束。 通过嵌套的容器实例和对象的作用域使得资源的可视化。
  3. Autofac的设计上非常务实,这方面更多是为我们这些容器的使用者考虑:
  • 组件侵入性为零:组件不需要去引用Autofac。
  • 灵活的模块化系统:通过模块化组织你的程序,应用程序不用纠缠于复 杂的XML配置系统或者是配置参数。
  • 自动装配:可以是用lambda表达式注册你的组件,autofac会根据需要选择构造函数或者属 性注入
  • XML配置文件的支持:XML配置文件过度使用时很丑陋,但是在发布的时候通常非常有用
  • 组件的多服务支持:许 多设计师喜欢使用细粒度的接口来控制依赖 , autofac允许一个组件提供多个服务。
展开阅读全文

评论 (0)

加载中
更多评论
发表了资讯
2010/04/26 00:00

Autofac正式发布2.1版,IoC依赖注入容器

经过了2年多的开发,设计和试验,Autofac发布了第二版,针对1.4版本进行了重组,提供了更好的开发体验,你可以到这里下载正式的版本。 2.1版本也带来许 多新特性: 组件发现:Autofac 2可以从一个程序集的注册类型设置根据用户指定的规则: var dataAccess = Assembly.GetExecutingAssembly(); builder.RegisterAssembly...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2016/02/25 22:07

Autofac

Autofac、Autofac、Autofac!好的东西要说三遍。 这东西干嘛用? 用于自动注入。 啥注入?注水猪肉么? 这要扯到控制反转(Inversion of Control,IoC),依赖注入(DI)等。其实控制反转、依赖注入都是面向接口编程的同一类概念。 何谓控制反转? 以前我们要使用一个对象,是这样的: Class1 obj = new Class1(); 面向接...

0
0
发表了博客
2018/02/18 10:41

AutoFac简介

在.NET上现在存在许多的依赖注入容器, 如:Castle Windsor、StructureMap、Autofac 、Unity。 这里主要介绍一下Autofac,Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成。Autofac的主要特性如下: 1)灵活的组件实例化:Autofac支持自动装配...

0
0
发表了博客
2018/09/05 09:54

IOC-AutoFac

学习过程中参考博客: AutoFac文档:http://www.cnblogs.com/wolegequ/archive/2012/06/09/2543487.html AutoFac使用方法总结:Part I:http://niuyi.github.io/blog/2012/04/06/autofac-by-unit-test/ 为什么使用AutoFac? Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个: 优点: 它是C#语言联系很紧密...

0
0
发表了博客
2018/01/11 11:05

AutoFac - 将 autofac 应用于MVC多层项目

一、前言   AutoFac是.NET平台下的一款著名的IoC Container,它可以让我们很轻松的解除项目中服务类的接口与客户类的接口实现类之间的依赖关系,从而降低系统各模块之间耦合程度以提高系统的稳定性。最近在做毕业设计,在开发中采用了autofac来进行依赖注入,这里是对踩到的一些坑的解决方法,希望可以给同样不幸进入这...

0
0
发表了博客
2018/08/24 17:12

AutoFac

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace FB.CMS.MvcSite.App_Start { using Autofac; using Autofac.Integration.Mvc; using System.Reflection; using System.Web.Mvc; /// <summary> /// 这个类是我自己定义的一个...

0
0
发表了博客
2019/04/10 10:10

Autofac总结

介绍|术语 控制反转:IOC和DI IOC 调用者不再创建(不自己new)被调用者的实例,而是交给容器去创建(AutoFac就充当这里的容器),这就是控制反转 控制反转中引入的第三方对象,通过Ioc容器将对象与对象的关系进行解耦,对象的创建与维护让渡给第三方容器 Ioc容器负责维护对象与对象之间的关系,并负责对象的创建和对象生命周...

0
0
发表于软件架构专区
2018/10/09 09:59

net core Autofac

参考: https://autofaccn.readthedocs.io/zh/latest/integration/aspnetcore.html https://www.cnblogs.com/Andre/p/9604759.html...

0
0
发表了博客
2018/06/21 17:16

An Autofac Lifetime Primer

Or, “Avoiding Memory Leaks in Managed Composition” Understanding lifetime can be pretty tough when you’re new to IoC. Even long-time users express vague fears and misgivings when it comes to this subject, and disconcerting issues – components not being disposed, steadily climbing memory usag...

0
0
发表了博客
2019/04/23 23:07

Autofac使用

创建用例类 创建接口 namespace MyIBLL { public interface IUserBLL { void AddUser(string name, string pass); } } 一个类 namespace MyBLL { public class UserBLL:IUserBLL { public void AddUser(string name, string pass) { Console.WriteLine($"新增...

0
0
发表于服务端专区
01/02 17:24

.net core 集成 autofac

1. Install Install-Package AutofacInstall-Package Autofac.Extensions.DependencyInjection 2.Startup 2.1 增加成員 public IContainer ApplicationContainer { get; private set; } 2.2 Startup.ConfigureSe......

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2014/04/10 08:34

请推荐在.net平台IoC框架?

3
0
发表了问答
2013/05/28 10:04

Autofac 自动注册, 程序池回收后注册类型丢失?

自动注册后发现一个严重的问题, 程序池回收后注册类型就丢失了. // Autofac 初始化 var baseType = typeof(IDependency); var assemblys = AppDomain.CurrentDomain.GetAssemblies().AsParallel().ToList(); var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(assemblys.ToArray()) ....

2
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
31 收藏
分享
返回顶部
顶部