IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
不准确理解:DI就是IOC的一种具体实现
那么在.net 平台,或者说c#开发使用的容器有哪些呢?
先看看微软自己的玩意
1.Unity
这个是比较官方的,可以说是微软比较早的,不断更新也是使用多的。
2.ServiceCollection
需要引入Microsoft.Extensions.DependencyInjection
其实有这2个玩意的存在,主要是微软的平台开发有几个团队,现在与我们开发相关的有原来的.net framework,.net core还有微软的云服务团队,另外asp.net core也好像是专门开发的。所以几个团队都开发的有自己的东西。
当前情况下,微软必定有些相同的东西,用在不同开发平台(或者是库)。
再看看其它使用的
3.Autofac
根据了解的情况,我感觉这款应该是使用最多的,至于使用就不多说了,但是根据资料,并不是最强的,当然我没有测试过.
方便易用。
4.Ninject
这也是一款使用较多,比较稳定的容器。
5.Spring.NET
使用并不多,来自Java的spring的转换,当然是成熟稳定的
6.TinyIoC
简单易用,小项目推荐
7.StructureMap
个人感觉是比较高效的
8.Simple Injector
简单易用
总体讲,没有特别必要,还是使用大家都在使用的Autofac