此文是在官方文档的基础上做的个人笔记,一些简单的内容就没用再列出来了,参考官方文档: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请求,如
与反向代理服务器(IIS,Nginx,Apache)配合使用。反向代理接受http请求,然后转发到Kestrel。如
HTTP.sys
如果你的应用是在windows服务器上个运行,则可以用HTTP.sys替换Kestrel(除非真的需要这么做)。
自定义服务器
如果Kestrel、IIS、HTTP.sys都无法满足你的需求,则可以使用OWIN自定义服务器。