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

最终效果

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

相关推荐
hyunbar2 小时前
LangChain 实战:什么是MiddleWare(中间件)?
中间件·langchain
NineData7 小时前
NineData智能数据管理平台新功能发布|2026年8月
数据库·人工智能·oracle·中间件·agent·数据库开发·ninedata
老猿讲编程10 小时前
【Eclipse OpenSOVD学习之十一】网关二进制与部署
学习·中间件·rust·eclipse·汽车
Terra.K12 小时前
JAVA职业探索和学习----中间件开发目标
java·学习·中间件
总是幸福的老豌豆1 天前
EmbCom · 具身智能传输中间件
中间件
2401_868534781 天前
第十章 网络规划设计
安全·中间件
「、皓子~3 天前
海狸IM 2.1 私有化部署从零到一:中间件、微服务与 Nginx 全流程
nginx·flutter·微服务·中间件·开源软件·im·海狸im
2401_868534784 天前
中间件概念
中间件
小刘在重生~4 天前
Django 全套入门笔记|安装、项目创建、ORM、Form、中间件、登录认证
笔记·中间件·django
花间相见6 天前
【LangChain中间件01】—— LangChain 中间件入门:六个钩子让 Agent 可插拔
中间件·langchain