【源码解读】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是一个非常重要,但又很难翻译成中文的概念.翻译成:寄宿,大概能勉强地传达它的意思.我们知道,有一些病毒离开了活体之后就会死亡,我们把那些活体称为病毒的宿主. ...
随机推荐
- mysql生成随机日期
生成一天内随机时间 select sec_to_time(rand() * 86400); 生成一天内随机时间,floor取整秒 select sec_to_time(floor(rand() * 8 ...
- cost function 成本函数
cost function 成本函数 cost function-成本函数 1.目标 :实现和探索具有一个变量的线性回归的成本函数. import numpy as np %matplotlib wi ...
- 迁移学习(PCL)《PCL: Proxy-based Contrastive Learning for Domain Generalization》
论文信息 论文标题:PCL: Proxy-based Contrastive Learning for Domain Generalization论文作者:论文来源:论文地址:download 论文代 ...
- 如何用浏览器读取本地文件(兼容IE8),new bing能帮我吗?
浏览器读写文件? 有一份老旧而精巧的代码(2006或更早),带js的html,可以只用浏览器来处理一些二进制存档数据. 文件的读写怎么办?通过变动的方法来完成. 利用十六进制编辑软件如WinHEX,直 ...
- vue拖拽排序插件vuedraggable的使用 附原生使用方法
Vue中使用 先下载依赖: npm install vuedraggable -S 项目中引入 import draggable from 'vuedraggable' 注册 components: ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-信息智能提取从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- Win系统下的免杀思路(总结非教程)
1.简介 在安全厂商日趋成熟的背景下,编写免杀马的难度和成本日益增长.好用新兴的开源项目在短时间内就被分析并加入特征库.笔者调研了部分开源项目,其中也有项目做了类似的分析 [1],目前能够免杀的项目初 ...
- kubernetes核心实战(六)--- ConfigMap
8.ConfigMap 抽取应用配置,并且可以自动更新 创建配置文件 [root@k8s-master-node1 ~/yaml/test]# vim configmap.yaml [root@k8s ...
- [PKM] 家庭数据中心
1 NAS(Network Attached Storage/网络附属存储) 1.1 NAS的定义 NAS(Network Attached Storage:网络附属存储):具备资料存储功能的装置.按 ...
- [JavaScript]Promise:异步编程
1 文由 某项目的需求:先要请求API1,再以API1的结果请求API2. var n, a; //var r = window.md5; var r = function (password, us ...