此文是在官方文档的基础上做的个人笔记,一些简单的内容就没用再列出来了,参考官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/?view=aspnetcore-5.0&tabs=windows


asp.net core 中的web服务器有三种:Kestrel、HTTP.sys、IIS HTTP。


  • Kestrel:是默认的跨平台服务器,提供了最佳的性能和内存利用率。但是没有HTTP.sys中的一些高级功能,如:端口共享、内核模式Windows身份认证、通过队列传输的快速代理、直接文件传输、响应缓存。
  • IIS HTTP:是IIS的进程内服务器。
  • HTTP.sys:是仅用于Windows的服务器,基于HTTP.sys核心驱动。IIS也是基于这个实现的。

如果应用运行在IIS中,则可以分为:


  • 进程内托管:应用进程与IIS进程是同一个。具有更好的性能高,因为请求并不通过环回适配器进行处理。
  • 进程外托管:应用进程是独立的,由IIS添加的asp.net core 模块来管理这个进程。

Kestrel



可以作为边缘服务器直接处理web请求,如
ASP.NET Core中的Web服务器_dotnet5



与反向代理服务器(IIS,Nginx,Apache)配合使用。反向代理接受http请求,然后转发到Kestrel。如
ASP.NET Core中的Web服务器_asp.net core_02



HTTP.sys

如果你的应用是在windows服务器上个运行,则可以用HTTP.sys替换Kestrel(除非真的需要这么做)。

ASP.NET Core中的Web服务器_asp.net core_03

自定义服务器

如果Kestrel、IIS、HTTP.sys都无法满足你的需求,则可以使用OWIN自定义服务器。


​https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/?view=aspnetcore-5.0&tabs=windows#server-startup​