了解 MVC 應用程序執行過程

[注意:本主題是預發布的文檔,在將來發布的版本中可能會有更改。空白主題是為將來預留的。]

發送給基於 ASP.NET MVC 的 Web 應用程序的請求首先通過 UrlRoutingModule 對象(一個 HTTP 模塊)進行傳遞。此模塊將分析請求並執行路由選擇。UrlRoutingModule 對象將選擇與當前請求匹配的第一個路由對象。(路由對象是實現 RouteBase 的類,並且通常是 Route 類的實例。)如果任何路由都不匹配,則 UrlRoutingModule 對象不執行任何操作,並允許請求回退到常規的 ASP.NET 或 IIS 請求處理流程。

從選定的 Route 對象中,UrlRoutingModule 對象將獲得一個對象,所獲得的對象將實現 IRouteHandler 介面並與 Route 對象關聯。通常,在 MVC 應用程序中,這將是 MvcRouteHandler 類的一個實例。MvcRouteHandler 實例將創建一個實現 IHttpHandler 介面的 MvcHandler 對象。然後,MvcHandler 對象會選擇將最終處理該請求的控制器。有關更多信息,請參見 ASP.NET 路由。

說明

如果 ASP.NET MVC Web 應用程序運行在 IIS 7.0 中,則 MVC 項目不需要文件擴展名。但是,在 IIS 6.0 中,處理程序要求將 .mvc 文件擴展名映射到 ASP.NET ISAPI DLL。

UrlRoutingModule 和 MvcRouteHandler 類是 ASP.NET MVC 框架的入口點。它們執行下列操作:

  • 選擇 MVC Web 應用程序中合適的控制器。

  • 獲取特定的控制器實例。

  • 調用該控制器的 Execute 方法。

  • 下表列出了 MVC Web 項目的執行階段。

    階段

    詳細信息

    接收對應用程序的第一個請求

    在 Global.asax 文件中,Route 對象將添加到 RouteTable 對象中。

    執行路由

    UrlRoutingModule 模塊使用 RouteTable 集合中第一個匹配的 Route 對象來創建 RouteData 對象,然後使用所創建的對象創建 RequestContext 對象。

    創建 MVC 請求處理程序

    MvcRouteHandler 對象將創建 MvcHandler 類的實例,並將 RequestContext 實例傳遞給處理程序。

    創建控制器

    MvcHandler 對象使用 RequestContext 實例標識用於創建控制器實例的 IControllerFactory 對象(通常是 DefaultControllerFactory 類的實例)。

    執行控制器

    MvcHandler 實例調用控制器的 Execute 方法。

    調用操作

    對於從 ControllerBase 類繼承的控制器,與該控制器關聯的 ControllerActionInvoker 對象將決定要調用的 controller 類的操作方法,然後調用該方法。

    執行結果

    操作方法將接收用戶輸入,準備合適的響應數據,然後通過返回結果類型來執行結果。可執行的內置結果類型包括:ViewResult(呈現視圖並且是最常用的結果類型)、RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult 和 EmptyResult。

    請參見


    概念

    ASP.NET 路由

    其他資源

    ASP.NET MVC 概述
    推薦閱讀:

    民訴二審應增設簡易程序的規定
    C++中如何把一個變數的值作為另一個變數的名?
    你只管努力,剩下的交給時光---一個南方姑娘的2016北漂之旅
    有哪些動漫作品是與編程有關的?
    為什麼單機遊戲的啟動時間一般都比較長?有沒有辦法進行縮短?

    TAG:程序 | 執行 | 了解 |