O IIS fornece vários recursos comuns que não estão disponíveis por padrão em serviços da web auto-hospedados. Supervisor: monitora a saúde do aplicativo da web e mata / reaparece o aplicativo se ele começar a parecer prejudicial (usando muita memória, CPU, etc. - configurável). Limites de recursos, como uso da CPU, limites de conexão, etc. Execute como um determinado usuário para ter menos privilégios de segurança. Gerenciar certificados / SSL. Hospede / gerencie muitos aplicativos através de uma porta / interface. Proxy reverso para aplicativos de console. Muitas outras coisas que não mencionei, como o registro de solicitações.
Não estou familiarizado com o Tomcat, mas presumo que seja a mesma história. Você obtém recursos extras de hospedagem que a auto-hospedagem não fornece por padrão e pode ser bastante difícil de implementar.
Muitas vezes, os produtos que expõem um serviço da web auto-hospedado ainda recomendam colocá-los atrás de um proxy reverso ou outro supervisor em produção. Isso pode garantir que ele sobreviva a falhas ou seja gracioso durante as interrupções da rede. Estou pensando nos serviços do NGINX for Docker, por exemplo. No espaço .NET, acredito que o Kestrel possui proxy reverso através do IIS como prática padrão (ou talvez NGINX no Linux / Mac).
Tradicionalmente, os aplicativos ASP.NET eram hospedados apenas no Windows no Internet Information Server (IIS). A maneira recomendada de executar aplicativos ASP.NET Core no Windows ainda está usando o IIS, mas como um servidor proxy reverso. O ASP.NET Core Module no IIS gerencia e solicita proxies ao servidor HTTP Kestrel hospedado fora de processo.
Expires
eETag
cabeçalhos. E coisas mais complicadas, como separar o tráfegohost
, manter os aplicativos afastados da memória um do outro, SSL e gerenciar milhares de solicitações simultâneas ...