深入:ASP.NET MVC管道


ASP.NET mvcnovember第二十2007

如果我們聽到的消息是真的那麼新的ASP.NET MVC框架將是最可定製和可擴展的Web開發平臺,微軟

如果你想充分利用這個優勢或者如果你只是想明白什麼你會想打開蓋,檢查發動機

管道

免責聲明:此信息是基於pre-ctp1樣本代碼,所以它可能是過時的只是簡單的錯誤會更新這個職位當公衆CTP是運


0。應用程序初始化

在應用程序啓動時像任何ASP.NET應用程序它運行的全球application_start() ASAX方法

在該方法中你可以添加對象到staticroutetable路線路線收藏它的類型是RouteCollection這些將被檢查以後,每個接收請求每個路由對象定義一個URL模式將匹配和控制器被用來在這種情況下或者,您可以指定一個動作控制器和一個customiroutehandler如果你不想使用默認的(這是mvcroutehandler

如果你實現一個自定義IControllerFactory例如如果你使用控制容器一個第三方的溫莎城堡你可以把這個作爲主動控制器工廠指派它system.web.mvc.controllerfactory.instance財產

1。路由

概述:路由是符合ihttphandlers傳入請求URL模式獨立組件mvchandler本身一個IHttpHandler作爲一種替代其他ihttphandlers配置路由

引用system.web.mvc.mvchandler andsystem.web.mvc.urlroutingmodule在Web.config處理所有傳入的請求mvchandler責任相結合

首先,mvchandler調用路線。application_start()添加getroutedata()比賽路線的對象列表的請求適當的路由選擇和製備aroutedata對象本文引用必須適當的iroutehandlerIController

其次,iroutehandlergethttphandler()被調用時,返回一個IHttpHandlerwhoseprocessrequest()方法最終調用默認bymvcroutehandler IHttpHandler返回再次mvchandler執行以下步驟2-4

scottgu提供此路由過程的另一個觀點

2。實例化和執行控制器

概述:主動IControllerFactory供應IController實例

mvchandlerprocessrequest()方法callscontrollerfactory實例。createcontroller()通過上下文信息,包括獲得的RouteData對象讀取先前控制器類型

主動IControllerFactory負責實例化並返回一個適當的IController通常這將是控制器基類的子類

execute() IController方法被稱爲如果這是控制器的一個子類步驟3和4以下進行

3。定位和調用動作控制器

概述:控制器調用相應的操作方法經過進一步的加工renderview()

控制器。execute()方法使用routedata和其他上下文信息,選擇適當的操作方法這種方法必須有一個controlleraction ]屬性可以選擇也映射傳入的請求QueryString參數形成ihttprequest上下文對象到該動作方法的參數列表

控制器調用自己的invokeaction()方法通過詳細的選擇的操作方法其中可以預見的是,調用動作方法這是您的代碼運行

發佈了14 篇原創文章 · 獲贊 23 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章