度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1886|回复: 1
打印 上一主题 下一主题

[分享] .net mvc的原理概述

[复制链接]

182

主题

2120

帖子

4842

积分

论坛元老

Rank: 8Rank: 8

积分
4842
跳转到指定楼层
楼主
发表于 2020-7-13 18:06:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请求过来,根据ip和端口,由iis服务器进行接收,如果是静态文件则直接返回文件内容,如果无法解析,则根据映射规则找到对应请求后缀
的ASPNET_ISAPI.dll处理程序集,交由其进行处理。
1.此时会生成IsapRuntime,其创建了WorkRequest对象,
2.接下来实例化HttpRunTime,由其生成HttpContext上下文对象,此时就初始化了Request,Response,Session,Application,等内置对象,
3.然后创建了HttpApplicationFactory工厂对象,其在第一次访问时调用了Global文件中的Application_Start方法,
生成HttpApplication对象,读取系统的配置文件,其中就包括我们的路由配置和约束,并创建HttpModel对象,调用Init方法,并注册这些方法到管道中,
4.由HttpApplication对象调用ProcessRequest,里面负责执行了管道时间
4.1 第一个是事件 就是BeginRequest方法,然后重点来到第7个时间,创建MVCHandler对象 ,
4.1.1将HttpContext存入其中,并读取路由表中的路由规则生成RouteData对象,和HttpContext一并存入从而创建RequestContext,再RequestContext对象传入RoudlerHandler.GetHttpHandler从而获取MVCHandler,并调用context.RemapHandler将mvchandler存入httpcontext中
4.2第8个事件则检查HttpContext中RemapHandler是否为空,如果不为空则跳过此事件,这也是和aspx最重要的不同之一,在aspx中这里是要打造页面控件树的. 而.net mvc这里是略过的
4.3来到第11至第12个事件之间会根据控制器名获取控制器工厂来创建对应的控制器对象,传入RequestContext调用控制器父类的ControllerBase的Execute方法,里面就将RequestContext设置给ControllerContext,执行ExecuteCore方法, 其中就根据请求的方法名找到并调用对应的Action方法,也就是我们写的业务,最后返回View,调用的是ActionResult.Execute 方法,,也就是父类的ViewResultBase.ExecuteResult,找到对应的视图引擎, 获取ViewEngineResult的View对象,获取Response的TextWriter对象和ViewContext对象 来调用引擎的Render方法,生成html代码并writer出去.


本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践], 文字讲解[不仅知道要怎么用,还要知道是怎么回事], 画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
沙发
发表于 2020-7-14 14:58:18 | 只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-24 12:50 , Processed in 0.121547 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表