Autofac一个令人着迷的.NET IoC 容器
-
Autofac管理类之间的依赖关系。当应用程序的规模和复杂性随着时间不断增长时,也能易于更改。这是通过将常规 .NET 类视为组件来实现的。
将 Autofac 集成到我们的应用程序的基本模式是:时刻牢记用控制反转(IOC)来构建我们的应用程序。最后需要添加Autofac引用。
在应用程序启动时:首先需要创建一个ContainerBuilder。之后进行注册组件。并且需要构建容器并将其存储以备后用。
在应用程序执行期间:首先从容器创建一个生命周期范围。并使用生命周期范围来解析(resolve)组件的实例。
控制反转背后的思想是:与其将应用程序中的类捆绑在一起,让类“新建”它们的依赖关系,不如在类构造期间把依赖项传递进来,如果每次传递的依赖项不相同,则可以随时切换依赖关系并调用相应的依赖项的实现。
在实际中,我们将定义一个将当前时间写出的类。但是,我们不希望将它绑定到Console,因为我们希望能够稍后测试该类,或者在控制台不可用的地方使用它。我们将尽可能地把写出时间的机制抽象化,因为如果我们以后想把它变成一个写出明天日期的程序版本,那么就可以快速实现该功能。
容器本身就是一个生命周期范围,从技术上讲,我们可以直接从容器中解决问题。但是,这种方法一般情况下非常不建议直接使用从容器解析。当我们解析一个组件时,根据我们定义的实例范围,会创建该对象的一个新实例。简单来说解析一个组件大致相当于调用“new”来实例化一个类。这真的真的过于简单化了,但从类比的角度来看,这个比较很恰当。一些组件可能需要被释放,好比说它们实现了IDisposable一样——Autofac可以在生命周期范围被释放时自动为我们处理那些组件的释放。
相反,如果我们从容器创建一个子生命周期范围并从中解析。当我们完成组件解析后,Autofac会帮我们自动释放子作用域并为清理所有内容。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