先上个图
步骤一
IIS
 
当请求到达我们的服务器时,在asp.net取得控制之前,windows操作系统的核心组件 HTTP.SYS一直在监听请求端口, 
接下来asp.net会通知所有注册的httpModule。 有一个httpModule是默认注册了的。那就是UrlRoutingModule,也就进入了路由模块.核心路由接管控制
IIS上有两种管道模式
ISAPI模式(就是常说的经典模式)
ISAPI模式通常和webform联系的比较多,因为他更多的是处理带 后缀扩展名 如  .aspx  .ashx等 的请求(当然也有其他方法来处理不带扩展名的请求 wildmap)
 
集成模式
集成模式只在iis7支持。主要处理不带扩展名的请求
 
步骤二
 
CoreRouting 
 
当核心路由系统接管控制之后,会把请求封装成 RequestContext这样一个数据结构。这个数据结构中包含了几乎所有的请求信息,以便后面的组件可以任意的去使用它。mvc框架就是使用requestContext中的信息,将控制权转移给对应的controller对象,并提出其中的action参数。
 
比如说我们的请求为 //Home/SayHi 那么封装成RequestContext对象传递给MVC之后 就提取出 控制器名称 HomeController 以及要调用这个控制器中的SayHi()方法 。(接下来的步骤就是要能创建这个我们自定义的控制器对象了)
 
步骤三 
 
controllers 和actions
 
从上面的流程图可以知道, mvcRouteHandler从核心路由模块过渡到mvc框架之后,就要生产对应的controller对象类处理了。
这些对象 你可以采用 不标准的方法通过直接实现Icontroller接口来创建 ,也可以通过controllerFactory来实现。当然这个控制器工厂可以是你自定义的实现了IcontrollerFactory接口的自定义工厂(或者是默认工厂的子类),也可以是mvc框架自带的DefaultControllerFactory来创建。
很显然默认会采用后者。(前者创建自定义工厂肯定也会有用处,因为它可以直接改变控制器的模子,如果你想造出一批特殊功能的控制器,就会相当有用了)
 
步骤四
 
controllers内部的这些action并不是直接自己invoke的 而是通过一个IActionInvoker来触发执行,然后返回actionResult给ViewEngine去解析。同理,这个IActionInvoker我们也可以自行实现。

Asp.net MVC流程简述的更多相关文章

  1. ASP.NET MVC流程解说

    开始想这个标题时,,很忧郁什么标题将得到更好的叫什么,最后确定的解释,虽然稍0基金会,但是,这个概念是非常.我想出了一个相当的价格值的. ,開始. 1.MVC的基本开发流程   2.webform和M ...

  2. 【源码】进入ASP.NET MVC流程的大门 - UrlRoutingModule

    UrlRoutingModule的功能 在ASP.NET MVC的请求过程中,UrlRoutingModule的作用是拦截当前的请求URL,通过URL来解析出RouteData,为后续的一系列流程提供 ...

  3. Visual Studio 2015创建ASP.NET MVC流程

    本文链接:https://blog.csdn.net/begindong/article/details/68059437本人这两天第一次对c#进行系统学习,写出来做个学习记录和大家分享,以下有什么错 ...

  4. 简述C#中IO的应用 RabbitMQ安装笔记 一次线上问题引发的对于C#中相等判断的思考 ef和mysql使用(一) ASP.NET/MVC/Core的HTTP请求流程

    简述C#中IO的应用   在.NET Framework 中. System.IO 命名空间主要包含基于文件(和基于内存)的输入输出(I/O)服务的相关基础类库.和其他命名空间一样. System.I ...

  5. ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

    好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人>: --> 开篇:上一篇 ...

  6. ASP.NET MVC学前篇之请求流程

    ASP.NET MVC学前篇之请求流程 请求流程描述 对于请求的流程,文章的重点是讲HttpApplication和HttpModule之间的关系,以及一个简单的示例实现.(HttpModule又是M ...

  7. Asp.net MVC的Model Binder工作流程以及扩展方法(2) - Binder Attribute

    上篇文章中分析了Custom Binder的弊端: 由于Custom Binder是和具体的类型相关,比如指定类型A由我们的Custom Binder解析,那么导致系统运行中的所有Action的访问参 ...

  8. Asp.net MVC的Model Binder工作流程以及扩展方法(1) - Custom Model Binder

    在Asp.net MVC中, Model Binder是生命周期中的一个非常重要的部分.搞清楚Model Binder的流程,能够帮助理解Model Binder的背后发生了什么.同时该系列文章会列举 ...

  9. ASP.Net MVC请求处理流程

    ASP.Net MVC请求处理流程 好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人& ...

随机推荐

  1. flask源码解析之上下文为什么用栈

    楔子 我在之前的文章<flask源码解析之上下文>中对flask上下文流程进行了详细的说明,但是在学习的过程中我一直在思考flask上下文中为什么要使用栈完成对请求上下文和应用上下文的入栈 ...

  2. Python拾遗

    for...else...语句 用 break 关键字终止当前循环就不会执行当前的 else 语句,而使用 continue 关键字快速进入下一论循环,或者没有使用其他关键字,循环的正常结束后,就会触 ...

  3. D10——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...

  4. 【bzoj2961】共点圆 k-d树

    更新:此题我的代码设置eps=1e-8会WA,现在改为1e-9貌似T了 此题网上的大部分做法是cdq分治+凸包,然而我觉得太烦了,于是自己口胡了一个k-d树做法: 加入一个圆$(x,y)$,直接在k- ...

  5. AngularJS常用Directives实例

    在第一篇 认识AngularJS 中,我们已经基本了解了AngularJS,对Directive也有了一定了解,本章我们将继续介绍Directive,对其有一个更深入的了解和掌握. 常用的Direct ...

  6. Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段

    using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.G ...

  7. (转)CentOS 7 单用户模式+救援模式

    原文:http://blog.51cto.com/asd9577/1931442 https://www.cnblogs.com/zhangzeyu/p/6379754.html-------Cent ...

  8. (转)windows 2003 远程桌面关闭 运行程序退出解决

    windows 2003 远程桌面关闭 运行程序退出解决 原文:http://2798996.blog.51cto.com/2788996/503365 情况:远程桌面到2003,运行一个程序,然后关 ...

  9. (转)http://blog.csdn.net/renfufei/article/details/38474435

    原文:http://blog.csdn.net/renfufei/article/details/38474435

  10. android Service 学习总结

    学习android开发已经四五个月,由于项目中职责的原因一直没有接触过Service的实际项目,今天重新学一遍Service用法. 问题: 作为四大组件,为什么需要Service? 它与Thread又 ...