任务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

相关文章
相关标签/搜索