當一個ASP
和Http response 過程中
主要流程圖如下:
RouteTable的創建發生在mvc應用程序的啟動 或者web應用程序池的重啟!通常的程序
一個頁面請求對應磁盤上的一個頁面!如(x
對應到服務器磁盤上的文件index
IHttpHandler包含一個
ProcessRequest方法
但是mvc application 是不同的
RouteTable的在應用程序的具體使用如下
public class MvcApplication :
System
{
public static void RegisterRoutes(RouteCollection routes)
{
routes
routes
// URL with parameters new { controller =
// Parameter defaults );
routes
// URL with parameters new { controller =
// Parameter defaults );
}
protected void Application_Start()
{
RegisterRoutes(RouteTable
}
}
每一個Http 請求 都被UrlRoutingModule攔截
routingengine(路由引擎)
提供了HttpContext數據到routing engine! UrlRoutingModule實現了IHttpModule接口
了注冊!
UrlRoutingModule 具體的數據結構如下
public class UrlRoutingModule : IHttpModule
{
// 主要的 Methods
protected virtual void Init(HttpApplication application);
private void OnApplicationPostMapRequestHandler(object sender
private void OnApplicationPostResolveRequestCache(object sender
public virtual void PostMapRequestHandler(HttpContextBase context);
public virtual void PostResolveRequestCache(HttpContextBase context);
void IHttpModule
// Properties public RouteCollection RouteCollection { get; set; }
}
UrlRoutingModule 在WebConfig的注冊
<httpModules> <add name=
System
</httpModules>
routing engine基於當前HttpContext確定Route的處理
在 IRouteHandler實例創建route處理!
IHttpHandler基於當前的HttpContext數據負責創建一個Controller(控制器)!IHttpHandler是由當前活動的
IRouteHandler的GetHttpHandler所創建!
具體的細節如下
public interface IRouteHandler
{
// Methods IHttpHandler GetHttpHandler(RequestContext requestContext);
}
在MVC應用程序中
和Url參數 與route 對應的
ControllerFactory 創建一個controller
觸發 controller的邏輯處理!
MvcHandler主要有一個ControllerBuilder _controllerBuilder字段;
具體細節如下
public class MvcHandler : IHttpAsyncHandler
{
// 主要的Fields private ControllerBuilder _controllerBuilder;
}
ControllerBuilder類主要有一個方法GetControllerFactory
public class ControllerBuilder
{
public IControllerFactory GetControllerFactory();
}
通過實現IControllerFactory 工廠 創建一個Controller
所有的controller 邏輯調用執行時
ActionResult
一個ActionResult實例
步的處 理
視圖引擎實例會創建一個IView接口實例
IView實例編譯請求視圖
From:http://tw.wingwit.com/Article/program/net/201311/12318.html