深入理解MVC的生命周期
Posted 附近找友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解MVC的生命周期相关的知识,希望对你有一定的参考价值。
了解了MVC的生命周期,便于我们学习了理解MVC相关的知识。本文给大家介绍MVC程序服务端对于用户的请求都做了什么处理。
一、请求处理过程(Request)
1:路由(Routing)
客户端请求第一个环节就是路由,根据URL和注册的路由规则进行匹配,当找到一个匹配的路由后,MVC路由引擎会把改请求交给MvcHandler。如果未找到匹配的路由规则,则返回404错误。
路由注册在MVC启动程序Global. asax中注册。
2:处理组件(MvcHandler)
路由匹配规则成功后交给该处理组件响应客户端的请求。MvcHandler实现了接口IHttpHandler中的虚方法ProcessRequest来创建请求对应的Controller, 找到对应的控制器后将RequestContext传入Controller。
3:控制器(Controller)
控制器属于MVC的核心组件,我们可以把它看成视图与模型的桥梁。由Action返回视图和数据。
在MvcHandler中创建并调用对应的控制器。那对应的控制器是怎么创建并调用到匹配的控制器的呢?我们来了解两个东西:IController和IControllerFactory。在MvcHandler中通过调用内部方法ProcessRequestInit方法,改方法使用输出参数返回IContorller和IControllerFactory,然后执行IController中Execute方法把RrequestContext(请求上下文对象)传进去,最后由IControllerFactory对象调用ReleaseController方法传入IController对象来创建和初始化请求对应的控制器。
4:Action Execution--Action方法
Controller创建并初始化后开始有核心组件ActionInvoker来判断客户端请求的是哪个方法。在Action方法中我们进行逻辑处理并把数据Model返回给相应视图。
二、响应请求(Response)
1:视图结果(View Result)
在Action中接受请求数据并进行处理并准备响应请求返回一个View Result类型,如:ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, EmptyResult等。
2:视图引擎(View Engine)
当Action返回数据后,视图引擎就开始工作,有视图引擎来决定需要返回哪个视图。视图引擎继承自接口IViewEngine,并提供了两个实现WebForm和razor。
3:视图(View)
View视图相当于模板,它把Action传过来的数据绑定到视图中,展现在用户面前。
如果喜欢请关注支持笔者,您的关注是笔者源源不断创作的动力!
以上是关于深入理解MVC的生命周期的主要内容,如果未能解决你的问题,请参考以下文章