Net Core 管道机制

当请求过来之后,进入管道中 一个个的中间件进行处理,然后短路进行返回 在从后往前一个个的中间件结束出去

其实就是在将一个委托请求在 中间件中传递

IApplicationBuilder app  请求管道  中间件(func<>委托)  在这个配置中心 做的工作就是 说明一下委托 然后呢 放到list中

app.Use  添加一个中间件(func<>委托)

app.Run 添加一个人工建造终端中间件 (func<>委托)

app.UseMiddleWare() 自定义中间件 (func<>委托)

原理是:1 在配置 app .use 和 app .run  的时候其实是源码 ApplicationBuilder.use  就是先把 func<>委托 添加到  List<> compents 中

              2 然后 源码 ApplicationBuilder.bulid 构造的时候 

                 1:建立终端中间件 (防止人工建造没有一个中间件的情况)  2  翻转 list  compents 保证顺序 循环操作 

                 3:循环中 从终端中间件委托调用上一个委托在返回上一个委托   建立委托之间包含关系 形成一条链子 就是 next的作用  (责任链模式)

执行的时候是 主机  run的时候 把请求过来 调用第一个中间件 然后 就 一个个的进行了 执行  短路后返回 响应

 

//自定义中间件的一些约束 RequestDelegate   InvokeAsync

publicclassCustomMiddleware

{

privatereadonlyRequestDelegate _next;

publicCustomMiddleware(RequestDelegate next)

{

_next = next;

}

publicasyncTask InvokeAsync(HttpContext httpContext)

{

Console.WriteLine( "CustomMiddleware (in)");

await_next.Invoke(httpContext);

Console.WriteLine( "CustomMiddleware (out)");

}

}

publicstaticclassCustomMiddlewareExtension

{

publicstaticIApplicationBuilder UseCustomMiddle(thisIApplicationBuilder builder)

{

returnbuilder.UseMiddleware<CustomMiddleware>;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值