在浏览器中输入一段url地址,就可以打开网站浏览效果,在你回车后等待网站打开的哪一小段时间里,后台是怎么样处理的呢?
下面来说说MVC路由知识:
---------------------------------目录大纲---------------------------------
1.路由管道解析
2.UrlRoutingModule类
3.IRouteHandler接口
4.IHttpHandler接口
一、路由管道解析
用户请求-->UrlRoutingModule(路由解析)-->匹配路由(RouteTable,Route)-->IRouteHandler(路由处理)-->IHttpHandler(Http处理)-->...
当用户发起一个URL请求,UrlRoutingModule来响应用户的请求,来分析匹配路由得到Route对象,然后由相应的IRouteHandler来进行路 由处理,最后分发到IHttpHandler相应的对象来定位执行对应的action方法。
这里的UrlRoutingModule继承IhttpModule类,我们自己也可以写路由解析代码,只要写一个继承IhttpModule的类并在webconfig中配 置即可。
UrlRoutingModule的默认配置如下:
二.UrlRoutingModule类
在上面我们已经简单的说了一下UrlRoutingModule类,哪么UrlRoutingModule是如何解析路由,匹配路由的,怎样交由IRouteHandler处理程序处理路由的呢? 下面简单的来讲:
当程序第一次启动的时候会Application_Start()方法,然后会把相应的路由信息放在静态的RouteCollection中。
比如下面:把一个Route对象加到RouteCollection中,这样UrlRoutingModule就可以在运行的时候获取Route路由列表了。
哪接下来还原一下UrlRoutingModule是怎么写的吧,相信大家看完以后会明白的:
程序一进来会先后执行: void context_PostResolveRequestCache(object sender, EventArgs e)方法和 void context_PostMapRequestHandler(object sender, EventArgs e) 在这两个方法里就是处理匹配路由。
其中 IHttpHandler hand = handler.GetHttpHandler(new RequestContext(context, routeData)); 这一句是获取IHttpHandler 处理程序。
程序测试用而以,写的比较粗糙,少了很多判断。
有关用mvc做的网站,大家可以试试:http://www.tita.com?inviteUserId=F59EBD084D66B898A748A4E7DE281303