深入理解ASP.NET 5的依赖注入
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)
题记:ASP.NET 5整个底层都架构于依赖注入机制之下,今天介绍的文章详细介绍了内置依赖注入容器。
在ASP.NET之前的版本中,虽然各个框架(MVC、WEB API、SignalR)都支持依赖注入,但是由于框架是相互独立的,所以使用依赖注入的方式都有所差异。Katana曾经期望通过OWIN来统一这些差异,直到ASP.NET 5中才得以实现。这得利于整个ASP.NET 5都是构建于依赖注入机制之下,且内置了一个依赖注入容器。在这篇文章《Dependency Injection In ASP.NET 5 – One Step Deeper》中,Emad Alashi就深入介绍了ASP.NET 5引入的依赖注入机制和默认容器的相关接口包括运行原理。
ASP.NET 5之所以能统一依赖注入的方式,是因为对依赖注入进行了一个更为高级的抽象,并提供了一系列接口来封装这种抽象。
- IServiceProvider:这是整个依赖注入机制的主接口,让开发人员可以获取到之前注册到容器中的对象实例。其只提供一个方法:GetService(Type)。这个方法可以对应到Autofac中的container.Resolve<Service>()或者Ninject中的kernel.Get<Service>()。
- IServiceScope:这是把IServiceProvider包装为Scoped(限定范围内)容器的接口。比如通过HttpContext.RequestServices属性获取到的IServiceProvider实例即是一个Scoped的。
- IServiceScopeFactory:要创建IServiceScope的实例就需要依靠这个工厂接口。
- ServiceLifetime:提供了对象作用域的枚举(Singleton、Scoped和Transient)。
- ServiceDescriptor:服务描述来构建一个容器的所有信息。
文章后面还详细介绍了依赖注入机制的具体使用方式和运行原理,涉及到:注册服务、处理请求(获得对象实例)。最后还以Autofac为例介绍了如何使用第三方的IoC框架。
更细节的文字大家可以“阅读原文”。
原文链接:http://www.emadashi.com/2015/06/dependency-injection-in-asp-net-5-one-step-deeper/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器