【源码解读】asp.net core源码启动流程精细解读
引言
core出来至今,已经7年了,我接触也已经4年了,从开始的2.1,2.2,3.1,5,6再到如今的7,一直都有再用,虽然我是一个Winform仔,但是源码一直从3.1到7都有再看,然后在QQ上面也一直比较活跃,之前好几年前一直说给大家解读asp.net core源码,在之前的博客中,讲的都是比较粗略化的,因为东西太多了,写也写不少东西,所以总是不了了之,然后在上个月底的时候,在微信和群友聊天,说到了这块,就想着,直播讲解一下,然后就定在了五月份去讲解源码,然后在前天,也就是五月十八号,在微信直播,哔哩哔哩录制,讲解了一下asp.net core源码,不过,由于很少直播,导致整个直播效果不是很好,因为整个节奏都是按照我自己对源码的熟悉程度来解读的,以及源码太多,我想一次性讲解完,所以导致后面的观众很少,在这向诸位观众道个歉,然后昨天,我就开始对前天晚上的直播做了总结,以及把我本来计划没有说的话,写在了一个文档里,其中包括对于直播的总结,以及开发者如何提升自己的认知还有逻辑思维能力,以及自己的一些建议,同时在昨天也开始整理asp.net core源码的解读文档,从昨天写到现在,终于写完了,希望接下来分享的东西对大家能够有帮助。
目录
整体目录分为以下目录,从最开始的WebApplication,WebApplicationBuilder,在到WebApplicationBuilder内部的构造函数做了那些事情,每一步尽量做到了精细化,每一行代码能讲清楚就讲清楚,同时针对默认创建的Api项目的重要的几个源码做了精细化讲解,包括AddControllers,内部的AddMvcCore,注入的那么多的服务,在到如何创建GenericWebHostBuilder,构建GenericWebHostService,注入Kestrel,IIS等,配置服务,配置Host还有Configuration。
再到WebApplication的Build方法,又如何把所有的中间件串联起来,做了哪些事情,返回的IHost是什么,在哪里,也写了MapControllers如何给EndpointDataSource添加Endpoint,如何订阅更新Endpoint的变化。又如何创建我们的请求的RequestDelegate,以及ResourceInvoker,如何执行过滤器,创建控制器,调用接口,如何请求,如何响应,以及最根本的监听,都写在了本文档里,总之把我认为最细致化的东西都给大家呈现了出来,哈哈哈当然拉,在最后的写入响应那块,实际上有的不是很详细,因为,源码跳的地方有点多,我把中间WriteAsync我认为承上启下的部分写了出来,方便大家去找到最根本的地方,

本文档,将一个默认的WebApi项目如何启动,如何监听,以及请求过来,如何响应并且写入数据,展现出来,有的地方可以支持自定义的接口类型,也说了出来,同时相信大家,在看了本文档,再结合源码,能够很清晰的知道,自己如果需要自定义一些东西,是可以明白源码在哪里看,实现哪些接口,生命周期又是什么,如果在结合微软文档,知道了一些可以自定义的某个功能IFeature,都是可以的。
希望大家,都能够对asp.net core源码有一个更深层次的了解,一个框架我们不仅仅是会用,还得用的好,才能提升我们的竞争力。
结尾
最后,恳求各位大家在转载本文档的时候,能够保留文档最后的个人信息,尊重一下本人的版权,谢谢大家,码字不易,望各位理解,后续,会给大家带来更多的源码解读。
直播总结文档地址:里面包括个人的一些心得建议,以及提升认知的方法。
链接:https://pan.baidu.com/s/12pzpi5uCaL3p4afvWAtc-Q
提取码:bv83
asp.net core源码解读文档,就是如图上的文档,
链接:https://pan.baidu.com/s/1GkWwMASVvwPyWb5VLb2yJg
提取码:j4de
所阅读的asp.net core源码地址
链接:https://pan.baidu.com/s/15a16TNowbpatkJqDF8qk1A
提取码:k7oh
所阅读的Libraries源码地址
链接:https://pan.baidu.com/s/1cy_5C3cwn9TQXqFjKUvWgQ
提取码:afeo
直播回放:
【asp.net core源码快速解读-哔哩哔哩】 https://b23.tv/G8p6j9D
最后如果有什么问题可以随时联系我,QQ934550201,或者添加群聊都可以找到我。


