.Net5跨平台本质
跨平台的原因在于框架已经内置了一个主机,只要是程序启动,就是启动了主机,就可以监听端口;请求来了,只要是请求这个端口,主机就可以相应,所以无论是Windows还是在Linux下开发,都是要第一步完成环境的;这样就不同拘泥于在Windows还是Linux上。
中间件
中间件的执行,是一个俄罗斯套娃;
1.先use先执行,每一次Use一个中间件,其实就是在之前的基础上,套了一层;
2.请求来了以后,真正执行的时候,是一层一层的内部执行,然后再执行出来; --俄罗斯套娃
增加程序的扩展性,如果想要增加一层,直接增加一个中间件就可以来完成;
.NET5常用中间件
1.app.Run中断式,只要是使用当前中间件,后面的中间件都不执行;
2.app.Map判断路径中是否包含什么内容;
3.app.MapWhen判断式,两个委托,第一个委托作为判断条件内容, 第二个委托,是要执行的逻辑;
中间件的多种引用方式
1.中间件的内容可以独立开放入到一个独立的类中去--需要一个规则
public class FirstMiddleware
{
/// <summary>
/// 要求构造函数带有RequestDelegate参数类型——目的是为了得到下一个中间件;
/// 必须包含async Task Invoke方法,方法参数为HttpContext
/// </summary>
///
private readonly RequestDelegate _next;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="next"></param>
public FirstMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
await context.Response.WriteAsync($"<h1 style='color:red'>{nameof(FirstMiddleware)}——Hello Word Start</h1>");
await _next(context);
await context.Response.WriteAsync($"<h2 style='color:blue'>{nameof(FirstMiddleware)}——Hello Word End</h1>");
}
}
2.startup.cs中添加
//扩展中间件
app.UseMiddleware<FirstMiddleware>();