前言
要建立客製化的解析器可以實現IDependencyResolver
介面並使用DependencyResolver.SetResolver
替換DefaultDependencyResolver
預設解析器
DependencyResolver
,Controller
和ControllerFactory
關係如下圖
我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.
要建立客製化的解析器可以實現IDependencyResolver
介面並使用DependencyResolver.SetResolver
替換DefaultDependencyResolver
預設解析器
DependencyResolver
,Controller
和ControllerFactory
關係如下圖
我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.
IOC
依賴反轉是oop
重要程式設計思想。(Ioc—Inversion of Control
控制反轉)
詳細資訊可以查看小弟另一篇文章 IOC(控制反轉),DI(依賴注入) 深入淺出~~
有沒有人會很好奇說為什麼只需要透過DependencyResolver.SetResolver
方法我就可以直接使用AutoFac
或其他IOC容器?
今天跟大家分享Asp.net MVC
利用什麼設計技巧,讓外部IOC
容器可以很方便融入系統中.
上篇得知MVC預設透過DefaultControllerFactory
反射方式動態建立Controller
物件
本篇會分享我們常用到Controller
基礎類別和相關物件.
我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.
此篇同步發布在筆者Blog [Day12] 談談Controller幾個重要成員
前篇介紹MVC使用HttpHandler
是MvcHandler
透過並MvcRouteHandler
物件來返回.
我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.
大家介紹如何取得Controller
執行物件
前一篇介紹路由封裝了Http請求路徑資訊可以讓我們找到相對應的Action
和Controller
並呼叫執行外,也可透過MapPageRoute
來將請求教給.aspx
實體檔案來處理請求.
Route
甚至可以讓我們自己客製化處理HttpHandler
在Route中建立處理客製化HttpHandler可謂很有彈性
本篇介紹Route
物件建立MvcRouteHandler
物件且如何取到IHttpHandler
.
前面和大家分享StepManager
是如何建立管道和依序呼叫IHttpModule
註冊事件
查看原始碼好站 Reference Source
此文的程式碼比較多我會在原始碼上邊上說明相對應編號方便大家觀看
今天跟大家分享HttpAppliaction
是如何找到要執行的IHttpHandler
物件.
此篇同步發布在筆者Blog [Day07] Asp.Net重要物件HttpApplication(三) 取得執行的IHttpHandler
上一篇文章分享HttpApplicationFactory.GetApplicationInstance
方法返回一個HttpApplication
給HttpRuntime
來呼叫使用.
今天開始介紹HttpApplication
這個很重要的類別,它可謂是我們Asp.net
中很複雜但重要的類別
Global.cs
是繼承HttpApplication
類別,但為什麼需要繼承這個類別呢? 讓我們繼續看下去.
附上Asp.net
執行請求流程圖.
在前一篇我們說到HttpRunTime
會透過GetApplicationInstance
來取得一個IHttpHandler
對象.
今天跟著原始碼來了解到底回傳一個什麼IHttpHandler
物件給HttpRunTime
使用.
查看原始碼好站 Reference Source
上一篇我們介紹HttpModule & HttpHandler
對於
今天正式進入.Net CLR
處理Http請求的世界.
先附上Asp.net
執行請求流程圖.
現在開始講解藍色區塊.
查看原始碼好站 Reference Source
上一篇文章我們有說 Asp.net 有兩個核心組件 IHttpMoudle & IHttphandler
Asp.net
是一個pipeline
的模型,理解這些管道除了可以讓我們節省許多不必要的資源浪費也可讓我們程式架構更加有條理.
就像我們在Asp.net MVC
如果要寫權限驗證程式碼,雖然可以寫在Controller
的Action
中
但更好做法是我可以寫一個類別繼承AuthorizeAttribute
並override
OnAuthorization
方法並掛上此標籤.
更了解這些原理可以讓我們寫程式事半功倍.