Asp.Net Core 优势
跨平台、高性能、模块化、内置依赖注入、现代化的部署方式。
- 跨平台支持: 最大的亮点之一是其跨平台能力,可以在 Windows、macOS 和 Linux 等多种操作系统上进行开发和部署。
- 高性能:ASP.NET Core 是 ASP.NET 的重写版本,在性能上有了显著提升。
- 内置依赖注入:框架内置了对依赖注入的支持,构建松耦合、可测试和易于维护的应用程序。
- 模块化和轻量级:采用了模块化的设计,可以根据需要选择所需的组件。
- 灵活的部署方式:可以自包含部署,也可以部署到各种 Web 服务器(如 IIS、Nginx、Apache)或容器平台(如 Docker)上。
- 基于环境的配置系统:提供了灵活的、基于环境的配置系统,方便管理不同环境下的配置信息。
ASP.NET Core 管道
ASP.NET Core 的请求管道基于 中间件 (Middleware) 模型,它会通过一系列按顺序配置的中间件执行流程。
- 服务器接收请求: Kestrel(默认)或其他配置的服务器(如 IIS、Nginx)接收到原始 HTTP 请求。
- 构建中间件管道: 在应用程序启动时,通过 Startup 类的 Configure 方法来构建请求处理管道。Configure 方法接收一个 IApplicationBuilder 实例,通过在其上调用 Use、Run 或 Map 等扩展方法来添加中间件组件。
- 中间件的处理: 每个中间件组件都是一个类或一个匿名委托,它接收一个 HttpContext 对象。中间件可以执行以下操作:
- 执行一些逻辑(如日志记录、错误处理、身份验证、静态文件服务等)。
- 选择性地将请求传递给管道中的下一个中间件,通过调用 _next.Invoke(context)(如果它是基于委托的中间件)或调用下一个中间件的 InvokeAsync 方法。
- 如果中间件完全处理了请求并生成了响应(例如,一个静态文件中间件找到了请求的文件并发送回客户端),它可以“短路”管道,不再将请求传递给后续中间件。
- 终端中间件 (Terminal Middleware): 管道的末端通常有一个终端中间件(例如,MVC 或 Razor Pages 中间件),它负责执行最终的业务逻辑并生成最终的响应。终端中间件通常不会调用下一个中间件。
- 响应回传: 响应生成后,会沿着中间件管道反向传递回去,每个中间件都有机会在响应发送回客户端之前进行处理。