I read this fantastic article by Rick Strahl. It says Microsoft after DotNet core 2.2 decided to add InProcess
Mode to use directly IIS to process request instead of using OutOfProcess
which handle process using Kestrel web server. We know that in this mode IIS is used as a reverse webserver proxy to get a request and take it to kestrel.
<!-- hostingModel is the new property here -->
<aspNetCore processPath="dotnet" arguments=".\WebApplication1.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
hostingModel="InProcess" />
Then Rick Strahl in his article compares InProcess Mode and OutOfProcess mode and get the result that using IIS directly without Kestrel (InProcess Mode) takes a much faster process. (Even he proves IIS has more speed with raw kestrel)
With this result, I am wondering why do we have Kestrel yet? Just for using our DotNet core application in front of other revers Web servers such as Apache Nginx and...? or there is some other scenario that using OutOfProcess would be useful? I simple words why do we should use both (IIS + Kestrel)