asp.net core 管道模型及中间件MiddleWare原理

 

最近因为某些原因想深入了解asp.net core管道模型,所以反复百度看资料,看源码,看视频课程,在这里记下我所学到的。

asp.net core管道模型实际上是.net core从http请求到请求响应整个的处理过程,又被人称做是洋葱模型或者是俄罗斯套娃模型,我们来看看,这个究竟是怎么回事。

.NET CORE管道模型.png

Request请求进来到第一个中间件,然后流转到第二个中间件,然后进入第三个中间件,再一层一层Response出去,可以在中间件里写各种服务,比如日志,方法执行时间也就是性能,非常适用于“请求-响应”场景,接下来我用代码的方式创建几个中间件,模拟整个过程。

上图就是代码建立Use几个中间件,最后一个中间件的Invoke注释掉了,我将源码也放上面:

可以看到最后一个Invoke在源码里,就是说源码Use方法里自带了一个下一步传递功能,从源码来看如果没有中间件就会报404,最有意思的是foreach里的_components.Reverse()方法其实是一个反序方法,所以整个过程是先用一个盒子将最后一个中间件装上,然后用大一点的盒子装第二个中间件,第二个中间件的Invoke会把第三个盒子带上,最后用更大的盒子将第一个中间件装上,第一个中间件的Invoke会把第二个盒子带上,层层嵌套,这就是asp.net core的管道模型,我们运行下,验证下它整个的执行顺序

 

 

认识到这个模型,对之后的开发会有很大的帮助,比如AOP拦截器,面向切片式编程。

今天分享到这,学海无涯苦作舟!接下来会持续分享。

原文地址:https://www.cnblogs.com/Sunnykeke/p/15127329.html