zoukankan      html  css  js  c++  java
  • 利用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协议发出请求流--->服务端根据请求流发送到客户端响应流

    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 响应流

    具体实现分析

    Route实现

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

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

    Controller实现

    IRouteHandler通过ControllerAction的值得到实体

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

    Action调用

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

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

  • 相关阅读:
    浅谈页面中的焦点
    简单的jQuery幻灯片实现
    从is(":checked")说起
    通过Javascript得到URL中的参数(query string)
    Javascript设置对象属性为"只读"
    Javascript判断两个日期是否相等
    利用HttpWebRequest访问WebApi
    利用Newtonsoft.Json实现Json序列化与反序列化
    在ASP.NET MVC中以post方式传递数组参数的示例
    SQL Server 锁表、查询被锁表、解锁相关语句
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/9456809.html
Copyright © 2011-2022 走看看