Hi @Tom Pazourek ,
If you know why you need to use IIS with Kestrel in production mode, you will know the advantages of IIS Express.
Compared with Kestrel, IIS has many functions, and has always been the first choice for many developers to deploy ASP.NET applications. It can log, request tracking, reverse proxy and even server farm configuration. Since IIS came out, it has been updated in multiple versions, and the latest is IIS10. It has been updated many times. In order to be compatible with various versions of ASP.NET, IIS is getting bigger and bigger. It has comprehensive functions and is very easy to use, but it is not the fastest server at present.
In order to have a faster server, Microsoft created Kestrel, which is compatible with .NET after 15 years, and can be handed over to IIS before 15 years. The development of technology also ensures that Microsoft can create a faster Kestrel. At the same time, Kestrel is not just a server. It uses a new request pipeline with ASP.NET Core. Things like HTTP modules & handlers have been replaced with simple middleware. The entire System.Web namespace is gone. Another big advantage is designing a web server to take advantage of async from the ground up. So far build the fastest ASP.NET application.
IIS Express is a lightweight IIS, integrated with Visual studio, designed for developers. IIS Express simulates IIS to the greatest extent, avoiding developers from publishing applications to IIS every time they test. At the same time, the lightweight feature of IIS Express allows developers to have a faster experience when testing.
Although Kestrel can be used as a standalone web server, Microsoft does not recommend it. In the production environment, IIS acts as a reverse proxy server, sending requests to Kestrel and then entering the application. And before going on stage, developers can use the rich functions of IIS for troubleshooting during testing, which makes up for the shortcomings of Kestrel. Before the test environment, in the application development stage, using IIS Express and Kestrel is the most sensible choice.
If you use Kestrel alone during development, the code and configuration in the application are set for Kestrel, and configuration conflicts with IIS during testing will cause unnecessary trouble. But using IIS express with Kestrel, these problems can be solved very well, because the configuration from the beginning is for IIS and Kestrel. Therefore, during the development period, it is possible to simulate the production environment as much as possible to greatly shorten the test time, which is a convenience for developers and can also speed up the speed from development to production.
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.
Best regards,
Bruce Zhang