首页 > 其他分享 >.netcore生命周期、消息管道

.netcore生命周期、消息管道

时间:2024-04-02 18:44:47浏览次数:11  
标签:Core 生命周期 请求 netcore 中间件 应用程序 管道 NET

.NET Core 的初始化过程涉及多个步骤,这些步骤从应用程序的启动开始,一直到应用程序准备好处理请求。下面是一个简化的概述,描述了 .NET Core 应用程序(特别是 ASP.NET Core 应用程序)的初始化过程:

  1. 启动主机(Host):
    • .NET Core 应用程序通过 CreateHostBuilder 方法(在 Program.cs 文件中)来创建和配置主机。
    • 主机负责应用程序的生命周期管理,包括启动、运行和关闭应用程序。
    • 对于 ASP.NET Core 应用程序,这通常是一个 Web 主机(WebHost)。
  2. 配置主机:
    • 在 CreateHostBuilder 方法中,会调用 ConfigureWebHostDefaults 或类似的方法来配置主机的默认设置。
    • 可以通过 ConfigureAppConfiguration 方法来添加或覆盖配置源,如 appsettings.json 文件、环境变量等。
  3. 构建依赖注入容器:
    • 在主机构建过程中,会创建依赖注入(DI)容器。这是 ASP.NET Core 的核心特性之一,用于实现控制反转(IoC)。
    • 通过在 Startup 类中注册服务(在 ConfigureServices 方法中),可以将服务添加到 DI 容器中。
  4. 执行 Startup 类:
    • Startup 类是 ASP.NET Core 应用程序的关键部分,它包含配置应用程序请求处理管道所需的逻辑。
    • ConfigureServices 方法用于配置应用程序的服务,这些服务稍后将被注入到控制器或其他类中。
    • Configure 方法用于设置应用程序的请求处理管道,通过添加中间件来定义请求的处理流程。
  5. 中间件管道配置:
    • 在 Configure 方法中,通过调用 app.Use* 方法来添加中间件到请求处理管道。
    • 中间件按照添加的顺序执行,每个中间件都可以对请求进行处理,然后决定是否将请求传递给管道中的下一个中间件。
  6. 路由配置:
    • 对于 ASP.NET Core MVC 或 Razor Pages 应用程序,路由是中间件管道中的关键部分。
    • 通过在 Startup 类的 Configure 方法中调用 app.UseRouting 和 app.UseEndpoints 方法来配置路由。
    • 路由中间件负责将传入的 HTTP 请求映射到相应的控制器操作或页面。
  7. 启动应用程序:
    • 一旦主机和应用程序被配置好,应用程序就开始监听传入的请求。
    • 对于 Web 应用程序,这通常意味着启动一个 HTTP 服务器(如 Kestrel)来监听指定的端口。
  8. 处理请求:
    • 当请求到达时,它们会经过中间件管道,每个中间件都可以对请求进行处理或修改。
    • 最终,请求会到达相应的控制器操作或页面,并生成响应。
  9. 发送响应:
    • 控制器操作或页面生成响应后,它会通过中间件管道返回给客户端。
    • 中间件可以在响应返回给客户端之前对响应进行最后的处理或修改。

这个过程是一个高度简化的概述,实际的初始化过程可能涉及更多的细节和配置步骤。但是,上述步骤提供了对 .NET Core 应用程序初始化过程的基本理解。

 

如果消息管道配置了中间件A、中间件B,执行顺序为 

request --> 中间件A处理逻辑 --> 中间件B处理逻辑 --> 中间件B结束逻辑 --> 中间件A结束逻辑 --> response

标签:Core,生命周期,请求,netcore,中间件,应用程序,管道,NET
From: https://www.cnblogs.com/daiwk/p/18111270

相关文章

  • vue2生命周期
    什么是声明周期?生命周期概念是借鉴了软件工程和编程中普遍存在的概念,描述一个实体从开始到结束的整个过程。与植物学的生命周期相似。Vue的生命周期概念可以看作是对生物学生命周期概念的一种抽象借鉴和应用。生命周期阶段Vue实例有一个完整的生命周期,即从创建到销毁的过程......
  • Microsoft.AspNetCore.SignalR.Client中传送用户Token
    Microsoft.AspNetCore.SignalR.Client的.Net客户端传送Token的最佳方法!如下将Authorization标头添加到HubConnectionBuilder中,如下所示:对于不记名令牌->HubConnection=newHubConnectionBuilder().WithUrl($"https://10.0.2.2:5001/chatHub",(opts)=>......
  • 【前端面试3+1】07vue2和vue3的区别、vue3响应原理及为什么使用proxy、vue的生命周期
    一、vue2和vue3的区别1.性能优化:        Vue3在性能方面有很大的提升,主要是通过虚拟DOM的优化和响应式系统的改进实现的。虚拟DOM重构:Vue3中对虚拟DOM进行了重构,使得更新算法更加高效,减少了更新时的开销,提升了性能。静态树提升:Vue3可以通过静态树提升技术......
  • [蓝桥杯] 管道 java题解
    importjava.util.*;/***管道*其实这道题核心根本不用管管道左边的如何,我们可以把左边当成注水口*/publicclassMain{staticintn;staticint[][]pipes;//阀门安排的地方staticintlen;//管道长度publicstaticvoidmain(String[]a......
  • .NetCore 目录浏览 和 静态文件
    1. 静态文件 包:microsoft.aspdotnet.staticfilesapp.UseStaticFiles() 会默认找到wwwroot文件夹//匹配到指定条件然后执行中间件//使用中间件//静态文件//UseStaticFiles中间件app.UseStaticFiles();//使用默认文件去找到wwwroot文件夹//......
  • 在Linux中,什么是管道?它是如何工作的?
    在Linux中,管道(Pipeline)是一种将多个命令连接起来的技术,使得一个命令的输出可以直接作为另一个命令的输入。这种机制通过管道符号|来实现,它极大地提高了命令行操作的效率和灵活性。1.管道的概念管道的概念源自于UNIX系统,它允许用户将简单的命令组合成强大的、复杂的命令序列。......
  • K8s Pod亲和性、污点、容忍度、生命周期与健康探测详解(中)
    ......
  • shell高级用法,mkfifo管道,创建管道,多任务多并发
    转自:https://www.cnblogs.com/bulh/articles/12765789.html转自:https://blog.csdn.net/qq_34409701/article/details/52488964转自:https://zhuanlan.zhihu.com/p/623276458 最能解释管道Linuxmkfifo命令mkfifo命令基本上可以让你创建FIFO(又名命名管道)。以下是该命令的语法......
  • 11-Vue-生命周期
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>引出生命周期</title><scripttype="text/javascript"src="../js/vue.js"></script></head&......
  • 「NOI2009」管道取珠
    妙妙题#dp转换一下\(a_i^2\),发现这个值等价于操作\(2\)次最后得到结果一样的方案数那么这就是容易的了\(dp_{k,i,j}\)表示操作了\(k\)轮,第一次的上面取了\(i\)个,第二次的上面取了\(j\)个转移分\(4\)种暴力就行注意空间限制要滚动//Author:xiaruize#ifndefO......