flowchart TD
subgraph 中间件配置流程
A[Program.cs] --> B[CreateBuilder]
B --> C[ConfigureServices]
C --> D[注册服务]
D --> E[Build]
E --> F[Configure]
F --> G[注册中间件]
G --> H[Run应用]
end
subgraph 中间件顺序
I[异常处理] --> J[静态文件]
J --> K[CORS]
K --> L[认证]
L --> M[授权]
M --> N[路由]
N --> O[端点]
end
subgraph 中间件配置方式
P[UseMiddleware] --> Q[类型注册]
Q --> R[DI注入]
S[Use] --> T[委托方式]
T --> U[内联逻辑]
V[Run] --> W[终结中间件]
W --> X[管道终止]
Y[Map] --> Z[路径分支]
Z --> AA[子管道]
AB[MapWhen] --> AC[条件分支]
AC --> AD[基于条件]
end
subgraph 中间件生命周期
AE[构造函数] --> AF[依赖注入]
AF --> AG[一次性初始化]
AH[Invoke/InvokeAsync] --> AI[每次请求]
AI --> AJ[请求处理]
AK[Dispose] --> AL[资源清理]
AL --> AM[应用关闭]
end
subgraph 中间件通信方式
AN[HttpContext] --> AO[请求上下文]
AO --> AP[共享数据]
AQ[RequestDelegate] --> AR[管道委托]
AR --> AS[链式调用]
AT[Services] --> AU[DI容器]
AU --> AV[服务获取]
end
subgraph 中间件测试策略
AW[单元测试] --> AX[Mock依赖]
AX --> AY[隔离测试]
AZ[集成测试] --> BA[真实管道]
BA --> BB[端到端测试]
BC[中间件测试工具] --> BD[TestServer]
BD --> BE[内存服务器]
end
subgraph 中间件扩展模式
BF[扩展方法包装] --> BG[IApplicationBuilder扩展]
BG --> BH[简化注册]
BI[选项模式] --> BJ[IOptions]
BJ --> BK[配置注入]
BL[工厂模式] --> BM[IMiddlewareFactory]
BM --> BN[动态创建]
end
subgraph 性能优化考虑
BO[减少中间件数量] --> BP[避免不必要]
BQ[异步处理] --> BR[非阻塞]
BS[缓存策略] --> BT[响应缓存]
BU[短路优化] --> BV[提前返回]
end
G --> I
G --> K
G --> L
G --> N
AE --> AI
AI --> AL