重庆熊猫 Loading

ASP.NET Core教程-Pipeline(请求管道)

更新记录
转载请注明出处:
2022年11月20日 发布。
2022年11月16日 从笔记迁移到博客。

请求管道是什么

类似于水的管道,有流进流出。在ASP.NET CoreServer进行监听用户的请求,然后请求被处理为HttpContext上下文对象,最终被Application处理为Respose,这个过程通过请求管道来完成。请求管道由多个中间件组成。

image

用户如果要获取 Web页面或其他数据,可以发送一个HTTP请求到服务器,过程中会经过一个个中间件,获取结果之后,反向通过中间件直至返回给用户。这就是ASP.NET Core的一次请求的接收与处理过程。这一个个中间件组成了ASP.NET Core的请求处理管道,整条管道就像高速公路,使请求从公路的一侧行驶到达目的地,又从公路的另一侧返回出发地。在请求发起前,这条管道就已经构建完成,管道的构建发生在应用启动阶段。

请求管道中的中间件处理过程

using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;

namespace Demo.WebAPI
{
    public class SampleMiddleware
    {
        //下一个中间件的引用
        private readonly RequestDelegate _next;
	    //注入下一个中间件
        public RequestCultureMiddleware(RequestDelegate next)
        {
            _next = next;
        }
        
	    //执行中间件
        public async Task InvokeAsync(HttpContext context)
        {
            //region 执行中间件代码1
            //......
            
            //调用下一个中间件
            await _next(context);
            
            //region 执行中间件代码2
            //......
        }
    }
}

其中,第一个region就是进入第一个中间件时的操作语句,中间的_next(context)则是出了当前中间件进入下一个中间件,最后一个#egion则是从进入的下一个中间件回到先前中间件时的操作。以高速公路为例,一个中间件相当于一个地区,去和回的行程一共会经过这个地区两次,所以每个中间件可以有两次处理请求的机会。

注册中间件到请求管道

请求经过各个中间件的创建中间件之后,需要将其添加到请求处理管道才能生效,此过程可由 Startup中的Configure 方法实现,这个方法可供我们按照一定顺序将一系列中间件构建成请求处理管道。

app.UseMiddleware<SomeMiddleWare>();
posted @ 2022-11-20 09:45  重庆熊猫  阅读(330)  评论(0编辑  收藏  举报