ASP.NET Web API 处理架构
這篇文章主要是介紹ASP.NET Web API的處理架構(gòu):當(dāng)一個HTTP請求到達(dá)直到產(chǎn)生一個請求的過程。ASP.NET Web API 的處理架構(gòu)圖如下,主要有三層組成:宿主(hosting),消息處理管道(message handler pipeline)和控制器處理(controller handling).
?
宿主(Hosting)
底層負(fù)責(zé)Web API的宿主,Web API之間的接口和HTTP 處理引擎。一句話,這一層負(fù)責(zé)創(chuàng)建HttpRequestMessage實例。然后把他們推入到上層的消息處理管道。宿主層也負(fù)責(zé)消息處理管道返回的HttpResponseMessage 。目前在ASP.NET Web API里頭已經(jīng)內(nèi)建的宿主選項有2個:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.net 的處理管道里,Self-hosting 是基于WCF channel stack,的 WCF Message 實例? ,然后轉(zhuǎn)換到 HttpRequestMessage 實例然后把他們推給上層的消息處理管道。 Web-hosting 是基于IHttpAsyncHandler, 命名為 HttpControllerHandler, 它把 HttpRequest 轉(zhuǎn)換為HttpRequestMessage.當(dāng)然Web API hosting 是可擴(kuò)展的,不僅僅局限于這兩個選項,你可以根據(jù)自己的需求定制,社區(qū)已經(jīng)有人實現(xiàn)第三方的宿主Louis DeJardin在OWIN?created a host 。?
消息處理管道(Message Handler Pipeline)
中間層是 message handler pipeline,這一部分就是 WCF Web API 的內(nèi)容了,通過 HttpServer 類暴露, 他也擴(kuò)展了 HttpMessageHandler 。這條管道提供了中間層的各種擴(kuò)展點(addressing cross-cutting concerns)例如: 日志, HTTP 驗證, ……
通常在這個管道的頂端是一個特殊的處理器: HttpControllerDispatcher。這個處理器負(fù)責(zé)獲取和調(diào)用 一個? 控制器(Controler) 處理請求。只是在使用基于控制器的編程模型(ApiController的派生類)的時候才使用HttpControllerDispatcher ,也可以使用完全不同的模型,只需要把最頂端的這個消息處理器替換掉就可以哦。
控制器處理(Controller Handling)
最后, 上層的控制器處理相關(guān)的流程,即:
- Action selection;
- Filter execution;
- Model binding;
- Action invocation;
- Response content creation via formatters.
這些處理過程都在 ApiController 實例里頭完成, 被 HttpControllerDispatcher所調(diào)用。
上面的整個處理流程還是非常清晰地,本文只是簡單的介紹下整個處理流程,后續(xù)的文章詳細(xì)介紹各個部分。
轉(zhuǎn)載于:https://www.cnblogs.com/shanyou/archive/2012/03/17/2404180.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Web API 处理架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老白干多少钱一瓶啊?
- 下一篇: ASP.NET 泛型类型 Diction