当前位置:网站首页>浅聊一下中间件
浅聊一下中间件
2022-07-04 22:23:00 【InfoQ】
先浅聊一下基本概念
再浅看一个实际案例
public class TestMiddleware1
{
private readonly RequestDelegate _next;
public TestMiddleware1(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
AnsiConsole.MarkupLine($"[red]我是第1个中间件,我过来了-{DateTime.Now}[/]");
await _next(context);
AnsiConsole.MarkupLine($"[red]我是第1个中间件,我退下了-{DateTime.Now}[/]");
}
}
public static class TestMiddlewareExtensions
{
public static void UseTest(this WebApplication app)
{
app.UseMiddleware<TestMiddleware1>();
}
}
var app = builder.Build();
...其他中间件
app.UseTest();
var app = builder.Build();
app.UseTest();
app.Use(async (context, next) =>
{
AnsiConsole.MarkupLine($"[Yellow]我是第2个中间件,我来自入口文件,我过来了-{DateTime.Now}[/]");
await next(context);
AnsiConsole.MarkupLine($"[Yellow]我是第2个中间件,我来自入口文件,我退下了-{DateTime.Now}[/]");
});
public class TestMiddleware1
{
private readonly RequestDelegate _next;
public TestMiddleware1(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
AnsiConsole.MarkupLine($"[red]我是第1个中间件,我过来了-{DateTime.Now}[/]");
await _next(context);
AnsiConsole.MarkupLine($"[red]我是第1个中间件,我退下了-{DateTime.Now}[/]");
}
}
public class TestMiddleware2
{
private readonly RequestDelegate _next;
public TestMiddleware2(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
AnsiConsole.MarkupLine($"[green]我是第2个中间件,我过来了-{DateTime.Now}[/]");
await _next(context);
AnsiConsole.MarkupLine($"[green]我是第2个中间件,我退下了-{DateTime.Now}[/]");
}
}
public class TestMiddleware3
{
private readonly RequestDelegate _next;
public TestMiddleware3(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
AnsiConsole.MarkupLine($"[blue]我是第3个中间件,我过来了-{DateTime.Now}[/]");
await _next(context);
AnsiConsole.MarkupLine($"[blue]我是第3个中间件,我退下了-{DateTime.Now}[/]");
}
}
public static class TestMiddlewareExtensions
{
public static void UseTest(this WebApplication app)
{
app.UseMiddleware<TestMiddleware1>();
app.UseMiddleware<TestMiddleware2>();
app.UseMiddleware<TestMiddleware3>();
}
}
边栏推荐
- 虚拟人产业面临的挑战
- [Yugong series] go teaching course 003-ide installation and basic use in July 2022
- 剑指Offer 68 - II. 二叉树的最近公共祖先
- 【lua】int64的支持
- Analog rocker controlled steering gear
- PHP short video source code, thumb animation will float when you like it
- Attack and defense world misc advanced grace-50
- Persistence mechanism of redis
- Attack and defense world misc advanced area can_ has_ stdio?
- [cooking record] - stir fried 1000 pieces of green pepper
猜你喜欢
Redis的持久化机制
Mongodb aggregation operation summary
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
MYSQL架构——用户权限与管理
Advanced area of attack and defense world misc 3-11
醒悟的日子,我是怎么一步一步走向软件测试的道路
The new version judges the code of PC and mobile terminal, the mobile terminal jumps to the mobile terminal, and the PC jumps to the latest valid code of PC terminal
Sobel filter
【室友用一局王者荣耀的时间学会了用BI报表数据处理】
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
随机推荐
攻防世界 MISC 进阶区 3-11
Locust performance test - environment construction and use
php短视频源码,点赞时会有大拇指动画飘起
环境加密技术解析
攻防世界 MISC 高手进阶区 001 normal_png
Logo special training camp Section IV importance of font design
记录:关于Win10系统中Microsoft Edge上的网页如何滚动截屏?
Unity vscode emmylua configuration error resolution
Unity-VScode-Emmylua配置报错解决
leetcode 72. Edit distance edit distance (medium)
Taobao commodity review API interface (item_review get Taobao commodity review API interface), tmall commodity review API interface
LOGO特训营 第一节 鉴别Logo与Logo设计思路
Introducing QA into the software development lifecycle is the best practice that engineers should follow
新版判断PC和手机端代码,手机端跳转手机端,PC跳转PC端最新有效代码
BigFilter全局交易防重组件的介绍与应用
MySQL Architecture - logical architecture
LOGO特訓營 第一節 鑒別Logo與Logo設計思路
Breakpoint debugging under vs2019 c release
Introduction and application of bigfilter global transaction anti duplication component
NFT Insider #64:电商巨头eBay提交NFT相关商标申请,毕马威将在Web3和元宇宙中投入3000万美元