net core 中间件(MiddleWare)
定义:中间件是被组装成一个应用程序管道来处理请求和响应的软件组件。
上图是由微软提供的一个执行图,我们可以看到有多个中间件,每个中间件请求的时候有个next()方法把职责传递给下一个中间件,这里值得注意的是最后一个中间件没有next方法,也就是终止,然后响应。
每一个中间件都有它自己的职责,把各个执行分离开执行完成后传递给下一个,直到全部的都执行完成,这有点像职责链模式。那么它内部是怎么实现的呢,下面我们看看
值得注意的是,StartUp类里面包含两个方法,ConfigureServices是专门负责容器,Configure是负责http管道方法,所以中间件实在configure方法里面的。
我们来看看IApplicationBuilder这个里面有什么
如上图所示,我们在使用Use的时候,传入的中间件添加到委托上,传入和返回的都是一个RequestDelegate类型的,当我们进入这个方法的时候,发现它是携带HttpContext的
Use、Run 和 Map介绍
Use:上面我们可以看到他里面传入的是一个Request Delegate的委托方法,里面有一个Next()传递给下一个中间件的方法,如果该方法不执行,那么下面的中间件也是不会执行的,我们称之为短路中间件。
Run:是一种约定,并且某些中间件组件可公开在管道末尾运行的 Run[Middleware]
方法。
Map:扩展用作约定来创建管道分支。 Map*
基于给定请求路径的匹配项来创建请求管道分支。 如果请求路径以给定路径开头,则执行分支。
下面我们来看看短路中间件
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{app.Use(async (context,next)=> {await context.Response.WriteAsync("use\n");//await next.Invoke();});app.Run(async (context) =>{await context.Response.WriteAsync("run");});
}
我们来自定义一个中间件
//这是我们的中间件
public class UseTestMiddleWare
{private readonly RequestDelegate _next;public UseTestMiddleWare(RequestDelegate next){_next = next;}public async Task Invoke(HttpContext context){await context.Response.WriteAsync("invoke\n");await _next.Invoke(context);}
}
//我们需要把中间件添加到扩展里面才能使用它
public static class UseTestMiddleWareExtensions
{public static IApplicationBuilder UseTestMiddleWare(this IApplicationBuilder builder){return builder.UseMiddleware<UseTestMiddleWare>();}
}
调用:
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{app.UseTestMiddleWare();app.Run(async context =>{await context.Response.WriteAsync("hello");});
}
net core 中间件(MiddleWare)相关推荐
- ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
ASP.NET Core中间件(Middleware)进阶学习实现SOAP 解析. 本篇将介绍实现ASP.NET Core SOAP服务端解析,而不是ASP.NET Core整个WCF host. 因 ...
- ASP.NET Core -中间件(Middleware)使用
ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...
- ASP.NET Core 中间件Diagnostics使用
ASP.NET Core 中间件(Middleware)Diagnostics使用.对于中间件的介绍可以查看之前的文章ASP.NET Core 开发-中间件(Middleware). Diagnost ...
- ASP.NET Core 中间件(Middleware)详解
ASP.NET Core 中间件(Middleware)详解 原文:ASP.NET Core 中间件(Middleware)详解 本文为官方文档译文,官方文档现已非机器翻译 https://docs. ...
- ASP.NET Core 开发-中间件(Middleware)
ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...
- ASP.NET Core中间件初始化探究
前言 在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,ASP.NET Core默认也为我们内置了许多的中间件,甚至有时候我们需要自定义中间件来帮我们处理一些请求管道 ...
- Asp.Net Core 中间件应用实战中你不知道的那些事
一.概述 这篇文章主要分享Endpoint 终结点路由的中间件的应用场景及实践案例,不讲述其工作原理,如果需要了解工作原理的同学, 可以点击查看以下两篇解读文章: •Asp.Net Core EndP ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件.每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下一 ...
- ASP.NET Core 中间件
1.前言 中间件(middleware)是一种装配到应用管道以处理请求和响应的组件.每个组件: ●可选择是否将请求传递到管道中的下一个组件. ●可在管道中的下一个组件前后执行工作. 请求委托(requ ...
- 利用Asp.Net Core的MiddleWare思想处理复杂业务流程
最近利用Asp.Net Core 的MiddleWare思想对公司的古老代码进行重构,在这里把我的设计思路分享出来,希望对大家处理复杂的流程业务能有所帮助. 背景 一个流程初始化接口,接口中根据传入的 ...
最新文章
- Tomcat 下载安装、配置、启动、报错问题
- hashset java 键值对_Java中的各个容器的性能对比
- 认清几种视频接口标准---无私奉献版
- java中inputstream_java中InputStream String
- ubuntu16.04下安装ibus拼音
- Canny边缘检测算法原理及其VC实现详解(一)
- Acrobat Pro DC 教程,如何将演示文稿转换为 PDF 文件?
- QQ头像无法加载,显示初始默认头像的解决方法
- 八人抢答器讲解_八人抢答器PLC控制系统设计(最终版)最新版
- stay here forever中文歌词
- html 去掉右键菜单,右键菜单管理清除多余项目的方法教程
- 《指弹:November.28th》
- 百度智能云虚拟主机搭建ThinkPHP5.0项目
- 上位机软件开发流程是怎样的?上位机开发软件分享
- 薛定谔 | 分子对接及基于受体的虚拟筛选
- 单片机延时方式及使用方法
- 【OJ每日一练】1114 - 坐大巴
- centos7 离线安装docker和docker-compose
- subprocess.Popen()
- POP800免费在线客服系统