ASP.NET Core 应用与进程内的 HTTP 服务器实现一起运行.该服务器实现侦听 HTTP 请求,并在一系列请求功能被写到 HttpContext 时,将这些请求展现到应用中.

ASP.NET Core 随附两种服务器实现:

  • Kestrel 是适用于 ASP.NET Core 的默认跨平台 HTTP 服务器.
  • HTTP.sys 是仅适用于 Windows 的 HTTP 服务器,它基于 HTTP.sys 核心驱动程序和 HTTP 服务器 API.在 ASP.NET 1.x 中被命名为 WebListener.

ASP.NET Core 模块是本机 IIS 模块,用于处理 IIS 和进程内 IIS HTTP 服务器(HTTP.sys)或 Kestrel 之间的本机 IIS 请求。

使用 IIS 或 IIS Express 时,应用会在以下其中一个进程中运行:


  • 在独立于 IIS 工作进程(进程外托管模型)和 Kestrel 服务器的进程中.

托管模型

进程内托管模型

IIS 使用 Windows 进程激活服务 (WAS) 处理进程管理。

ASP.NET Core 模块:

  • 执行应用初始化。
    • 加载 CoreCLR。
    • 调用 Program.Main
  • 处理 IIS 本机请求的生存期。

下图说明了 IIS、ASP.NET Core 模块和进程内托管的应用之间的关系:

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

IIS HTTP 服务器是将请求从本机转换为托管的 IIS 进程内服务器实现。

应用的响应传递回 IIS,IIS 将响应推送回发起请求的客户端。

(但是看源码,貌似默认的是进程外托管模型喃)

进程外托管模型

Windows 进程激活服务 (WAS) 托管的进程内运行的应用中出现的行为相同。

下图说明了 IIS、ASP.NET Core 模块和进程外托管的应用之间的关系:

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

该模块将该请求转发到应用的随机端口(非端口 80/443)上的 Kestrel。

该模块不支持 HTTPS 转发,因此即使请求由 IIS 通过 HTTPS 接收,它们还是通过 HTTP 转发。

应用的响应传递回 IIS,IIS 将响应推送回发起请求的 HTTP 客户端。

ASP.NET Core 模块具有一些其他功能。 该模块可以:

  • 为工作进程设置环境变量。
  • 将 stdout 输出记录到文件存储器,以解决启动问题。
  • 转发 Windows 身份验证令牌。

 

相关文章:

  • 2022-01-11
  • 2019-01-06
  • 2021-11-01
  • 2021-08-26
  • 2019-01-10
  • 2021-04-04
猜你喜欢
  • 2021-06-10
  • 2019-01-07
  • 2021-10-22
  • 2019-01-04
  • 2021-08-30
  • 2021-05-31
相关资源
相似解决方案