目录:
一、MVC原理解析
二、HttpHandler
1.HttpHandler,IHttpHandler,MvcHandler的说明
2.IHttpHandler解析
3.MvcHandler解析
三、HttpModule
1.HttpModule能干什么
2.HttpModule的使用
3.HttpModyle和HttpHandler如何区分
4.UrlRoutingModule解析
一、MVC原理解析
当我们收到一个URL的请求是,服务端收到请求,主要经历以下几个步骤:
1.请求被UrlRoutingModule部件拦截
2.封装请求上下文HttpContext,成为HttpContextWrapper对象
3.根据当前的HttpContext,从Routes集合中得到与当前请求URL相符合的RouteData对象
4.将RouteData与HttpContext请求封装成一个RequestContext对象
5.根据RequestContext对象,从RouteData的RouteHandler中获取IHttpHandler(MVC里面会有一个IHttpHandler的实现类MvcHandler)。
6.执行IHttpHandler(MVCHandler),然后就是通过反射激活具体的controller,执行具体的action。
1.整个过程有两个核心的组件。UrlRoutingModule和MvcHandler,上文提到的各个过程都和两个组件有紧密的联系。而这两个组件分别继承Ihhtmodule和IhttpHandler接口,熟悉Asp.Net管线事件的朋友应该记得这两个接口。
2.UrlRoutingModule的作用可以理解为通过一系列的与路由相关的组件去解析当前请求的Controller与Action名称,其实简单点理解,比如我们请求的http://localhost:8080/Home/Index这个url的时候,UrlRoutingModule拦截到这个请求,然后通过一系列的方式得到这里的“Home"和”Index"
3.MvcHandler的作用就更加直接,上述通过拦截组件得到了请求的Controller和Action的名称,MvcHandler组件将当前请求的Controller名称反射得到对应的控制器对象,然后执行对应的Action方法。比如还是上述http:/localhost:8080/Home/Index这个请求,通过字符串“Home”反射成为Home这个类型的控制器对象,然后调用这个对象的Index()方法。
4.综上,联合这两个组件来理解,UrlRoutingModule组件的主要作用是解析当前的Controller与Action名称,MvcHandler的作用是将得到Controller名称激活,得到具体的Controller对象,然后执行对应的Action方法。
原文:https://www.cnblogs.com/pandorabox/p/10477426.html