asp子窗口读取父窗口数据_跟我一起学.NetCore之Asp.NetCore启动流程浅析

前言

一个Asp.NetCore项目,知道大概的启动流程是有必要的,比如后续遇见配置信息覆盖等相关问题时也大概知道是什么原因,了解原因之后,再去搜索引擎找答案,否则目标不明确,茫茫人海怎么会一下找到自己想要的,除非是“偶遇”;“偶遇”太难,一起浅析一个Asp.NetCore 项目的启动流程;

正文

先创建一个WebAPI项目,用的是.NetCore3.1,后续的项目例子都统一用.NetCore3.1,除非特殊说明;项目如下:

e2a570e3064d9af33700b4952e2c83eb.png

如上图所示,一个WebAPI项目启动方式本质也是一个控制台程序,程序入口都是从Main函数开始,就从里面方法看看大概都做了什么,其中择取几个方法源码简要说明主要功能,通过增加代码注释的方式(我觉得这样比较方便对应浏览),完整源代码从以下两个地址获取,通过Everything查找工具比较方便查询代码:

主项目地址: https:// github.com/dotnet/aspne tcore/tree/v3.1.0
扩展项目地址: https:// github.com/dotnet/exten sions/releases/tag/v3.1.6

1. Host.CreateDefaultBuilder方法

public 

2. ConfigureWebHostDefaults 方法

public 

2.1 WebHost.ConfigureWebDefaults方法

internal 

3. Build方法,其实这个方法就是根据之前配置构造出一个IHost对象

public 

4. Run()方法,开启服务器,之后就可以进行请求了

综上几个关键方法,从其中Host这个关键词出现很多次,其实在http://Asp.Net Core应用中是通过配置并启动一个Host来完成应用程序的启动和生命周期的管理。而Host主要就是对Web Server的配置和请求处理管理的管理,简要流程如下图:

fc6973f6d7855503c828ab3fa27eda7f.png

在整个启动流程中,返回的IHostBuilder中暴露配置和注入的相关接口,可用于自己定义扩展,接下来通过打印的方式来看看一下几个暴露方法的执行顺序,其实以上Build方法的时候已经明确了对应方法的顺序;

412b05b1eba2e5dcb505fe44f99d714c.png

改造代码如下:

0cbc259a88366d8a57999b0d81d32993.png

Startup方法中的三个方法也增加对应的打印,运行如下:

11db592865f80f430177b2eea7e55373.png

如上图,除了Startup中的ConfigureServices会跟随ConfigureWebHostDefaults改变以外,其他方法顺序都是固定。那这些方法主要作用都是什么呢?如下图:

123153113d8615ead76e71a6d0f9d0d0.png

图中Program.ConfigureServices和Startup.ConfigureServices的执行顺序会根据ConfigureWebHostDefaults的位置改变会交替变动;

总结

以上内容只是提取了其中比较关键的流程进行说明,并没有详细解析源代码,这里只是先浅析,后续再继续一起深究源代码;下一节说说依赖注入;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值