深入解析 .NET Core 的应用启动流程

news/2025/3/1 13:25:24/文章来源:https://www.cnblogs.com/forges/p/18744756

 

随着 .NET Core 的发展,它逐渐成为构建跨平台、高性能 Web 应用的首选框架。了解 .NET Core 的应用启动流程是开发者成功使用该框架的关键,尤其是在调试、优化和部署时。本文将深入探讨 .NET Core 的应用启动过程,从创建 Web 主机、配置服务、处理请求到启动 Web 服务器的每个环节,帮助开发者更加高效地管理应用的生命周期。

1. .NET Core 启动概述

在 .NET Core 中,应用的启动过程包括了多个步骤,从创建主机、配置依赖注入(DI)、设置中间件管道到启动 Web 服务器,最后处理请求并返回响应。每个步骤都非常关键,正确理解和配置这些步骤可以显著提高应用的性能、可扩展性和维护性。

.NET Core 提供了灵活的配置方式,使得开发者能够控制应用的各个方面。同时,.NET Core 的启动流程非常简洁,可以通过最少的代码实现强大的功能。

2. .NET Core 应用启动过程详解

2.1 创建 Web 主机

在 .NET Core 中,Web 主机是应用生命周期的核心组件,负责管理 Web 服务器、加载配置文件、处理日志记录和其他相关的服务。主机是启动应用的第一步,它通常通过 Host.CreateDefaultBuilder() 创建。

在较新的版本中,.NET Core 推出了简化的启动方式,使用 WebApplication.CreateBuilder() 来创建应用主机和配置相关服务,减去了许多冗余的代码。这种方式更直观、易于使用,并减少了开发者的工作量。

var builder = WebApplication.CreateBuilder(args);

通过 CreateBuilder(),.NET Core 会自动为应用配置好默认的 Web 主机、日志记录、配置系统等内容,开发者只需关心服务的注册和请求管道的配置。

2.2 配置服务(依赖注入)

依赖注入(DI)是 .NET Core 的核心特性之一,它使得管理和注入服务变得更加灵活。在启动过程中,开发者需要注册服务到 DI 容器中。这些服务包括数据库连接、身份验证、缓存、日志记录等。服务的注册通常发生在 ConfigureServices 方法中,开发者可以通过 builder.Services 进行服务的注册。

例如,在应用启动时注册 MVC 控制器和数据库上下文:

var builder = WebApplication.CreateBuilder(args);// 注册 MVC 服务
builder.Services.AddControllersWithViews();// 注册数据库上下文(以 EF Core 为例)
builder.Services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));// 注册身份验证服务
builder.Services.AddAuthentication("Bearer").AddJwtBearer(options =>{options.Authority = builder.Configuration["Auth:Authority"];options.Audience = builder.Configuration["Auth:Audience"];});

在这里,我们通过 builder.Services 注册了控制器、数据库上下文和身份验证服务。所有注册的服务都会被添加到 DI 容器中,在应用运行时自动管理和注入。

2.3 构建请求处理管道

一旦服务注册完毕,接下来就需要配置请求处理管道。在 .NET Core 中,中间件负责处理 HTTP 请求,它们按照顺序依次执行。每个中间件可以处理请求、修改响应或终止请求的处理。

例如,常见的中间件包括:

  • 异常处理
  • HTTPS 重定向
  • 静态文件处理
  • 路由配置
  • 身份验证和授权

开发者通过 app.Use* 方法来配置中间件,并通过 app.Map* 来定义路由和请求的处理方式。

var app = builder.Build();// 开发环境下显示详细异常信息
if (app.Environment.IsDevelopment())
{app.UseDeveloperExceptionPage();
}
else
{app.UseExceptionHandler("/Home/Error");app.UseHsts(); // 启用 HSTS
}// 启用 HTTPS 重定向
app.UseHttpsRedirection();// 静态文件服务
app.UseStaticFiles();// 配置路由和控制器
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();// 映射默认路由
app.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");app.Run(); // 启动应用

