【原始碼解讀】asp.net core原始碼啟動流程精細解讀

四處觀察發表於2023-05-20

引言

    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/1V5wUD2R0WMQ8hOHulhQnHA
    提取碼:p2a8

    所閱讀的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,或者新增群聊都可以找到我。

    

  

 

相關文章