【多圖,謹慎打開】深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 內部到底是如何運行的


前言

幾年前,Artech 老師寫過一個 Mini MVC,用簡單的代碼告訴讀者 ASP.NET MVC 內部到底是如何運行的。當時我研究完以后,受益匪淺,內心充滿了對 Artech 老師的感激,然后用我自己理解的 MVC 知識,寫了一篇 深入研究 蔣金楠(Artech)老師的 MiniMvc(迷你 MVC),看看 MVC 內部到底是如何運行的 ,寫完更加加深了我對 ASP.NET MVC 的理解。今天 ASP.NET Core 已經更新到 3.0 Preview 4 了(今天是:2019-04-26 星期五晚上),同時 Artech 老師也發布了 Mini ASP.NET Core,故決定下載下來,反復調試跟蹤,看看  ASP.NET Core 到底是如何運行的。

 

介紹

目前筆者時間不是很充分,文字的說明也許需要未來逐步去完善,本文章未來也會隨時更新。目前截圖中包含了一部分我自己的理解,還請見諒。下面正式開始。

 

1. Main 方法

 

2. WebHostBuilder 構造函數

 

3. IWebHostBuilder 的擴展方法 - UseHttpListener

 

4. HttpListenerServer 構造函數

 

5. 回到 IWebHostBuilder 的擴展方法

 

6. WebHostBuilder 的 UseServer 方法

 

7. 回到 IWebHostBuilder 的擴展方法

 

8. 回到 Main 方法

 

9. WebHostBuilder 的 Configure 方法

 

10. 回到 Main 方法

 

11. WebHostBuilder 的 Build 方法

 

12. ApplicationBuilder 構造函數

 

13. 回到 WebHostBuilder 的 Build 方法

 

14. 回到 Main 方法

 

15. ApplicationBuilder 的 Use 方法

 

 

16. 回到 Main 方法

 

17. 再次回到 WebHostBuilder 的 Build 方法

 

18. ApplicationBuilder 的 Build 方法

 

19. WebHost 構造函數

 

20. 再次回到 WebHostBuilder 的 Build 方法

 

21. 回到 Main 方法

 

22. WebHost 的 StartAsync 方法

 

23. HttpListenerServer 的 StartAsync 方法

 

 

==========================華麗的分割線==========================================

 

 

==========================華麗的分割線==========================================

 

24. HttpListenerFeature 的構造函數

 

25. IFeatureCollection 的擴展方法 - Set 方法

 

26. 回到 HttpListenerServer 的 StartAsync 方法

 

27. HttpContext、HttpRequest、HttpResponse

 

28. 再次回到 HttpListenerServer 的 StartAsync 方法

 

29. 回到 ApplicationBuilder 的 Build 方法

由於第 18 步只返回了一個委托(匿名方法的簽名),並沒有執行委托,這一步就是執行這個委托。

 

 

30. 執行中間件(FooMiddleware、BarMiddleware、ProductMiddleware)委托鏈中的 FooMiddleware

 

31. 再次回到 ApplicationBuilder 的 Build 方法

 

32. 執行中間件(FooMiddleware、BarMiddleware、ProductMiddleware)委托鏈中的 FooMiddleware Next

這一步 FooMiddleware 內部的 Response.WriteAsync 已經執行完畢,接着調用了 next 委托,向下執行。

 

 

33. HttpResponse 的 WriteAsync 方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM