dotnet/aspnetcore

Consider changing the defaults between IIS Express vs Kestrel in VS

mkArtakMSFT opened this issue · 15 comments

  • Calculate cost of IIS Express for both Debug and Release, F5 vs CTRL F5, for startup time.
  • Figure out feature differences between them.

Thanks for contacting us.
We're moving this issue to the Next sprint planning milestone for future evaluation / consideration. We will evaluate the request when we are planning the work for the next milestone. To learn more about what to expect next and how this issue will be handled you can read more about our triage process here.

  Sample 1 Sample 2 Sample 3 Sample 4 Sample 5 Average (ms) Std Deviation- Sample (ms)
IIS Express- F5 4488.525 4233.031 4157.722 4640.92 4275.969 4359.23336 199.7063997
Kestrel- F5 3491.112 3009.8 1628.884 2835.401 2892.896 2771.61864 689.0245524
IIS Express- Ctrl+F5 2077.545 1961.494 1964.514 1958.454 2030.64 1998.52938 53.40726911
Kestrel- Ctrl+F5 726.3475 718.6789 730.5764 729.79 729.2783 726.93422 4.883907612

Calculated using https://github.com/shirhatti/processaudit

IIS Express- F5

Process/Start                 2021-01-05T19:47:06.4792562-08:00                    iisexpress
HostStart/Start               2021-01-05T19:47:10.8586257-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:47:10.9677814-08:00                    iisexpress
Process/Start                 2021-01-05T19:47:14.3839239-08:00                    iisexpress
HostStart/Start               2021-01-05T19:47:18.4926723-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:47:18.6169548-08:00                    iisexpress
Process/Start                 2021-01-05T19:47:22.4438476-08:00                    iisexpress
HostStart/Start               2021-01-05T19:47:26.4770368-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:47:26.6015692-08:00                    iisexpress
Process/Start                 2021-01-05T19:47:32.4910626-08:00                    iisexpress
HostStart/Start               2021-01-05T19:47:37.0121454-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:47:37.1319824-08:00                    iisexpress
Process/Start                 2021-01-05T19:47:40.6837155-08:00                    iisexpress
HostStart/Start               2021-01-05T19:47:44.8214682-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:47:44.9596848-08:00                    iisexpress

4488.5252,4233.0309,4157.7216,4640.9198,4275.9693

IIS Express- Ctrl+F5

Process/Start                 2021-01-05T19:49:28.4908748-08:00                    iisexpress
HostStart/Start               2021-01-05T19:49:30.5417439-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:49:30.5684200-08:00                    iisexpress
Process/Start                 2021-01-05T19:49:37.6048547-08:00                    iisexpress
HostStart/Start               2021-01-05T19:49:39.5464717-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:49:39.5663488-08:00                    iisexpress
Process/Start                 2021-01-05T19:49:45.5071357-08:00                    iisexpress
HostStart/Start               2021-01-05T19:49:47.4533663-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:49:47.4716496-08:00                    iisexpress
Process/Start                 2021-01-05T19:49:50.8130059-08:00                    iisexpress
HostStart/Start               2021-01-05T19:49:52.7516877-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:49:52.7714594-08:00                    iisexpress
Process/Start                 2021-01-05T19:49:57.2708380-08:00                    iisexpress
HostStart/Start               2021-01-05T19:49:59.2827210-08:00                    iisexpress
RequestStart/Start            2021-01-05T19:49:59.3014782-08:00                    iisexpress

2077.5452,1961.4941,1964.5139,1958.4535,2030.6402

Kestrel- F5

