12.ASP.NET Core 中间件组件

这篇文章中,我将带领大家一起详细学习:ASP.NET Core Middleware Components.这篇文章中,我将详细讨论下面几个问题:

  1. 什么是ASP.NET Core 中的中间件组件?
  2. ASP.NET Core应用程序中,在哪里来使用中间件组件?
  3. 怎样来配置ASP.NET Core 应用程序中的中间件组件?
  4. 使用中间件组件的例子有哪些?
  5. ASP.NET Core应用程序中,中间件组件执行的顺序是?

什么是ASP.NET Core中间件组件?

ASP.NET Core中间件组件就是组装到应用程序中,处理HTTP请求和响应的软件组件(C# Classes)。每一个中间件组件执行下面的任务:

  1. 选择是否将HTTP请求传递给管道中的下一个组件
  2. 可以在管道中的下一个组件之前和之后执行工作

在ASP.NET Core中,已经有很多中间件组件,你可以直接拿去使用了。如果你愿意,还可以创建自己的中间件组件。你需要特别记住的一点就是:在ASP.NET Core 中一个中间件组件只做一个特定的事情。

在ASP.NET Core应用程序中,我们在哪里使用中间件组件呢?

下面是一些在ASP.NET Core应用程序中使用中间件组件的例子:

  1. 我们可能有一个中间件组件,用于用户身份验证
  2. 另外的中间件组件,用来记录请求和响应
  3. 同样,我们还有中间件组件用来处理异常
  4. 我们可能有中间件组件,来处理静态文件,例如:images、javascript、或者css文件等等
  5. 可能还有一个中间件组件,用来授权用户可以访问特定的资源

中间件组件是我们在ASP.NET Core中用来处理请求管道的组件。如果你了解过之前版本的.NET Framework,你就会知道,我们是使用Http Handlers和Http Moudles来处理请求和响应的。并且这两个将决定如何处理HTTP请求和响应。

怎样在ASP.NET Core应用程序中配置中间件组件?

在ASP.NET Core应用程序中,你需要使用Startup类文件中的Configure方法来配置中间件组件。这个Statrup在程序启动的时候,会执行。我们打开之前用空模板建的ASP.NET Core应用程序:

因此,不管你啥时候想要配置中间件组件,你都需要在Configure方法中,调用IApplicationBulider接口的UseXXX方法。在上面的图片中,你可以看到,使用了UseDeveloperExceptionPage中间件组件。

在接下来的文章中,我将详细介绍这个中间件组件。现在我们来好好理解一下,什么是中间件组件,以及它们如何工作的。

理解ASP.NET Core中的中间件组件

下面的图片解释了什么是中间件组件,以及它们怎么用在ASP.NET Core请求处理管道中的。

在ASP.NET Core应用程序中,中间件组件可以同时获取传入的HTTP请求以及传出的HTTP响应。所以一个中间件组件可以做下面的事情:

  1. 处理HTTP请求,生成HTTP响应
  2. 处理HTTP请求,修改请求,并传递给下一个中间件组件
  3. 处理HTTP响应,修改响应,传递给下一个中间件组件或者传递给ASP.NET Core Web服务器

使用中间件组件的例子

上面的图片中,我们看到有了一个日志记录的中间件组件。这个组件是简单的记录请求的时间,并且将其传递给下一个中间件组件。也就是静态文件中间件组件,来做进一步的处理。

ASP.NET Core中的中间件组件,可能同样处理HTTP请求,并生成响应报文。ASP.NET Core中间件组件,同样可以选择,不去调用下一个中间件组件。这个概念称为请求管道短路

例如,我们有一个静态文件的中间件组件,如果有请求,要获取静态文件,静态文件中间件组件就会去处理这个请求。处理完之后,静态文件中间件组件,不传递给下一个中间件组件(MVC中间件组件),这就称为请求管道短路。

我们已经知道了,ASP.NET Core中间件组件可以同时获取HTTP请求和HTTP响应。所以中间件组件也可以处理传出的响应。例如,日志组件可能记录时间,然后这个发送响应给客户端。

什么是中间件组件执行的顺序?

理解中间件组件执行的顺序非常重要!ASP.NET Core中间件组件执行的顺序,就是按照他们添加的顺序来的。所以我们需要格外注意,添加中间件的时候的顺序。

作为应用程序业务的需要,你可能会添加很多的中间件组件。例如,如果你开发静态文件的网站,那么你就需要静态中间件组件。

但是如果你开发动态的数据驱动的网站程序,那么你可能会添加,诸如:日志中间件、身份验证中间件、授权中间件、MVC中间件等等。

在我们下篇文章中,我将详细介绍如何配置中间件组件。这篇文章,只是介绍了中间件组件的一些常用概念,希望你能理解!

原文地址:https://www.cnblogs.com/caofangsheng/p/12642841.html

时间: 2024-08-03 19:40:33

12.ASP.NET Core 中间件组件的相关文章

Asp.net core 中间件简单应用

Asp.net core中间件 ,处理http请求和响应的中间组件,对比起asp.net ,asp.net core 管道机制,可以说是帅气十足,简单直接.下面是通过中间件对一个请求的url 指定路由 新建webapi 项目 Startup类中Configure方法中添加处理中间件代码如下 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app

ASP.NETCore学习记录(二) —— ASP.NET Core 中间件

ASP.NET Core 中间件 目录: IApplicationBuilder 什么是中间件 ? 使用 IApplicationBuilder 创建中间件 Run.Map 与 Use 方法 实战中间件 参考原文 我们知道在 ASP.NET 中,有一个面向切面的请求管道,由22个主要的事件构成,能够让我们在往预定的执行顺序里面添加自己的处理逻辑.一般采取两种方式:一种是直接在 Global.asax 中对应的方法中直接添加代码.一种是是在 web.config 中通过注册 HttpModule

ASP.NET Core 中间件基本用法

ASP.NET Core 中间件 ASP.NET Core的处理流程是一个管道,而中间件是装配到管道中的用于处理请求和响应的组件.中间件按照装配的先后顺序执行,并决定是否进入下一个组件.中间件管道的处理流程如下图(图片来源于官网): 管道式的处理方式,更加方便我们对程序进行扩展. 使用中间件 ASP.NET Core中间件模型是我们能够快捷的开发自己的中间件,完成对应用的扩展,我们先从一个简单的例子了解一下中间件的开发. Run 首先,我们创建一个ASP.NET Core 应用,在Startup

ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析

ASP.NET Core中间件(Middleware)进阶学习实现SOAP 解析. 本篇将介绍实现ASP.NET Core SOAP服务端解析,而不是ASP.NET Core整个WCF host. 因为WCF中不仅仅只是有SOAP, 它还包含很多如消息安全性,生成WSDL,双工信道,非HTTP传输等. ASP.NET Core 官方推荐大家使用RESTful Web API的解决方案提供网络服务. SOAP 即 Simple Object AccessProtocol 也就是简单对象访问协议.

ASP.NET Core - 中间件与管道(1)

今天来讨论一个ASP.NET Core 很重要概念管道和中间件,在ASP.NET Core中,针对HTTP请求采用pipeline也就是通常说的管道方式来处理,而管道容器内可以挂载很多中间件(处理逻辑)“串联”来处理HTTP请求,每一个中间件都有权决定是否需要执行下一个中间件,或者直接做出响应.这样的机制使得HTTP请求能够很好的被层层处理和控制,并且层次清晰处理起来甚是方便. 示意图如下: 为了再次说明管道和中间件的概念,举一个官方给出的权限验证的例子,中间件A,B分别按顺序挂载在管道容器中,

ASP.NET Core 中间件详解及项目实战

前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的Hello World,如果你觉得本篇文章对你有用的话,不妨点个[推荐]. 目录 中间件(Middleware)的作用 中间件的运行方式 中间件(Middleware)和过滤器(Filter)的区别 什么情况我们需要中间件 怎么样自定义自己的中间件 中间件(Middleware)的作用 我们知道,任何的一个web框架都是把http请求封装成

ASP.NET Core 中间件 中间件(Middleware)和过滤器(Filter)的区别

https://www.cnblogs.com/savorboard/p/5586229.html 前言 在上篇文章主要介绍了DotNetCore项目状况,本篇文章是我们在开发自己的项目中实际使用的,比较贴合实际应用,算是对中间件的一个深入使用了,不是简单的Hello World,如果你觉得本篇文章对你有用的话,不妨点个[推荐]. 目录 中间件(Middleware)的作用 中间件的运行方式 中间件(Middleware)和过滤器(Filter)的区别 什么情况我们需要中间件 怎么样自定义自己的

Asp.Net Core 中间件应用实践中你不知道的那些事

一.概述 这篇文章主要分享Endpoint 终结点路由的中间件的应用场景及实践案例,不讲述其工作原理,如果需要了解工作原理的同学, 可以点击查看以下两篇解读文章: Asp.Net Core EndPoint 终结点路由工作原理解读 ASP.NET CORE 管道模型及中间件使用解读 1.1 中间件(Middleware)的作用 我们知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终到达我们写的代码中.那么中间件就是在应用程序管道中的一个组件,用

asp.net core 视图组件(转)

介绍视图组件 视图组件是 ASP.NET Core MVC 中的新特性,与局部视图相似,但是它们更加的强大.视图组件不使用模型绑定,只取决于调用它时所提供的数据.视图组件有以下特点: 渲染一个块,而不是整个响应 在控制器和视图之间同样包含了关注点分离和可测试性带来的好处 可以拥有参数和业务逻辑 通常从布局页调用 视图组件可以用在任何需要重复逻辑且对局部视图来说过于复杂的情况,比如: 动态导航菜单 标签云 (需要从数据库查询时) 登录面板 购物车 最近发表的文章 一个典型博客的侧边栏内容 会在所有