C# 口试题目高级:056 - 什么是中心件 ?

打印 上一主题 下一主题

主题 1660|帖子 1660|积分 4980

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
中心件是指处理HTTP请求和响应的一部分组件,它们构成了一个处理请求的管道(Pipeline)。每个中心件在请求通过它时实行一些操作,并且可以选择将请求转达到下一个中心件或停止管道。
1. 中心件的基本概念

中心件(Middleware)是软件架构中的一个紧张构成部分,它位于操作系统和应用软件之间,为应用步伐提供运行与开辟环境的支持。在C#开辟中,特别是在ASP.NET Core框架下,中心件是一种特殊的组件,它可以处理HTTP请求和响应,并将请求转达给下一个中心件或停止请求。这种设计模式允许开辟者通过一系列可插拔的模块来定制请求处理流程,从而实现诸如身份验证、授权、日志记录、静态文件服务等功能。
比方,在一个典型的Web应用中,当客户端发送一个HTTP请求时,该请求会依次经过多个中心件组件。每个中心件都可以对请求进行预处理或后处理,终极将响应返回给客户端。这种洋葱模型的设计使得开辟者可以灵活地控制请求的生命周期,同时也能轻松地扩展或修改请求处理逻辑。
  1. // 定义一个简单的中间件类
  2. public class LoggingMiddleware
  3. {
  4.     private readonly RequestDelegate _next; // 下一个中间件的引用
  5.     public LoggingMiddleware(RequestDelegate next)
  6.     {
  7.         _next = next;
  8.     }
  9.     // 中间件的核心方法
  10.     public async Task InvokeAsync(HttpContext context)
  11.     {
  12.         Console.WriteLine("Request received"); // 在请求到达时记录日志
  13.         // 调用下一个中间件
  14.         await _next(context);
  15.         Console.WriteLine("Response sent"); // 在响应发送后记录日志
  16.     }
  17. }
  18. // 使用示例
  19. var builder = WebApplication.CreateBuilder(args);
  20. var app = builder.Build();
  21. app.UseMiddleware<LoggingMiddleware>(); // 注册中间件
  22. app.Run(async (context) =>
  23. {
  24.     await context.Response.WriteAsync("Hello, World!"); // 返回响应
  25. });
复制代码
上述代码展示了如何定义和使用一个简朴的中心件。通过UseMiddleware方法,我们可以将自定义的中心件插入到请求处理管道中。这个例子中的中心件会在请求到达时记录日志,并在响应发送后再次记录日志。
<hr> 2. 中心件的核心功能与特点

中心件的生命周期表示图
  1.            ┌──────────────┐
  2.            │   Request    │
  3.            └──────┬───────┘
  4.                   ▼
  5. ┌─────────────────────────────────┐
  6. │        Middleware Pipeline      │
  7. │  ┌──────────┐   ┌──────────┐    │
  8. │  │   Auth   │→→→│  Logging │→→→ │
  9. │  └──────────┘   └────
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表