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();

最终效果

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

相关推荐
特立独行的猫a1 小时前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
小易老师AI实战3 小时前
用中间件把任务规划嵌进智能体循环
中间件·状态管理·智能体·工具调用·langgraph·任务规划
绿蕉1 天前
从硬件内卷到“中间件荒“——仿真工具、开发接口、开源生态
中间件·机器人
小易老师AI实战1 天前
LangGraph Agent 任务规划中间件:TodoListMiddleware 原理解析
中间件·agent·langgraph·任务规划·大模型智能体
eleven_4u2 天前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
喵了几个咪3 天前
GoWind ShortPlay 拆解:Ent privacy/viewer 多租户隔离——从中间件到 SQL 的零信任链
sql·中间件·信任链
ctlover4 天前
langchain 中间件
中间件·langchain·1024程序员节
宝贝儿好7 天前
【LLM】第十一章:Agent中间件2:ModelCallLimitMiddleware
中间件
梦影_8 天前
Langchain简单快速上手教程(九)—— 核心组件之少样本提示
人工智能·python·自然语言处理·中间件·langchain
梦影_9 天前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件