ASP.NET MVC底层原理与框架
前言
鄙人有一毛病,喜欢钻研原理性的东西,感觉只知道怎么用还不太够,更想知道如何实现的以及为什么会这样。
暑假的时候做积分系统是第一次接触MVC,感觉MVC就是一个框架,分为Module ,view和controller,浏览器传过来的信息先到达controller,controller处理逻辑调用module,返回合适的view,当时对框架特别模糊,现在稍微好点,但是还是不太清楚,有明白的欢迎评论。
MVC框架图
简单解释
把http请求包装为HttpContext,用RouteTable.Routes.GetRouteData方法变为RouteData,然后把HttpContext和RouteData包装为RequestContext,routeData.RouteHandler.GetHttpHandler(requestContext)将RequestContext请求变为httphandler,HttpContext.RemapHandler方法为HttpHandler指定处理程序,MvcHandler调用ProcessRequest方法通过抽象工厂来创建具体的Controller,创建好的Controller调用Execute(RequestContext)方法,此方法又调用ControllerActionInvoker的InvokeAction方法来找到modelBinder类开始执行具体的方法,将执行的结果作为ActionResult返回给InvokeAction方法,ActionResult方法执行结果返回给界面,执行结束。
超精简解释
你发送的请求先进行路由匹配转为路由信息,然后http信息和路由信息一起作为请求信息交给路由处理器,路由处理器将请求信息转为http处理信息交给http处理器,http处理器讲http信息通过自己的抽象工厂造出一个Controller来,controller来执行请求信息,通过请求信息找到方法,执行方法,把执行的结果作为ActionResult,ActionResult再将Controller信息执行返回给界面。
参考
学习“迷你ASP.NET MVC框架”后的小结
深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
深入研究MiniMVC之后续篇
总结
越深入发现越有趣,各个方法之间的调用就能实现如此美妙的功能。
欢迎各位小伙伴来一起探讨MVC的原理。
ASP.NET MVC底层原理与框架的更多相关文章
- 窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData
1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也都知道TempData是用Session来实现的,既 ...
- MVC底层原理
窥探ASP.Net MVC底层原理 实现跨越Session的分布式TempData 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- Asp.net MVC 插件式应用框架
Asp.net MVC 插件式应用框架 2013年05月13日 10:16供稿中心: 互联网运营部 摘要:这几年来做了很多个网站系统,一直坚持使用asp.net mvc建站,每次都从头开始做Layou ...
- 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...
- asp.net mvc核心、实体框架和simplepagin .js中的分页
下载demo - 516.1 KB , 介绍 这篇文章将解释如何在asp.net mvc核心应用程序中进行分页,目标是enity框架,并使用jquery模板simplepagin .js. 我的一个应 ...
- Asp.Net MVC 请求原理分析
分析Asp.Net MVC的请求过程,我们从以下几方面看: 配置:IIS网站的配置可以分为两个块:全局 Web.Config 和本站 Web.Config . Asp.Net Routing属于全局性 ...
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案(转)
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件 ...
- Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案
前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说 ...
随机推荐
- arm linux 下移植busybox 的tftp
(1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项. (2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证, ...
- [转]Cache-Control max-age=0
Cache-Control max-age=0 Cache-Control no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验.这对于需要确认认证应用很有用(可以和 ...
- TCP状态详解
CLOSED: 这个没什么好说的了,表示初始状态. LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了. SYN_RCV ...
- unix下网络编程之I/O复用(二)
select函数 该函数允许进程指示内核等待多个事件中的任何一个发生,并仅在有一个或是多个事件发生或经历一段指定的时间后才唤醒它.我们调用select告知内核对哪些描述字(就读.写或异常条件)感兴趣以 ...
- jQuery判断 form表单提交时一些文本框的判断
一: form表单提交时如果表单里有input标签为空那么不提交form表单. <head> <script type="text/javascript"> ...
- java代码输出质因数
package com.badu; import java.util.Scanner; //分解质因数问题: //从键盘输一个数, //首先最小质因数为2 //n不能被2整除时, //n能被2整除时, ...
- PostgreSQL 数据库角色
数据库角色PostgreSQL使用角色的概念管理数据库访问权限.一个角色可以被看成是一个数据库用户或者是一个数据库用户组,这取决于角色被怎样设置.角色可以拥有数据库对象(例如,表和函数)并且能够把那些 ...
- .net core 环境安装
NET Core开发环境搭建 使用VS2015开发.NET Core项目,环境的搭建可以参考官网,大致安装步骤如下: 1.首先你得装个vs2015 并且保证已经升级至 update3及以上, 2.vs ...
- libstdc++.so.6
libstdc++.so.6遇到的问题: 1.提示version `GLIBCXX_3.4.14' not found /usr/lib64/libstdc++.so.: version `GLIBC ...
- 关于多账套API的设计
帐套在财务核算中是记载一个独立核算的经济实体的所有往来信息的一整套记录表和统计分析报表.不同的帐套之间的关系是相对独立的,对其中的任何一个帐套中的数据进行建立.删除或修改都不会影响其他帐套.在ERP中 ...