📜  ASP.NET Core 中的中间件

📅  最后修改于: 2022-05-13 01:54:50.593000             🧑  作者: Mango

ASP.NET Core 中的中间件

在本文中,我们将了解 asp.net core 中的中间件是什么。中间件是 asp.net 核心中的一个非常广泛的术语,中间件是一种可以处理 HTTP 请求或响应的软件。例如,我们可能有一个用于验证用户身份的组件的中间件,另一个用于处理错误的中间件,还有另一个用于提供静态文件(如 JavaScript 文件 CSS 文件图像等)的中间件。

我们使用这些中间件组件来设置请求处理管道,正是这个管道决定了如何处理请求,请求管道通过这个配置方法配置为应用程序启动的一部分。

中间件排序

现在让我们了解中间件在 asp.net 核心中的一般工作原理。

Spirited 核心中组件的中间件可以访问传入请求和传出响应,因此在合并中,组件可以处理传入请求,然后将该请求传递给管道中的下一个中间件进行进一步处理。

例如,假设日志中间件是我们的应用程序请求处理管道中的第一个中间件,因此当请求从 Web 服务器到达时,该中间件会记录收到请求的时间,然后将该传入请求传递给我们的下一个中间件静态文件中间件的情况以进一步处理中间件组件可能会处理传入的请求并决定不调用管道中的下一个中间件,这称为短路。

请求管道短路是可取的,因为它可以防止不必要的工作,例如,如果请求获取静态文件(图像、CSS、JavaScript 文件等)。使用这些静态文件,中间件可以处理和服务该请求,然后将管道的其余部分短路,这在我们的例子中意味着静态文件。如果请求是针对像图像这样的静态文件,中间件将不会调用作为 MVC 中间件的下一个中间件。

例如,中间件组件也可以简单地忽略传入的请求,然后将该请求传递给下一个中间件进行进一步处理。假设这次我们向 /employees 的本地主机发出请求,基本上我们想要检索所有员工的列表,所以当这个请求从网络服务器到达我们管道中的第一个中间件时,记录这个中间件只是记录时间接收到请求,然后将该请求传递给下一个中间件(在我们的例子中)到静态文件中间件,因为这个请求不是针对像图像 CSS 文件 JavaScript 文件等静态文件的。

静态文件中间件可能对处理此请求不感兴趣,因此它只会将该请求传递给下一个中间件,即 MVC 中间件,这是一个 MVC 请求,因此 MVC 中间件知道如何处理该请求,因此相应的 MVC 控制器会生成此时的 HTTP 响应管道将自身反转 MVC 中间件将该响应传递给静态文件,其中静态文件中间件对进一步处理该响应不感兴趣,因此它可能只是将该责任传递给下一个中间件,即日志中间件。这个中间件可以简单地锁定接收响应的时间,记住这个日志中间件也有它接收到请求的时间。因此,使用这两次,它还可以计算为该请求提供服务所需的总时间,然后将该响应传递给 Web 服务器,然后可以将该响应发送给发出请求的客户端,因此管道中的这些中间件组件确定如何在拆分或网络核心中处理请求这些中间件组件按照它们添加到管道的顺序执行,应注意以正确的顺序添加中间件。否则,应用程序可能无法按预期函数。

要在应用程序中使用中间件,我们必须使用请求委托构建处理 HTTP 请求的请求管道。我们可以通过 IApplicationBuilder 上的“Run”、“Map”和“Use”方法来配置请求委托。

这些委托将决定是否应将请求传递给应用程序管道中的下一个组件。它还可以在调用应用程序管道中的下一个组件之前和之后执行保存数据等操作。然后响应以类似的方式通过管道返回。