[ASP.NET MVC2 系列] 理解MVC應用程式的執行過程

來源:互聯網
上載者:User

[ASP.NET MVC2 系列] 
     [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分鐘內用ASP.Net MVC建立一個電影資料庫應用程式》 
     [ASP.NET MVC2 系列] ASP.Net MVC教程之《ASP.NET MVC 概述》
     [ASP.NET MVC2 系列] 理解MVC應用程式的執行過程
     [ASP.NET MVC2 系列] ASP.NET MVC Routing概述 
     [ASP.NET MVC2 系列] ASP.NET MVC 之如何建立自訂路由約束 
     [ASP.NET MVC2 系列] Action要求與View本質
     [ASP.NET MVC2 系列] Action Filters以及自訂OutputCache ActionFilterAttribute事件發生次序

 

                                            理解MVC應用程式執行過程
 
      基於ASP.NET MVC Web應用程式的請求首先通過一個UrlRoutingModule的對象(HTTP模組)。這個模組匹配請求,並且執行路由選擇。這個UrlRoutingModule對象選擇第一個匹配當前請求的路由對象。如果沒有路徑匹配,這個UrlRoutingModule什麼也不做,讓這個請求返回給常規的ASP.NET或者IIS來請求處理。
 
    從這個被選中的Route對象,UrlRoutingModule對象獲得IRouteHandler對象(IRouteHandler對象與Route對象是相互關聯的)。一般來說,在一個MVC應用程式中,它將是MvcRouteHandler執行個體。這個IRouteHandler執行個體建立一個IHttpHandler對象,並且將它傳遞給IHttpContext對象。預設情況下,MVC IHttpHandler執行個體就是MvcHandler對象。然後,這個MvcHandler對象選擇controller,controller將最終提交這個請求。

  這個module 和 handler是ASP.NET MVC架構的進入點。它們執行下列行為:
  
  選擇合適的controller。
  獲得一個具體controller執行個體。
  調用controller的執行方法。
  
  下表列出了一個MVC Web項目的執行的各階段。

 

階段 詳細
接收應用程式的第一次請求 在Global.asax檔案中, Route對象 被添加到RouteTable對象.
執行路由選擇 UrlRoutingModule 模組使用第一個在RouteTable 集合中匹配的Route 對象來建立RouteData對象, 然後它將使用這個RouteData對象來建立RequestContext (IHttpContext)對象.
建立MVC request handler MvcRouteHandler 建立MvcHandler類的一個執行個體,並且將它傳遞給RequestContext執行個體.
建立controller MvcHandler對象使用RequestContext執行個體來確認IControllerFactory 對象(DefaultControllerFactory類的一個執行個體) ,以用來建立conteoller執行個體。
執行controller MvcHandler 執行個體調用controller的執行method.
調用action 大部分controllers 繼承自Controller基礎類. 與controller相關聯的ControllerActionInvoker 對象決定這個controller類的哪個方法將被調用 , 然後再調用那個方法.
執行result 一個典型的action 方法可能接收使用者輸入,準備合適的響應資料, 然後通過返回一個result的類型來執行這個result. 這個內建的能夠執行的result 類型 包含以下類型: ViewResult (它呈現一個視圖,並且是最常用的result類型), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult以及EmptyResult.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.