I recently upgraded the ASP.NET Core 2.1 project in windows server to version 3.1, and found that the windows install on IIS way has changed.
First. In addition to
Reverse proxy, since ASP.NET Core 3.0 has default
in-process-hosting support for IIS ( reference ), you don't need to use IIS Pool
CLR no managed code ( reference ), you can only rely on kestrel server to run the web engine.
Kestrel can now be removed. that's mean it can avoids
data translation between IIS and Kestrel, it can provides
better performance and
less resource , the relevant performance test can be referred to ( Rick Strahl article )
This is good news for who must continue to use the windows server and cannot replace by Linux!
Second. Note that
IIS In-process hosting each app needs to set a unique pool, it not likes asp.net mvc, multiple applications can use the same pool to manage.
Sharing an app pool among apps isn't supported. Use one app pool per app.
Third. Although ASP.NET Core 3.1 can be packaged into a self-contained single file with the Runtime environment, it is unfortunately only work for the kestrel server. IIS Server without Runtime still needs to be installed
Hosting Bundle .
There is no way to one file like .net core console and others can use it out of the box.