我使用 Autofac 一段时间了,我发现它在运行时动态解析服务以及 LifetimeScope 功能方面非常有用。此外,我发现 Autofac 模块为 DI 注册服务比在启动/扩展中注册服务更简洁。现在我将一些项目从.net-core-3.1迁移到net6,发现
IServiceProvider
能够在运行时动态解析服务。此外,由于 IServiceProvider
包裹 IServiceScopeFactory
,它也能够创建一次性瞄准镜。我使用的依赖项很少,必须像 MassTransit 一样通过 IServiceCollection
注册。在这种情况下,我认为坚持使用一个 IoC 容器从长远来看是有好处的。
我应该完全删除 Autofac 并坚持使用 IServiceCollection 吗?
尝试查阅许多官方文档。只是想从这两种方法中找到最好的解决方案。
您是否见过这个问题:AutoFac 比 Microsoft.Extensions.DependencyInjection 更好吗??
虽然
Microsoft.Extensions.DependencyInjection
是对 .NET 平台的巨大改进,并且在每个新版本中仍然有所改进(如您所见),但 Autofac 是一个旧产品,具有许多非常好的功能,但 MS 本机解决方案尚不支持这些功能.
此外,您可能还会考虑对现有代码库和习惯 Autofac 的开发人员的支持。
对于一个全新的项目,如果
Microsoft.Extensions.DependencyInjection
具有您需要的所有功能,我认为您可以选择它。它工作得很好并且是本机的,因此每个 .NET 开发人员至少应该了解它,而不是特定的 DI 框架。但是,如果您需要 Autofac 的特定功能(抱歉,没有提供全面的比较,但您可能可以找到一些,并且我上面发布的答案链接已经给您提供了一些想法),它仍然是一个非常相关且强大的解决方案,可能会继续受到支持很长一段时间。