在这段代码中,我们使用了多个中间件来处理不同的任务:

  • UseDeveloperExceptionPage:在开发环境中显示详细的错误信息。
  • UseExceptionHandlerUseHsts:在生产环境中处理异常并启用 HSTS(HTTP 严格传输安全)。
  • UseHttpsRedirection:将 HTTP 请求重定向为 HTTPS。
  • UseStaticFiles:为 Web 应用提供静态文件支持,如 CSS、JavaScript 和图片。
  • UseRoutingUseAuthentication:配置路由和身份验证中间件。

所有中间件都按照顺序执行,直到请求被处理或被终止。

2.4 启动 Web 服务器

当请求管道配置完毕后,最后一步是启动 Web 服务器,并开始处理传入的 HTTP 请求。默认情况下,.NET Core 使用 Kestrel 作为 Web 服务器,Kestrel 是一个高性能的跨平台 HTTP 服务器。通过 app.Run() 方法,开发者可以启动应用并开始监听来自客户端的请求。

app.Run(); // 启动应用

此外,开发者可以通过 builder.WebHost.ConfigureKestrel() 来进一步配置 Kestrel 服务器。例如,配置 Kestrel 监听的端口:

builder.WebHost.ConfigureKestrel(options =>
{options.ListenAnyIP(5000); // 配置 Kestrel 监听端口
});

3. .NET Core 新特性与改进

随着 .NET Core 的不断发展,多个版本逐步引入了新的特性和优化,使得开发者可以更高效地构建和部署应用。

3.1 WebApplication 类的引入

在 .NET Core 8 及以后版本中,WebApplication 类成为了创建和配置 Web 应用的核心类。通过 WebApplication.CreateBuilder() 方法,开发者可以更加简洁地初始化应用,配置服务和中间件。

3.2 性能优化

.NET Core 在启动性能、请求处理速度和内存管理等方面进行了显著优化。尤其是处理高并发请求时,.NET Core 展现出了极强的性能优势。通过对 Kestrel 服务器、请求管道和内存管理的优化,.NET Core 8 为开发者提供了更高效的 Web 开发体验。

3.3 跨平台与容器化支持

.NET Core 完美支持跨平台开发,能够运行在 Windows、Linux 和 macOS 上,适用于多种部署环境。尤其是在云原生和微服务架构中,.NET Core 可以轻松地容器化部署,支持 Docker 和 Kubernetes 等容器化技术。

3.4 简化的中间件配置

随着 .NET Core 的发展,中间件的配置方式也变得更加简洁。WebApplication 类的引入使得配置过程更加清晰,开发者可以更轻松地管理和调整中间件。

4. 总结

.NET Core 的应用启动过程从创建 Web 主机、注册服务、配置请求处理管道到启动 Web 服务器,每个步骤都至关重要。通过 WebApplication.CreateBuilder() 和简化的中间件配置,开发者能够以最小的代码量构建高效、可维护的 Web 应用。

此外,.NET Core 在性能优化、跨平台支持、容器化部署等方面的持续改进,使得它成为构建现代 Web 应用的理想选择。理解和掌握应用启动过程,不仅能够帮助开发者提升开发效率,还能在调试、优化和扩展时为应用提供更强的灵活性和可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891527.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一道面试题——python

写法一:1 paths=[D:\lser\local file1.txt(abcd)file2.txt(wxsd)file3.txt(qqw),E:\path\jdk file2.txt(abcd)file5.txt(vv),C:\duafile\dublock\dufell file4.txt(vv)]2 3 #如题,paths列表中有不同文件路径,对应了n个文件和不同文件内容4 #期望输出,相同文件内容的文件路径…

【Linux应急】find命令在应急实战中的使用

一、使用场景 linux系统下排查主机异常时间点是否存在异常落地文件,例如:主机被上传了webshell后,排查当天是否落地其他webshell或其他异常文件。 二、命令介绍 find [路径] [选项] [条件]指定要搜索的目录。如果不指定,默认是当前目录【.】参数介绍:-type:f代表普通文件…

【自荐】Catime v1.0.4 一款贼好用的计时器