Process/Start                 2021-01-05T19:52:00.1557415-08:00                       Timings
HostStart/Start               2021-01-05T19:52:02.0314622-08:00                       Timings
RequestStart/Start            2021-01-05T19:52:03.6468534-08:00                       Timings
Process/Start                 2021-01-05T19:52:13.6975968-08:00                       Timings
HostStart/Start               2021-01-05T19:52:15.2602723-08:00                       Timings
RequestStart/Start            2021-01-05T19:52:16.7073969-08:00                       Timings
Process/Start                 2021-01-05T19:52:19.1274063-08:00                       Timings
HostStart/Start               2021-01-05T19:52:20.4249394-08:00                       Timings
RequestStart/Start            2021-01-05T19:52:20.7562905-08:00                       Timings
Process/Start                 2021-01-05T19:52:23.1473057-08:00                       Timings
HostStart/Start               2021-01-05T19:52:24.2801725-08:00                       Timings
RequestStart/Start            2021-01-05T19:52:25.9827068-08:00                       Timings
Process/Start                 2021-01-05T19:52:28.1533240-08:00                       Timings
HostStart/Start               2021-01-05T19:52:29.4302469-08:00                       Timings
RequestStart/Start            2021-01-05T19:52:31.0462199-08:00                       Timings

3491.1119,3009.8001,1628.8842,2835.4011,2892.8959

Kestrel- Ctrl+F5

Process/Start                 2021-01-05T19:50:32.0470546-08:00                       Timings
HostStart/Start               2021-01-05T19:50:32.2286960-08:00                       Timings
RequestStart/Start            2021-01-05T19:50:32.7734021-08:00                       Timings
Process/Start                 2021-01-05T19:50:35.3528319-08:00                       Timings
HostStart/Start               2021-01-05T19:50:35.5134593-08:00                       Timings
RequestStart/Start            2021-01-05T19:50:36.0715108-08:00                       Timings
Process/Start                 2021-01-05T19:50:39.5221784-08:00                       Timings
HostStart/Start               2021-01-05T19:50:39.6840005-08:00                       Timings
RequestStart/Start            2021-01-05T19:50:40.2527548-08:00                       Timings
Process/Start                 2021-01-05T19:50:43.3084716-08:00                       Timings
HostStart/Start               2021-01-05T19:50:43.4686276-08:00                       Timings
RequestStart/Start            2021-01-05T19:50:44.0382616-08:00                       Timings
Process/Start                 2021-01-05T19:50:46.9270852-08:00                       Timings
HostStart/Start               2021-01-05T19:50:47.0872181-08:00                       Timings
RequestStart/Start            2021-01-05T19:50:47.6563635-08:00                       Timings

726.3475,718.6789,730.5764,729.79,729.2783

@shirhatti I'm a little concerned that the Kestrel F5 scenarios aren't including the time for .NET starting, as you are looking for host start as the event to start timing here: https://github.com/shirhatti/ProcessAudit/blob/main/Program.cs#L37.

Nvrm, apparently I needed to modify the process audit example to have the right app name for the Kestrel F5 scenario. My bad!

I ran a twitter poll around IIS Express VS Kestrel, and overwhelmingly it leaned to making Kestrel the default. https://twitter.com/JustinKotalik/status/1352314886810812417.

image

We met with @vijayrkn and @sayedihashimi and it sounds like we will reach out to @BillHiebert in March to see if he has capacity to implement this in VS.

#27463 for details on one feature we'd add to VS.

Besides that, I believe all of the other required work is switching the templates to have Kestrel first.

I don't think any template change will impact this, launchSettings.json isn't a part of the template. It is auto generated by Visual Studio.

It may be part of the websdk then. When you run dotnet new web on command line, a launchsettings.json is generated.

@jkotalik ok, maybe things have changed. Bill will know what the correct steps are when we meet with him.

@sayedihashimi launchsettings.json is defined in the templates, the first entry becomes the default. @phenning to confirm

Need to follow up with web tool folks to figure out any other places we generate or implicitly create a launchsettings.json file.

@BillHiebert Don't we also generate a launchsettings.json from the project system if the template does not already have one?

It looks like you guys already have the template change here:
https://github.com/dotnet/aspnetcore/blob/main/src/ProjectTemplates/Web.ProjectTemplates/content/RazorPagesWeb-CSharp/Properties/launchSettings.json

Yeah, the previous PR I just merged handled the templates. I filed an issue in the web tools azdo repo for generation of launchsettings.json

This is done right @jkotalik ?

I think this is done on our side.