1. 程式人生 > >ASP.NET Core 管道

ASP.NET Core 管道

從圖中可以看到,RequestDelegate 攜帶著 HttpContext 一路經過各種 Server、Hosting 等,最終到達了由 IApplicationBuilder 構建出來的 Application pipeline 這一管道區域,然後再經過各種中介軟體處理,最終構建出來了我們的 Response,而我們的工具箱 也正是在這個過程中變得 “ 飽滿 ” 起來。

有一個需要知道的知識點就是,中介軟體是怎麼樣新增或者叫註冊到管道中的呢? 又是如何被應用起來的呢?

上面的圖可以看到,橙色區域的 Application pipeline 是由 IApplicationBuilder 構建起來的。也就是說我們可以在 IApplicationBuilder 做點什麼東西來新增我們的中介軟體。 是的 IApplicationBuilder 暴露出來了一個 IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware); 方法來讓我們註冊中介軟體,也就是說位於 Startup.cs 檔案中的 Configure 方法。

那麼又是怎麼樣應用起來的呢? IApplicationBuilder 在 Hosting 中有一個 IApplicationBuilderFactory 的物件,Hosting 通過這個Factory 建立之後就會傳遞到了 HostingApplication 物件中,最後由 IWebHost 物件呼叫 IServer 物件的Start 同時把 HostingApplication傳遞進去來最終啟動服務端。可以對照上面的圖理解一下。