IIS proporciona una serie de capacidades comunes que no están disponibles de forma predeterminada en los servicios web autohospedados. Supervisor: monitorea el estado de la aplicación web y matará / reaparecerá la aplicación si comienza a verse poco saludable (usando demasiada memoria, CPU, etc., configurable). Límites de recursos como uso de CPU, límites de conexión, etc. Ejecutar como un determinado usuario para la seguridad con menos privilegios. Gestionar certificados / SSL. Hospede / administre muchas aplicaciones a través de un puerto / interfaz. Proxy inverso para aplicaciones de consola. Muchas otras cosas que no mencioné, como el registro de solicitudes.
No estoy familiarizado con Tomcat, pero supongo que es la misma historia. Obtiene características de alojamiento adicionales que el alojamiento propio no le proporciona de forma predeterminada y puede ser bastante difícil de implementar usted mismo.
A menudo, los productos que exponen un servicio web autohospedado aún recomendarán colocarlos detrás de un proxy inverso u otro supervisor en producción. Esto puede ser para garantizar que sobrevivirá a los bloqueos o que será elegante durante las interrupciones de la red. Estoy pensando en NGINX para los servicios de Docker, por ejemplo. En el espacio .NET, creo que Kestrel es proxy inverso a través de IIS como práctica estándar (o tal vez NGINX en Linux / Mac).
Tradicionalmente, las aplicaciones ASP.NET se han alojado solo en Windows en Internet Information Server (IIS). La forma recomendada de ejecutar aplicaciones ASP.NET Core en Windows todavía está usando IIS, pero como un servidor proxy inverso. El módulo principal de ASP.NET en IIS administra y envía las solicitudes al servidor HTTP de Kestrel fuera de proceso.
Expires
yETag
encabezados. Y luego cosas más complicadas, como separar el tráficohost
, mantener las aplicaciones alejadas de la memoria de los demás, SSL y administrar miles de solicitudes simultáneas ...