利用Asp.net实现简单的MVC

认识Asp.net MVC

Asp.net是微软提供的用于网站开发的基础框架。Asp.net MVC是在Asp.net的基础上实现的MVC模式,Asp.net Webform 是在asp.net的基础上实现了事件请求机制。Asp.net WebForm与Asp.net MVC是asp.net基础上的两种不同的编程框架。

Asp.net WebForm处理流程

客户端浏览器向服务其发出请求--->IIS服务其接受请求--->IIS交由asp.net处理,asp.net请求管道机制(过滤请求,根据请求选择不同处理程序)---->处理程序IHandler根据HttpContext.HttpRequest读取用户请求信息,HttpContext.HttpResponse写入服务器响应流(如下图)
其实就是各流处理,客户端根据Http协议发出请求流--->服务端根据请求流发送到客户端响应流
1236909-20180810183237177-781834431.png

Asp.net WebForm实现MVC

实现思想:通过实现IHttpModule注入asp.net请求管道,并调用将请求交由实现的IHttpHandler类,在IHttpHandler处理用户请求。具体实现过程

  1. 实现IHttpModule并通过config注入管道(IIS的IntegratedClassic模式写法不同)
  2. 通过Route得到RouteDataRouteData指明了IHandler
  3. IHandler的执行需要调用用户请求Controller下的Action
  4. Controller相关类通过IControllerFactory得到Controller
  5. ActionInvoker执行Controller下的Action
  6. IModelBinder根据用户请求中的数据绑定到Action的参数
  7. ActionResult根据Action返回值,写入HttpContext.HttpResponse 响应流
    1236909-20180810183253061-588438969.png

具体实现分析

Route实现

Route最终需要得到的值为RouteData,RouteData包括IHandler和从请求中提取的ControllerAction值。为了使用的灵活性,满足可以根据用户定义URL模板。

  • Route主要根据URL模块提取用户请求,指明IHandler
  • RouteTable包括Route的集合对象,作用可以声明多个Route
  • 服务开启时注入Route

1236909-20180810183303902-637643935.png

Controller实现

IRouteHandler通过ControllerAction的值得到实体

  • IRouteHandler获得IHandler
  • IControllerFactory通过工厂获得IController
  • ControllerBuilder在服务启动时注入IControllerFactory
  • DefaultControllerFactory通过反射或取Web端下的Controller

1236909-20180810183320325-957306251.png

Action调用

现在已经得到了Controller。下面解决调用Controller下的Action.

  • IActionInvoker反射调用Action,需要参数绑定
  • IModelBinder根据请求数据绑定参数
  • ActionResult根据Action执行的返回值写入响应流

1236909-20180810183331274-1452788667.png

转载于:https://www.cnblogs.com/LoveTomato/p/9456809.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值