前言
几年前,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 方法
原文地址:https://www.cnblogs.com/Music/p/mini-asp-net-core.html
时间: 2024-11-10 00:56:32