基于.Net Framework的asp.net mvc 和Web API执行流程和周期

06-01 1247阅读

ASP.NET MVC 和 Web API 的执行流程和生命周期,需要结合请求处理管道、核心组件以及生命周期方法进行阐述。

ASP.NET MVC 执行流程

当一个请求进入 ASP.NET MVC 应用时,会经过以下几个核心阶段:

1. 请求进入 IIS

  • IIS 处理请求:IIS 接收到 HTTP 请求后,决定如何处理它(静态资源 vs 动态请求)。
  • 应用程序池:如果是 ASP.NET 请求,IIS 通过 Application Pool 将请求转发给 ASP.NET 运行时。
  • ASP.NET 管道:请求经过 HttpRuntime,最终进入 ASP.NET MVC 框架处理流程。

    2. ASP.NET MVC 处理流程

    1. Routing(路由匹配)

      • RouteTable 由 Application_Start 方法在 Global.asax 中初始化。
      • 请求通过 UrlRoutingModule 解析,并匹配到 RouteConfig 中定义的路由规则。
      • Controller 创建

        • MvcHandler 通过 IControllerFactory 实例化 Controller。
        • 默认使用 DefaultControllerFactory 进行创建。
        • Action 方法执行

          • ControllerActionInvoker 调用对应的 Action 方法,支持依赖注入和参数绑定(Model Binding)。
          • 执行过滤器(Filters)(生命周期钩子)

            ASP.NET MVC 提供了 4 种过滤器:

            • Authorization Filters (AuthorizeAttribute) – 检查用户权限。
            • Action Filters (OnActionExecuting / OnActionExecuted) – 在 Action 执行前后触发。
            • Result Filters (OnResultExecuting / OnResultExecuted) – 在视图返回前后触发。
            • Exception Filters (OnException) – 捕获异常并处理。
            • 返回 ActionResult

              • ViewResult(返回视图)。
              • JsonResult(返回 JSON 数据)。
              • RedirectResult(跳转到其他 URL)。
              • View 视图引擎渲染

                • MVC 默认使用 Razor 视图引擎 解析 cshtml 页面。
                • 视图引擎通过 ViewData / ViewBag 或 Model 渲染数据。
                • 响应返回给客户端

                  • Response 对象封装最终的 HTML 或 JSON 结果返回给客户端。

    ASP.NET Web API 执行流程

    Web API 的执行流程与 MVC 类似,但更轻量级,适用于 RESTful 服务。

    1. 请求进入 IIS 和 ASP.NET 运行时

    • IIS 接收 HTTP 请求,并将其传递给 ASP.NET 运行时(或 Kestrel 在 .NET Core)。
    • 请求进入 ASP.NET 管道,并通过 HttpServer 交由 Web API 处理。

      2. 路由匹配

      • Web API 使用 WebApiConfig 进行路由配置(基于 RouteAttribute 或 MapHttpRoute)。
      • HttpRoutingDispatcher 解析路由信息,确定请求的 Controller 和 Action。

        3. 创建 Controller 并调用 Action

        • IHttpControllerActivator 负责创建 Web API Controller(支持依赖注入)。
        • ApiControllerActionInvoker 负责执行 Action 方法。
        • 参数绑定(Model Binding):基于 FromBody、FromUri 进行数据解析。

          4. 过滤器执行(类似 MVC)

          • Authentication Filters(认证)。
          • Authorization Filters(授权)。
          • Action Filters(执行前后逻辑)。
          • Exception Filters(错误处理)。

            5. 执行 Action 逻辑,返回 IHttpActionResult

            • IHttpActionResult 作为标准返回类型,支持 Ok(), BadRequest(), NotFound(), Json() 等方法。
            • 结果经过 ContentNegotiation(内容协商),决定返回 JSON、XML 或其他格式的数据。

              6. 响应返回给客户端

              • HttpResponseMessage 通过 HttpControllerDispatcher 返回给 HttpServer。
              • HTTP 响应最终返回到客户端。

                ASP.NET MVC 和 Web API 的主要区别

                关键点ASP.NET MVCASP.NET Web API
                适用场景Web 应用,返回 HTMLRESTful API,返回 JSON/XML
                控制器基类ControllerApiController
                视图支持支持 Razor 视图引擎无视图,仅返回数据
                结果类型ActionResultIHttpActionResult 或 HttpResponseMessage
                过滤器ActionFilterAttributeActionFilterAttribute(但作用于 API 级别)
                路由方式routes.MapRouteconfig.MapHttpRoute
                Model Binding主要绑定 Form 数据FromBody, FromUri, Model Binding

                面试高频问题

                1. ASP.NET MVC 和 Web API 的核心区别?

                  • MVC 主要用于返回 HTML,适用于 Web 应用。
                  • Web API 主要用于 RESTful 服务,返回 JSON/XML 等格式的数据。
                  • MVC 过滤器(Filters)有哪些?

                    • Authorization Filters(权限验证)。
                    • Action Filters(Action 执行前后)。
                    • Result Filters(Result 生成前后)。
                    • Exception Filters(异常处理)。
                    • Web API 的 Model Binding 方式有哪些?

                      • FromUri(从 URL 解析参数)。
                      • FromBody(从请求体解析参数)。
                      • Model Binding(自动解析 complex type 参数)。
                      • ASP.NET MVC 和 Web API 的路由机制有什么区别?

                        基于.Net Framework的asp.net mvc 和Web API执行流程和周期
                        (图片来源网络,侵删)
                        • MVC 采用 routes.MapRoute,基于 Controller 和 Action。
                        • Web API 采用 config.MapHttpRoute,更适用于 RESTful 设计。
                        • 如何在 Web API 中实现内容协商(Content Negotiation)?

                          • 通过 Accept 头自动匹配 JSON 或 XML 返回格式。
                          • 可以自定义 MediaTypeFormatter 以支持自定义格式。

                如果是高阶面试,还可以深入 中间件、身份验证(JWT)、异常处理、DI 依赖注入、性能优化(如缓存、压缩) 等内容。

                基于.Net Framework的asp.net mvc 和Web API执行流程和周期
                (图片来源网络,侵删)
                基于.Net Framework的asp.net mvc 和Web API执行流程和周期
                (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码