IIS offre una serie di funzionalità comuni che non sono disponibili per impostazione predefinita nei servizi Web self-hosted. Supervisore: monitora la salute dell'applicazione web e ucciderà / respawn l'applicazione se inizia a sembrare malsana (utilizzando troppa memoria, CPU, ecc. - configurabile). Limiti di risorse come l'utilizzo della CPU, limiti di connessione, ecc. Esegui come un determinato utente per la sicurezza dei privilegi minimi. Gestisci certificati / SSL. Ospita / gestisci molte applicazioni attraverso una porta / interfaccia. Reverse proxy per console applicazioni. Un sacco di altre cose che non ho menzionato come la registrazione delle richieste.
Non ho familiarità con Tomcat, ma presumo sia la stessa storia. Ottieni funzionalità di hosting extra che l'auto-hosting non ti fornisce di default e potrebbe essere piuttosto difficile da implementare.
Spesso i prodotti che espongono un servizio web self-host raccomandano comunque di metterli dietro un proxy inverso o un altro supervisore in produzione. Ciò potrebbe essere necessario per garantire che sopravviva agli arresti anomali o alla grazia durante le interruzioni della rete. Sto pensando a NGINX per i servizi Docker, per esempio. Nello spazio .NET, credo che Kestrel sia proxy inverso tramite IIS come pratica standard (o forse NGINX su Linux / Mac).
Traditionally, ASP.NET apps have been windows-only hosted on Internet Information Server (IIS). The recommended way to run ASP.NET Core applications on Windows is still using IIS, but as a reverse-proxy server. The ASP.NET Core Module in IIS manages and proxies requests to the Kestrel HTTP server hosted out-of-process.