主要分析一下的几个项目:

  Autofac.Integration.Mvc

  Autofac.Integration.WebApi

  Autofac.Integration.Owin

  Autofac.Integration.Web

  Autofac.Integration.WebApi.Owin

  Autofac.Integration.Mvc.Owin

  地址:https://github.com/autofac

以上几个项目分别是 Mvc Webapi Owin 和 webform 与autofac的整合项目

下文将通过对不同的框架进行分别描述,但之前有几个问题需要思考

  什么是ioc

  为什么用ioc

那么怎么写一个简单ioc该考虑什么?
    1、api 注册 获取
    2、声明周期 单例 瞬时对象 线程唯一 请求唯一等等。。。(待续)
    3、关于gc的思考 ?如何保证对象gc 不会内存溢出
    4、和框架整合需要考虑什么

过去(webform)  

  对于webfrom 来说 一个aspx 窗体 就是一个IHttpHandler, 从webform本身架构来讲 没有设计Ioc容器接口,so aufofac是怎么对这个框架对接的呢?

  通过使用 可以清楚地知道 需要 web.config 配置 ContainerDisposalModule PropertyInjectionModule

  而这2个moduel 分别是干什么的呢。

    ContainerDisposalModule 很简单 context.EndRequest += OnEndRequest; 对于结束请求释放了请求关联的声明周期你的所有对象

    PropertyInjectionModule 通俗易懂是 属性输入 ontext.PreRequestHandlerExecute += OnPreRequestHandlerExecute. 在handler初始化成功后将属性注入

  对于webform来说只能使用属性注入,不能使用构造函数注入.why? 因为 前文提到 一个aspx 窗体 就是一个IHttpHandler,至于httphandler在什么时候初始化无法控制。

现在(Mvc WebApi 与Owin混合)

  对于mvc框架和webapi来言 都是mvc模式。本身框架提供了ioc容器入口.

  but 对于mvc的 接口个人非常讨厌。why 因为ioc接口设计相对简陋 未提供dispose,可以想象 一个请求内关联的一个声明周期内的对象 不释放是多么可怕。内存不断地增加。

  而webapi提供的ioc接口 更好一些 提供了IDependencyScope 提供了 Dispose方法。

  那么对于Mvc是怎么处理请求结束 释放对象的问题呢?

     1、[assembly: PreApplicationStartMethod(typeof(PreApplicationStartCode), "Start")]

     2、DynamicModuleUtility.RegisterModule(typeof(RequestLifetimeHttpModule));

     3、context.EndRequest += OnEndRequest;

     4、ILifetimeScopeProvider.EndLifetimeScope();

  用了net4.0新特性 PreApplicationStartMethod.然后注册了回收方法

  而webapi相对简单:

    AutofacWebApiDependencyScope 内部实现了释放。

  关于2者使用:

    http://docs.autofac.org/en/latest/integration/mvc.html

    http://docs.autofac.org/en/latest/integration/webapi.html

  而关于Owin部分

    因为现在mvc webapi和 owin属于混合 基本上以上使用基本满足。

未来(Owin 坐等net core 版本的owin mvc 和 owin webapi 再补充)

  根据现有的项目来看 经典的Global.asax和web.config 已经见鬼去了。。。。so 再等等吧出正式版再说

  关于Autofac对接Owin,在Autofac.Integration.Owin Autofac.Integration.Mvc.Owin Autofac.Integration.WebApi.Owin这3个项目中autofac封装一套基于Owin管道与Mvc和webapi整合

  例如UseAutofacMiddleware中 将lifetimeScope注入到IOwinContext中

