ASP.Net Core 使用啥依赖注入框架?

Posted

技术标签:

【中文标题】ASP.Net Core 使用啥依赖注入框架?【英文标题】:What Dependency Injection Framework Does ASP.Net Core Use?ASP.Net Core 使用什么依赖注入框架? 【发布时间】:2017-08-31 19:27:30 【问题描述】:

我开始涉足ASP.Net Core,发现依赖注入是ASP.Net Core框架中的一等公民,而且它是内置的,可用于注入各种服务和库。

我想知道他们使用的是哪个依赖注入框架。他们的文档Introduction to Dependency Injection in ASP.NET Core

ASP.NET Core 的设计初衷就是支持和利用依赖注入。 ASP.NET Core 应用程序可以通过将内置框架服务注入到 Startup 类的方法中来利用它们,并且应用程序服务也可以配置为进行注入

他们是从头开始编写自己的吗?或者他们是否重用了现有的开源依赖注入框架。如果有,是哪一个?

问这个问题的原因,除了天生的好奇,也是我想在我的.Net 4.6.1. ASP.Net Web 中使用他们在 ASP.Net Core 中使用的相同框架API 应用程序。

因为我发现大多数 DI 框架都非常缓慢和臃肿,即使是 Unity

相比之下,ASP.Net CORE DI 框架似乎非常快速和精简。

【问题讨论】:

【参考方案1】:

.NET Core 是开源的,所以我们可以自己检查一下。基础仓库位于:

https://github.com/dotnet/corefx

ASP.NET Core 存储库位于:

https://github.com/aspnet/home

转到“DependencyInjection”回购 (https://github.com/aspnet/DependencyInjection) 并在我们找到的源中向下导航https://github.com/aspnet/DependencyInjection/blob/dev/src/Microsoft.Extensions.DependencyInjection/ServiceProvider.cs

通读那个文件,它确实看起来像一个 DI 容器。可以公平地说,Microsoft 编写了自己的代码,尽管根据 Dependency Injection repo 中的文档,他们也支持使用现有的。

【讨论】:

他们自己写的,并且特别选择不给它自己的名字。它只是“ASP.NET Core 中的内置服务容器”。

以上是关于ASP.Net Core 使用啥依赖注入框架?的主要内容,如果未能解决你的问题,请参考以下文章

[ASP.NET Core 3框架揭秘] 依赖注入:一个Mini版的依赖注入框架

ASP.NET Core 依赖注入基本用法

《ASP.NET Core 6框架揭秘》实例演示[04]:自定义依赖注入框架

ASP.NET Core:IOCDI,即依赖注入和控制反转

ASP.NET Core 依赖注入(DI)

ASP.NET Core依赖注入高级玩法——如何注入多个服务实现类