(此文章同时发表在本人微信公众号“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/

深入理解ASP.NET 5的依赖注入的更多相关文章

  1. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  2. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  3. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(四)【转】

    原文链接:https://www.cnblogs.com/gdsblog/p/8465401.html 相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transi ...

  4. ASP.NET 5:依赖注入

    ASP.NET 5:依赖注入 1.背景 如果某个具体的(或类)对象被客户程序所依赖,通常把它们抽象成抽象类或接口.简单说,客户程序摆脱所依赖的具体类型,称之为面向接口编程. 那么问题来了?如何选择客户 ...

  5. ASP.NET Core之依赖注入

    本文翻译自:http://www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core ASP.NET Core支持依赖注入,依赖 ...

  6. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(三)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  7. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(二)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  8. ASP.NETCore使用AutoFac依赖注入

    原文:ASP.NETCore使用AutoFac依赖注入 实现代码 1.新建接口类:IRepository.cs,规范各个操作类的都有那些方法,方便管理. using System; using Sys ...

  9. ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用

    上一章主要介绍了Autofac在MVC当中的具体应用,本章将继续简单的介绍下Autofac在普通的WebForm当中的使用. PS:目前本人还不知道WebForm页面的构造函数要如何注入,以下在Web ...

随机推荐

  1. js原生的url操作函数,及使用方法。(附:下边还有jquery对url里的中文解码函数)

    js原生的url操作函数,完善的. /*****************************/ /* 动态修改url */ /*****************************/ var ...

  2. 【GoLang】与或非 异或操作

    在Go规范,^这个运算符在一元运算符和二元运算符中都出现了.那么他们分别是啥?在规范中说道:^ bitwise XOR integers这是按位异或. Go语言位操作实例 <!-- lang: ...

  3. git rebase简介(高级篇)

    原文:http://gitbook.liuhui998.com/4_3.html 一.基本   对于git rebase,你亦可以选择进行交互式的rebase.这种方法通常用于在向别处推送提交之前对它 ...

  4. How do I get ASP.NET Web API to return JSON instead of XML using Chrome

    public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Ro ...

  5. 【leetcode】Maximal Rectangle

    Maximal Rectangle Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle conta ...

  6. ajax 几种提交方式

    方式一: $.ajax({ type: 'POST', url: "/user/editPwd.htm", data: {"oldPassword":oldPa ...

  7. linux学习之-vsftp

    一.简介 vsftp是一个基于GPL发布的类unix系统上使用的ftp服务器软件,它的全称是very secure FTP ,软件的编写初衷是为了代码的安全,另外高速与高稳定性也是vsftp的两个重要 ...

  8. ASM:《X86汇编语言-从实模式到保护模式》第11章:进入保护模式

    ★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT)        32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的 ...

  9. windows编程中c语言知识回顾

    1.include: #include表示只在系统提供的头文件中查找: #include "Head File"表示先在当前目录中搜索,若不存在,再到系统目录中查找: vs环境中, ...

  10. mybatis 的if else

    <update id="update" parameterType="XXX">         update XX set YY          ...