Autofc与Mvc,WebForm,Weiapi,Owin整合源码分析的更多相关文章

  1. Mybatisi和Spring整合源码分析

    一.MybatisSpring的使用 1.创建 Maven 工程. 2.添加依赖,代码如下 <dependency> <groupId>org.mybatis</grou ...

  2. SpringBoot中Tomcat和SpringMVC整合源码分析

    概述 ​ SpringBoot中集成官方的第三方组件是通过在POM文件中添加组件的starter的Maven依赖来完成的.添加相关的Maven依赖之后,会引入具体的jar包,在SpringBoot启动 ...

  3. WebForm / MVC 源码分析

    ASP.NET WebForm / MVC 源码分析   浏览器 Url:https//localhost:6565/Home/Index ,https//localhost:6565/WebForm ...

  4. ASP.NET WebForm / MVC 源码分析

    浏览器 Url:https//localhost:6565/Home/Index ,https//localhost:6565/WebForm1.aspx,请求服务器(构建请求报文,并且将请求报文发送 ...

  5. asp.net mvc 之旅 —— 第六站 ActionFilter的应用及源码分析

    这篇文章我们开始看一下ActionFilter,从名字上其实就大概知道ActionFilter就是Action上的Filter,对吧,那么Action上的Filter大概有几个呢??? 这个问题其实还 ...

  6. ASP.NET MVC源码分析

    MVC4 源码分析(Visual studio 2012/2013) HttpModule中重要的UrlRoutingModule 9:this.OnApplicationPostResolveReq ...

  7. 精尽Spring MVC源码分析 - 寻找遗失的 web.xml

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  8. ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  9. ASP.NET MVC 4源码分析之如何定位控制器

    利用少有的空余时间,详细的浏览了下ASP.NET MVC 4的源代码.照着之前的步伐继续前进(虽然博客园已经存在很多大牛对MVC源码分析的博客,但是从个人出发,还是希望自己能够摸索出这些).首先有一个 ...

随机推荐

  1. Chief Technology Officer

    转自地址:http://www.swoole.com/News/76.html 1)错误都是自上而下 当事情出现混乱的时候,人们总是寻求寄托于Process的制定,很多的管理者,觉察到事情的失控,却不 ...

  2. HDU 6362.oval-and-rectangle-数学期望、微积分 (2018 Multi-University Training Contest 6 1001)

    2018 Multi-University Training Contest 6 6362.oval-and-rectangle 题意就是椭圆里画内接矩形,问你矩形周长的期望. 比赛的时候推了公式,但 ...

  3. opencv对鼠标的响应

    #include <cv.h> #include <highgui.h> #include <stdio.h>   #pragma comment(lib,&quo ...

  4. Codeforces #447 Div2 E

    #447 Div2 E 题意 给出一个由有向边构成的图,每条边上有蘑菇,假设有 \(n\) 个蘑菇,那么第一次走过这条边可以获得 \(n\) 个蘑菇,第二次 \(n-1\),第三次 \(n-1-2\) ...

  5. 区间DP【p2858】[USACO06FEB]奶牛零食Treats for the Cows

    Description 约翰经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱.为此,约翰购置了N(1≤N≤2000)份美味的零食来卖给奶牛们.每天约翰售出一份零食.当然约翰希望 ...

  6. 【动态规划】矩形嵌套 (DGA上的动态规划)

    [动态规划]矩形嵌套 时间限制: 1 Sec  内存限制: 128 MB提交: 23  解决: 9[提交][状态][讨论版] 题目描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a, ...

  7. [BZOJ 1072] 排列perm

    Link: BZOJ 1072 传送门 Solution: 一道直接next_permutation纯暴力就能过的题? 难道2007年时大家都不知道next_permutation这个函数吗 还是用复 ...

  8. [CF819B]Mister B and PR Shifts

    题意:定义一个排列$p_{1\cdots n}$的“偏移量”$D=\sum _{i=1}^n\left|p_i-i\right|$ 求它所有的轮换排列中偏移量最小的是多少,要求输出轮换序数 暴力就是求 ...

  9. Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析

    1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...

  10. Scala实战高手****第1课:大数据时代的“黄金”语言Scala

    共计28课,每节课程在1个小时左右. 每天至少2个课程.预计在11.30号完成. ——————————————————