ASP.NET Web API 處理架構


這篇文章主要是介紹ASP.NET Web API的處理架構:當一個HTTP請求到達直到產生一個請求的過程。ASP.NET Web API 的處理架構圖如下,主要有三層組成:宿主(hosting),消息處理管道(message handler pipeline)和控制器處理(controller handling).

processing-architecture 

宿主(Hosting)

底層負責Web API的宿主,Web API之間的接口和HTTP 處理引擎。一句話,這一層負責創建HttpRequestMessage實例。然后把他們推入到上層的消息處理管道。宿主層也負責消息處理管道返回的HttpResponseMessage 。目前在ASP.NET Web API里頭已經內建的宿主選項有2個:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.net 的處理管道里,Self-hosting 是基於WCF channel stack,的 WCF Message 實例  ,然后轉換到 HttpRequestMessage 實例然后把他們推給上層的消息處理管道。 Web-hosting 是基於IHttpAsyncHandler, 命名為 HttpControllerHandler, 它把 HttpRequest 轉換為HttpRequestMessage.當然Web API hosting 是可擴展的,不僅僅局限於這兩個選項,你可以根據自己的需求定制,社區已經有人實現第三方的宿主Louis DeJardinOWIN created a host 。 

消息處理管道(Message Handler Pipeline)

中間層是 message handler pipeline,這一部分就是 WCF Web API 的內容了,通過 HttpServer 類暴露, 他也擴展了 HttpMessageHandler 。這條管道提供了中間層的各種擴展點(addressing cross-cutting concerns)例如: 日志, HTTP 驗證, ……

通常在這個管道的頂端是一個特殊的處理器: HttpControllerDispatcher。這個處理器負責獲取和調用 一個  控制器(Controler) 處理請求。只是在使用基於控制器的編程模型(ApiController的派生類)的時候才使用HttpControllerDispatcher ,也可以使用完全不同的模型,只需要把最頂端的這個消息處理器替換掉就可以哦。

控制器處理(Controller Handling)

最后, 上層的控制器處理相關的流程,即:

這些處理過程都在 ApiController 實例里頭完成, 被 HttpControllerDispatcher所調用。

上面的整個處理流程還是非常清晰地,本文只是簡單的介紹下整個處理流程,后續的文章詳細介紹各個部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM