探究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方法:HttpContext满足条件 则插入中间件

探究ASP.NET Core Middleware实现方法

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

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