Ø 前言web
ASP.NET 的應用程序都會有本身的消息處理管道和生命週期,好比:ASP.NET Web 應用程序(Web Form)、ASP.NET MVC,還有本文將討論的 ASP.NET Web API 2。消息處理管道是一個複雜的過程,致使於不少人對這塊半知半解,包括本人也是。本文將從如下幾點展開研究,不對之處,歡迎指出。api
1. 爲何要了解消息處理管道或生命週期服務器
咱們知道,Web 應用程序都是發佈到 IIS(服務器)上,提供給其餘程序訪問。而每一個請求「進來」,咱們的 IIS 幫咱們作了哪些事情呢?這就涉及到消息處理管道了,每一個一個請求進來,都會執行相同的生命週期。而有些消息管道是咱們能夠寫程序干預的,好比:DelegatingHandler(委託處理程序)、和一系列的過濾器等等。這樣咱們就能夠編寫本身的處理程序,來完成咱們制定的個性化需求了。asp.net
2. 首先, 咱們來看下 ASP.NET Web API 2 的生命週期(來至於:https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf)ide
1) 首先程序初始化時,自動建立了一個 HttpServer 對象,該對象用於配置整個Web 環境所需的配置,例如:委託處理程序、路由配置、過濾器、媒體類型格式化程序等等,該類繼承於 System.Net.Http.DelegatingHandler。也屬於委託處理程序中的一種,是比較特殊的處理程序。post
1. 委託處理程序:它是每一個請求必須經歷的消息通道,能夠指定多個消息處理程序,從而造成消息處理程序委託鏈,當請求到來時最早執行消息處理程序。委託處理程序繼承於 System.Net.Http.HttpMessageHandler 類,該類是消息處理程序的基類。spa
2. 路由配置:用於配置 HTTP 請求的路由格式,由 System.Web.Http.Dispatcher.HttpRoutingDispatcher 處理程序來找到請求的 Controller 和 Action,一樣繼承於 System.Net.Http.HttpMessageHandler 類。.net
3. 過濾器:也是咱們會常常接觸的,大體分爲四種類型:身份驗證過濾器、受權過濾器、動做過濾器、以及異常過濾器。orm
4. 媒體類型格式化程序:用於配置請求和響應媒體類型格式的相關設置,例如:Json、XML 格式的設置等。對象
待完善…