Asp.net core 为什么DotNet Core中的Kestrel诞生了,尽管我们在进程模式下有更高的速度?

Asp.net core 为什么DotNet Core中的Kestrel诞生了,尽管我们在进程模式下有更高的速度?,asp.net-core,.net-core,kestrel-http-server,Asp.net Core,.net Core,Kestrel Http Server,我读了Rick Strahl写的这篇精彩的文章。它说,微软在DotnetCore2.2决定添加InProcess模式后,直接使用IIS来处理请求,而不是使用OutOfProcess,后者使用KestrelWeb服务器处理进程。我们知道,在这种模式下,IIS被用作反向Web服务器代理,以获取请求并将其发送给kestrel <!-- hostingModel is the new property here --> <aspNetCore processPath="

我读了Rick Strahl写的这篇精彩的文章。它说,微软在DotnetCore2.2决定添加
InProcess
模式后,直接使用IIS来处理请求,而不是使用
OutOfProcess
,后者使用KestrelWeb服务器处理进程。我们知道,在这种模式下,IIS被用作反向Web服务器代理,以获取请求并将其发送给kestrel

  <!-- hostingModel is the new property here -->
  <aspNetCore processPath="dotnet" arguments=".\WebApplication1.dll"    
              stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
              hostingModel="InProcess" />

然后,Rick Strahl在他的文章中比较了进程内模式和进程外模式,得出的结果是,直接使用IIS而不使用Kestrel(进程内模式)需要更快的进程。(即使是他也证明了IIS对原始红隼的速度更快)


有了这个结果,我想知道为什么我们还有红隼?只是为了在其他ReversWeb服务器(如ApacheNginx和…)前面使用我们的DotNet核心应用程序。。。?或者还有其他一些场景,使用OutOfProcess会很有用?我简单地说,为什么我们应该同时使用这两种方法(IIS+Kestrel)

IIS是唯一可以直接托管.NET的服务器(正在运行)。但是,所有非IIS的跨平台服务器又如何呢

如果我在运行Linux(老实说,Linux是Linux),我应该使用什么

这就是为什么我们需要一些独立的东西,比如红隼

此外,在最新版本中,Kestrel(以及ASP.NET Core和.NET Core)的速度也快得多。TechEmpower基准测试目前显示,与Kestrel一起运行的ASP.NET核心与“明文”基准测试中最快的框架相匹配