庖丁解ASP.NET MVC内部运行流程
跟大家分享两张ASP.MVC的内部运行流程图,作者都是Steve Sanderson,上面这张是07年MVC还未正式发布之前做成的流程图,虽然较老但是放到今天大部分仍然基本适用(注意:图中有些部分已经过期,但是因为比较详细全面,也贴上来了)。下面那张是09年的,贴上来的理由是图中详细的表出MVC框架里哪些部分是可以被拓展(extend)的, 比如说你可以用Cusotom route handler, Custom Handler 等等。
基本上讲,一个MVC项目启动时,包括下面5个步骤:
1. 启动:一个MVC的项目启动的时候,首先从Global.asax.cs里面的Application_Start()开始。在Application_Start()里面定义routes, IoC container, ModelBinder, 等等需要在启动时配置好的部分;
2. 路径(routes):MvcHandler处理所有的请求 e.g. http://example.com/home/index,在这个环节的最后一步IHttpHandler的ProcessRequest方法被调用;
3. 生成controller: 在调用ProcessRequest方式时,DefaultControllerFactory按照进来的请求生成controller对象,e.g. HomeController. 之后controller对象调用Execute()方法;
4. 找到并调用controller action:controller在调用Execute()方法时,依靠ControllerActionInvoker找到相应的action,并调用该action, e.g. 调用HomeController里面的index()方法;
5. 生成界面(render view): 最后controller返回ActionResult,由View Engine生成界面;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?