一个ASP.NET Core程序以一个进程内的HTTP 服务器实现来运行。这个服务器实现监听HTTP请求,并将它们以包含进HttpContext 对象的一组请求特性的形式呈现给应用程序。
Kestrel
Kestrel 是由ASP.NET Core项目模板指定的默认的Web服务器。
使用Kestrel:
- 作为边缘服务器来处理直接来源于网络的请求,包括Internet。
- 使用反向代理服务器,比如Internet Information Services (IIS),Nginx, Apache。反向代理服务器接受来自于Internet的HTTP请求并将其进一步转交给Kestrel。
任何一个宿主配置——不管其是否具有反向代理服务器——都是支持的。
关于Kestrel配置指南以及在一个反向代理配置中何时使用Kestrel的更多信息,请参考Kestrel web server implementation in ASP.NET Core。
ASP.NET Core自带有如下特性:
- Kestrel服务器 是默认的,跨平台的HTTP服务器实现。
- 对于IIS来说,IIS HTTP服务器是 进程内服务器。
- HTTP.sys server 是仅用在Windows平台下的HTTP服务器,其基于HTTP.sys kernel driver and HTTP Server API。
当使用IIS 或者 IIS Express时,app会以以下两种方式之一运行:
- 以IIS HTTP服务的形式,运行在与IIS工作者进程相同的进程中。进程内运行是推荐的配置。
- 以Kestrel服务 的形式运行在与IIS 工作者进程分离的进程中。
ASP.NET Core Module 是一个本地的IIS模块,其用来处理IIS 与 进程内IIS服务,以及IIS 与 Kestrel 之间的本地IIS请求。