任務28:RequestDelegate管道實現思路

任務28:RequestDelegate管道實現思路git

管道的實現機制github

RequestDelegate是管道的核心。ApplicationBuilder就是接收了不少個RequestDelegae把它拼到一塊兒。api

 

第一種方式接受一個Context和next,next就是RequestDeletgate。這種方式是沒有返回值的asp.net

下面這種方式是接受一個RequestDelegate,返回了一個RequestDelegate。ui

接收一個next本身沒有作什麼事情,把本身要作的事情封裝成了一個Function交給別人,也就是咱們的ApplicationBuilder來負責處理。spa

 

接下就去看一下咱們的ApplicationBuilder,它是如何在你註冊以後,我經過Build的方式構建整個管道的.net

看asp.net core的源代碼blog

這裏接收一個RequestDelegateget

 

最終的Build的方法it

ApplicationBuilder的源代碼

https://github.com/aspnet/AspNetCore/blob/master/src/Http/Http/src/Internal/ApplicationBuilder.cs

最後進行了反轉

 

RunExtensions的Run方法

https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.builder.runextensions.run?view=aspnetcore-2.0

相關文章
相關標籤/搜索