HTML5技术

MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码) - 懒得安分(2)

字号+ 作者:H5之家 来源:H5之家 2016-10-31 15:00 我要评论( )

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Routing; namespace Swift.MVC{ public class MvcRouteHandler:IRouteH

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Routing; namespace Swift.MVC { public class MvcRouteHandler:IRouteHandler { public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext) { return new MvcHandler(); } } }

2、MvcHandler部分的完善

首先还是抛出MvcHandler.cs的源码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace Swift.MVC { public class MvcHandler : IHttpHandler { IsReusable { get { return false; } } ProcessRequest(HttpContext context) { //写入MVC的版本到HttpHeader里面 //AddVersionHeader(httpContext); //移除参数 //RemoveOptionalRoutingParameters(); routeData = context.Request.RequestContext.RouteData; controllerName = routeData.GetRequiredString(); //步骤3.得到控制器工厂 IControllerFactory factory = new SwiftControllerFactory(); //步骤4.通过默认控制器工厂得到当前请求的控制器对象 IController controller = factory.CreateController(context.Request.RequestContext, controllerName); if (controller == null) { return; } try { //步骤5.执行控制器的Action controller.Execute(context.Request.RequestContext); } catch { } finally { //步骤6.释放当前的控制器对象 factory.ReleaseController(controller); } } } }

关于上述代码,我们说明以下几点。

2.1、关于控制器工厂

上述代码注释中的步骤1、2不难理解,就是从配置的路由规则中获取当前请求控制器的名称。要理解步骤3,需要先说一说MVC源码里面的控制器工厂。先来看看源码里面这段如何实现:

在源码里面的MvcHandler的ProcessRequest方法里面有这么一句: factory = ControllerBuilder.GetControllerFactory(); 。在MvcHandler里面ControllerBuilder这样定义:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • javascript运动系列第九篇——碰撞运动 - 小火柴的蓝色理想

    javascript运动系列第九篇——碰撞运动 - 小火柴的蓝色理想

    2016-10-29 18:00

  • 深究angularJS系列 - 第二弹 - 雨夜羽翼

    深究angularJS系列 - 第二弹 - 雨夜羽翼

    2016-10-29 10:00

  • HTML5学习 - 小熊吉米

    HTML5学习 - 小熊吉米

    2016-10-28 18:01

  • MVC系列——MVC源码学习:打造自己的MVC框架(一) - 懒得安分

    MVC系列——MVC源码学习:打造自己的MVC框架(一) - 懒得安分

    2016-10-27 13:00

网友点评
g