Fork me on GitHub
NET MVC运行机制

【图解ASP.NET MVC运行机制理解-简易版】

 

很多盆友咨询ASP.NET MVC的机制。网上也有好多。但是都是相当深奥。看的云里雾里的。我今天抽空,整理个简易版本。把处理流程走一遍。

当然,这个只是处理请求的一部分环节。百度的面试题“客户端从浏览器发送一个请求,要经过哪些路程。。。”看似简单的问题,问的很有深度。

 

我们不关注 从客户端HTTP->TCP->DNS->Server->Application->..................Client  这个完整的路线和插曲。我们就看看程序那一块。

我这说的是ASP.NET MVC的Web程序,其它的请绕行哈.

IIS 6 7 8的变化,自行找资料。不影响ASP.NET 的处理机制。

开始步骤:

1.服务器监听TCP请求处理,转发给IIS.........

 

1.

1-2

 

 

2. IIS 接受到请求后,发送给Web程序。

 

 

 

 

3.Web程序在启动的时候,触发一系列的事件。

 

 

 

4.请找些资料 理解上面的管道模型 ,理解 HttpModule 、HttpHandler。Web程序启动的时候,事件注册顺序表,来自MSDN。

 

5 .穿过注册的Module后,才进入对应的 Handler 进行请求处理。MVC在配置文件中,加载注册了路由模块。

 

 

7.在程序启动的时候,触发注册模块的 Init 方法。

 

 

8.此方法为 HttpApplication 的事件 PostResolveRequestCache 注册了处理程序 。在触发此事件的时候,进行了请求的路由检测。路由数据,RouteTable是当前应用程序域-AppDomain下的一个单例模式的事例。实现在应用程序级别的路由数据共享。

 

9. 在应用程序启动的时候,使用单例的路由表 RouteTable对象,进行路由注册的注册配置。

 

好了。路由数据已经准备初始化完毕,各项处理事件也注册完毕。当请求进入当前程序时候,进入管道模型,最终到达处理程序Handler,将生成的响应数据返回。

----------------------------------关于管道模型的设计-------------------------------------

附加:

 

 

参考文献:深入理解ASP.NET的内部运行机制 

Asp.net管道模型(管线模型)之一发不可收拾

https://msdn.microsoft.com/en-us/library/system.web.httpapplication(v=vs.80).aspx

posted on 2016-03-25 14:55  HackerVirus  阅读(3439)  评论(1编辑  收藏  举报