【源码解读】asp.net core源码启动流程精细解读的更多相关文章
- ASP.NET Core源码学习(一)Hosting
ASP.NET Core源码的学习,我们从Hosting开始, Hosting的GitHub地址为:https://github.com/aspnet/Hosting.git 朋友们可以从以上链接克隆 ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
- ASP.NET Core[源码分析篇] - WebHost
_configureServicesDelegates的承接 在[ASP.NET Core[源码分析篇] - Startup]这篇文章中,我们得知了目前为止(UseStartup),所有的动作都是在_ ...
- ASP.NET Core[源码分析篇] - Authentication认证
原文:ASP.NET Core[源码分析篇] - Authentication认证 追本溯源,从使用开始 首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务 ...
- ASP .NET CORE 源码地址
ASP .NET CORE 源码地址:https://github.com/dotnet/ 下拉可以查找相应的源码信息, 例如:查找 ASP .NET CORE Microsoft.Extension ...
- ASP.Net Core MVC6 RC2 启动过程分析[偏源码分析]
入口程序 如果做过Web之外开发的人,应该记得这个是标准的Console或者Winform的入口.为什么会这样呢? .NET Web Development and Tools Blog ASP.NE ...
- ASP.NET Core 3.x 中间件流程与路由体系
中间件分类 ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map(). Run(),使用Run调用中间件的时候,会直接返回一个响 ...
- ASP.NET Core 源码阅读笔记(1) ---Microsoft.Extensions.DependencyInjection
这篇随笔主要记录一下ASP.NET Core团队实现默认的依赖注入容器的过程,我的理解可能并不是正确的. DependencyInjection这个项目不大,但却是整个ASP.NET Core的基础, ...
- ASP.NET Core 源码阅读笔记(5) ---Microsoft.AspNetCore.Routing路由
这篇随笔讲讲路由功能,主要内容在项目Microsoft.AspNetCore.Routing中,可以在GitHub上找到,Routing项目地址. 路由功能是大家都很熟悉的功能,使用起来也十分简单,从 ...
- ASP.NET Core 源码阅读笔记(3) ---Microsoft.AspNetCore.Hosting
有关Hosting的基础知识 Hosting是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些病毒离开了活体之后就会死亡,我们把那些活体称为病毒的宿主. ...
随机推荐
- Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据
本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取.计算,并基于质量控制QC波段进行图像掩膜的方法. 前期的文章Python GDAL读取栅格数据并基于质量评估波段QA对 ...
- Less1-union select 联合查询注入
在学习之前,我们要知道,什么是 SQL 注入? 一句话来说,攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的. SQL注入漏洞的危害是很大的,常常会导致整个数 ...
- DSC:数仓SQL脚本迁移的神奇工具
摘要:本文介绍的DSC工具是针对数据库切换时面临的迁移任务而开发的免安装命令行工具.目的是提供简单.快速.可靠的SQL脚本迁移服务. 本文分享自华为云社区<GaussDB(DWS)DSC工具系列 ...
- 基于 Agora SDK 实现 iOS 端的多人视频互动
视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦.直播答题.一起 KTV.电商直播.互动大班课.视频相亲等. 本文将教你如何通过声网Agora 视频 SDK 在iOS端实现一个视频直播应用. ...
- 【CS231n assignment 2022】 vscode 环境配置
文章目录 前言 一.安装 Python 二.安装 vscode 三. cs231n 作业下载 四.配置 vscode 五.虚拟环境包安装 六.数据集 前言 今年成功考上了本校的研究生,要开始进入研究生 ...
- 能快速构建和定制网络拓扑图的WPF开源项目-NodeNetwork
大家好,我是沙漠尽头的狼,今天介绍一个WPF开源项目-NodeNetwork,它可以帮助我们快速构建和定制网络拓扑图. 一.前言 在现代软件开发中,数据可视化和可交互性越来越受到关注.为了实现这一点, ...
- java方法参数(超详细)
前言 在上一篇文章中,壹哥给大家讲解了方法的定义.调用和返回值,但方法的内容还有很多,比如方法的参数是怎么回事?接下来壹哥会在这篇文章中,继续给大家讲解方法参数相关的知识,这就是我们今天要学习的内容. ...
- better-scroll横向滚动、纵向滚动
<div ref="tab" class="tab"> <ul ref="tabWrapper" class=" ...
- Maven常用依赖包简单
Maven官方仓库:Maven Repository: junit » junit (mvnrepository.com) Mysql 1 <!--Mysql--> 2 <depen ...
- .NetCore中使用分布式事务DTM的二阶段消息
一.概述 二阶段消息是DTM新提出的,可以完美代替现有的事务消息和本地消息表架构.无论从复杂度.性能.便利性还是代码量都是完胜现有的方案. 相比现有的消息架构借助于各种消息中间件比如RocketMQ等 ...