Day15-5:中间件 封装为 扩展方法

只要是自定义中间件,无论简单复杂,全部封装成扩展方法!

  • 日志中间件 → app.UseLogMiddleware() → 必须封装
  • 异常中间件 → app.UseGlobalException() → 必须封装
  • 以后任何中间件 → 全都封装

这不是可选,是规范、专业、架构整洁度的体现。

一、为什么中间件要封装?

  1. Program.cs 干净、清爽、一眼看懂( Program.cs 只负责调用 ,不负责细节**)**
  2. 符合官方风格(UseCors、UseRouting...)
  3. 以后加参数、加配置,不用动 Program.cs
  4. 别人一看就知道你是专业后端

二、最关键的一句话(背住)

UseMiddleware 是底层机制,拓展方法是规范封装( 拓展方法 = 语法糖 = 让代码更优雅、更规范、更像官方框架风格**)**

功能一样,档次不一样。现在可以这么理解:

  • app.UseMiddleware<T>() = 毛坯房
  • app.UseGlobalException() = 精装修房

能住,但好看、规范、专业完全不同

三、拓展 最终标准代码(例)

1. 日志中间件扩展方法(新建文件)

MiddlewareExtensions.cs

复制代码
using Microsoft.AspNetCore.Builder;

// 静态类
public static class MiddlewareExtensions
{
    /// <summary>
    /// 全局异常中间件
    /// </summary>
    public static IApplicationBuilder UseGlobalException(this IApplicationBuilder app)
    {
        return app.UseMiddleware<ExceptionMiddleware>();
    }

    /// <summary>
    /// 请求日志中间件
    /// </summary>
    public static IApplicationBuilder UseRequestLog(this IApplicationBuilder app)
    {
        return app.UseMiddleware<LogMiddleware>();
    }
}

2. Program.cs 调用(超级干净)

复制代码
// 中间件顺序:日志 → 异常 → 其他
app.UseRequestLog();        // 日志
app.UseGlobalException();   // 异常

app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();

最终效果

干净、规范、专业、可维护、可扩展。

相关推荐
van久3 小时前
Day15-1:日志 中间件/过滤器、Serilog 的配合使用
中间件
海市公约1 天前
FastAPI中间件与依赖系统实战指南
中间件·fastapi·依赖注入·异步编程·web架构·代码复用·拦截器模式
8Qi82 天前
RabbitMQ高级篇:消息可靠性、幂等性与延迟消息
java·分布式·微服务·中间件·rabbitmq·springcloud
fuquxiaoguang2 天前
中间件行业产品市场洞察报告 – 2026年第一季度
中间件·市场洞察
fuquxiaoguang2 天前
灰度·熵减·长期主义:任正非心智模型下的中国中间件技术突围与未来
中间件·任正非
van久3 天前
Day10:ASP.NET Core 管道与中间件
中间件
We་ct3 天前
JS手撕:手写Koa中间件与Promise核心特性
开发语言·前端·javascript·中间件·node.js·koa·co
Meme Buoy6 天前
13.6其他架构评估方法-中间件
中间件·架构
我是李龙7 天前
第二十六章 全链路监控体系: 服务器资源、中间件状态与业务指标的可视化大屏开发
中间件