ASP.NET Core Middleware的实现方法详解(2)

容器中每个元素对应每个中间件的行为委托Func<RequestDelegate, RequestDelegate> , 这个行为委托包含2个关键行为:输入下一个中间件的执行委托next:RequestDelegate, 完成当前中间件的Invoke函数: RequestDelegate;

通过build方法完成前后中间件的链式传值关系

ASP.NET Core Middleware的实现方法详解

分析源码:回答上面的问题:

使用反射构造中间件的时候,第一个参数Array[0] 是下一个中间件的执行委托

当前中间件执行委托 函数名称被限制为: Invoke/InvokeAsync, 函数支持传入除HttpContext之外的参数

按照代码顺序添加进入 _components容器, 通过后一个中间件的执行委托 -----(指向)----> 前一个中间件的输入执行委托建立链式关系。

附:非标准中间件的用法

短路中间件、 分叉中间件

整个处理管道的形成,存在一些管道分叉或者临时插入中间件的行为,一些重要方法可供使用

Use方法是一个注册中间件的简便写法

Run方法是一个约定,一些中间件使用Run方法来完成管道的结尾

Map扩展方法:请求满足指定路径,将会执行分叉管道,强调满足 path

MapWhen方法:HttpContext满足条件,将会执行分叉管道:

UseWhen方法:选择性的注入中间件 

ASP.NET Core Middleware的实现方法详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsdys.html