任务28:RequestDelegate管道实现思路

管道的实现机制

RequestDelegate是管道的核心。ApplicationBuilder就是接收了很多个RequestDelegae把它拼到一起。

第一种方式接受一个Context和next,next就是RequestDeletgate。这种方式是没有返回值的

下面这种方式是接受一个RequestDelegate,返回了一个RequestDelegate。

接收一个next自己没有做什么事情,把自己要做的事情封装成了一个Function交给别人,也就是我们的ApplicationBuilder来负责处理。

接下就去看一下我们的ApplicationBuilder,它是如何在你注册之后,我通过Build的方式构建整个管道的

看asp.net core的源代码

这里接收一个RequestDelegate

最终的Build的方法

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

最新文章

  1. Python学习路程day20
  2. 在CSDN中添加友情连接
  3. vbs获取命令行里的参数
  4. 微信JS-SDK
  5. springMVC配置freemarker
  6. HDU题目分类
  7. (转)RabbitMQ 集群与高可用配置
  8. HDU 3665 Seaside (最短路,Floyd)
  9. Afianl加载网络图片(延续)
  10. 修改android 开机画面
  11. 20165223 实验三 敏捷开发与XP实践
  12. 发布自己的类库到NuGet
  13. MySQL数据库驱动jar包
  14. 九、Brideg 桥接模式
  15. main.js 里的/* eslint-disable no-new */
  16. UVA11491 奖品的价值
  17. YzmCMSV3.1 | 代码审计
  18. 在Mac下配置php开发环境:Apache+php+MySql (卡在 给mysql 设置不了账号密码)
  19. javascript设为首页、加入收藏
  20. Spark Streaming之一:整体介绍

热门文章

  1. lamp安装手稿
  2. linux下二机制文件的查看和编辑
  3. centos 7 卸載 mysql
  4. SolidEdge如何复制特征 建立类似于UG 块的概念
  5. Oracle db中禁止使用sqlplus的方法
  6. linux系列之-—03 压缩和解压缩命令
  7. mac系统下为emacs设置中文字体,解决乱码问题
  8. 数组index
  9. VC编码规范(转)
  10. android控件之间事件传递