深入研究 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 方法

原文地址:https://www.cnblogs.com/Music/p/mini-asp-net-core.html

时间: 2024-11-10 00:56:32

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的的相关文章

ASP.NET CORE系列【一】搭建ASP.NET CORE项目

原文:ASP.NET CORE系列[一]搭建ASP.NET CORE项目 为什么要使用 ASP.NET Core? NET Core 刚发布的时候根据介绍就有点心里痒痒,微软的尿性都懂的,新东西bug太多,现在2.0也发布很久了,决定研究一下. ASP.NET Core官方文档https://docs.microsoft.com/en-us/aspnet/core/getting-started ASP.NET Core 具有如下优点: 生成 Web UI 和 Web API 的统一场景. 集成

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)

译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# 6 and .NET Core 1.0>.水平有限,各位阅读时仔细分辨,唯望莫误人子弟. 附英文版原文:Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC ------------------------------------ 本

ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查

原文:ASP.NET CORE系列[二]使用Entity Framework Core进行增删改查 介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并不如 EF6 那么成熟和稳定.EF core 保持了和EF相似的开发体验,大多数顶级API都被保留了下来,所以,如果你用过EF6,那么上手EF core你会觉得非常轻松和熟悉,EF core 构建在一

ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置和初始化数据库,以及如何创建迁移代码和应用迁移代码.本章节我们就学习如何使用 EF 框架来查询数据库,至于添加和修改,后面的章节中我们会慢慢学习到 添加测试数据 我们首先使用 SQLite Studio 添加三条数据 ID Name 1 李白 2 杜甫 3 白居易 使用 SQLite Studio

ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用

原文:ASP.NET Core 入门教程 1.使用ASP.NET Core 构建第一个Web应用 一.前言 1.本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Core Web 项目结构说明 2.本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE Visual Studio Code

ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 使用Visual Studio Code开发基于解决方案(sln+csproj)的项目 Visual Studio Code Solution插件( vscode-solution-explorer)基础使用介绍 基于 .NET Core web项目模板构建 ASP.NET Core MVC We

ASP.NET Core 2.2 基础知识(十一) ASP.NET Core 模块

原文:ASP.NET Core 2.2 基础知识(十一) ASP.NET Core 模块 ASP.NET Core 应用与进程内的 HTTP 服务器实现一起运行.该服务器实现侦听 HTTP 请求,并在一系列请求功能被写到 HttpContext 时,将这些请求展现到应用中. ASP.NET Core 随附两种服务器实现: Kestrel 是适用于 ASP.NET Core 的默认跨平台 HTTP 服务器. HTTP.sys 是仅适用于 Windows 的 HTTP 服务器,它基于 HTTP.sy

学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序

首先运行Visual Studio Express 2012或Visual Web Developer2010 Express或Visual Studio2010/SP1.Visual Studio是一个集成开发环境. 可以使用两种方式来创建新项目. 1) 菜单"文件->新建-->项目"来新建项目. 2) 第二种方法是从开始页面中选择"新建项目",如下图. 创建第一个ASP.NET MVC应用程序 接下来创建我的第一个ASP.NET MVC应用程序,在创