Github: https://github.com/vladelaina/Catime仅1.3MB!!!!! 🌟特点极简设计: 透明界面、点击穿透、可调大小和位置、多语言支持 丰富字体: 47种字体,支持实时预览 灵活计时: 快速预设、自定义时间输入、显示当前时间(12/24小时制)、倒计时、正计时 超时动作: 通知、锁屏、关…

L2G2-Lagent 自定义你的 Agent 智能体

L2G2-Lagent 自定义你的 Agent 智能体 1. Agent 入门 1.1 Agent 是什么 Agent 的核心是将感知,推理和行动结合成一个闭环。Agent 通过感知器感知外部的环境,获取输入的数据。然后输入数据到某种形式中(比如模型),它负责处理输入数据,制定行动策略。随后执行器根据模型的输…

L2G3-LMDeploy 量化部署进阶实践

L2G3-LMDeploy 量化部署进阶实践 1. LMDeploy部署模型 1.1 什么是模型部署?1.2 一个大语言模型部署框架可以提供什么? LMDeploy提供了大语言模型部署的全链条开源工具,能够十分便捷地帮助用户部署自己大模型应用。推理引擎与大模型的关系(from claude 3.5 sonnet): 大模型…

L1G4-InternLM + LlamaIndex RAG 实践

L1G4-InternLM + LlamaIndex RAG 实践 1. RAG技术 1.1 RAG技术概述 解决的问题:生成幻觉:不知道的东西乱说 过时知识:大模型的训练是一次性的而不是实时的,不能及时获取最新的知识 缺乏透明和可追溯的推理过程:大模型给出的答案可能是对的,但我们不知道是怎么得到的。即不…

L1G6-OpenCompass 评测书生大模型实践

L1G6-OpenCompass 评测书生大模型实践 1. 大模型评测入门 1.1 评测重要性和挑战 解释:超级对齐的必备组件:大模型安全问题日益突出,人工监管能力有限,需要有基于评测的安全监督。 数据污染:有的模型可能在评测集上训练,得到的分数不可信。 评测成本:客观题数量较多时,大…

DeepSeek引发的AI发展路径思考

在规模法则(Scaling Law)之外,DeepSeek 引领人工智能行业进入以算法和模型架构优化为主,同时高度重视数据质量与规模、理性提高算力的新时期。DeepSeek引发的AI发展路径思考 参考文章来源于科技导报 ,作者李国杰院士 1. DeepSeek 的科技突破7 天之内 DeepSeek 的用户增长超…

【Linux应急】Redis写入计划任务

免责声明 本文发表的文章仅用于学习和交流,请勿用于非法途径,如果文章中涉及到侵权,请及时联系公众号进行删除。一、漏洞原理 通过未授权或弱密码连接数据库之后,修改redis备份目录和参数,实现在主机的计划任务文件中写入定时反弹shell的命令,从而获取主机权限。 二、漏洞…

Minitab 21软件下载与安装教程

【Minitab 21软件下载与安装教程】 1-安装包 扫描下方二维码关注「软知社」,后台回复【036】三位数字即可免费获取分享链接,无广告拒绝套路; 2-安装教程解压下载安装包,双击Setup.exe安装,弹窗安装对话框语言默认中文,点击下一步点击下一步勾选我接受 ,点击下一步选择开…

LaTex 2024软件下载与安装教程

1-安装包 扫描下方二维码关注「软知社」,后台回复【037】三位数字即可免费获取分享链接,无广告拒绝套路; 2-安装教程双击压缩包内intall-tl-windows.bat安装,弹窗安装对话框自动弹出安装窗口,如果弹出以下窗口说明文件夹目录太长或者有中文,建议放磁盘根目录;如果没有弹…

Stata 18软件下载与安装教程

【Stata 18软件下载与安装教程】 1-安装包 扫描下方二维码关注「软知社」,后台回复【035】三位数字即可免费获取分享链接,无广告拒绝套路; 2-安装教程双击解压包内Setup.exe安装,弹窗安装对话框点击下一步选择I accept ,点击下一步输入用户名,任意输入,点击Next选择Sta…