net asp asp.net asp.net-core kestrel-http-server

asp.net - asp - WebListener vs Kestrel: ¿Por qué elegir uno sobre el otro? ¿Pros contras?



asp.net core apache (3)

La documentación de ASP.NET 5 ( creada por Microsoft el 25 de agosto de 2015 ) que se encuentra aquí enumera el cuadro que se encuentra en la otra respuesta (consulte la página 107 de las páginas del libro de la parte inferior derecha, pero la página 111 del PDF): https://media.readthedocs.org/pdf/aspnet/theming/aspnet.pdf

Kestrel en general tiene un mejor rendimiento, si utilizó uno de los siguientes a continuación:

  • Gran opción si se usa junto con un proxy inverso para aplicaciones expuestas a Internet
  • Aplicaciones internas que se conectan con otras aplicaciones internas en una red virtual privada (no expuesta a Internet)

WebListener es más seguro, más lento y tiene más funciones. Se utiliza en estos casos:

  • Exponga la aplicación a Internet, pero no puede usar IIS. Requiera una mayor seguridad y exponga el servidor directamente a Internet.
  • Características adicionales: elemento de la lista, autenticación de Windows, uso compartido de puertos, HTTPS con SNI, HTTP / 2 sobre TLS (Windows 10), transmisión directa de archivos, almacenamiento en caché de respuestas

¿Cuál es la razón de dos servidores separados pero similares? ¿Cuáles son las diferencias? ¿Puedo correr tanto en docker? ¿Ambos soportan las mismas cosas, como todos los tipos de autenticación?


La siguiente comparación te ayudará a elegir cuál es mejor


Kestrel vs Weblistener - He destacado las diferencias fundamentales a continuación.

(Las palabras son de Microsoft y solo las he editado por brevedad y claridad. Consulte las fuentes vinculadas en la parte inferior).

WebListener es un servidor HTTP / Web solo para Windows para ASP.NET Core que le permite exponer el servidor directamente a Internet sin necesidad de usar IIS. WebListener se basa en Http.Sys (la misma tecnología madura que también alimenta el servicio de escucha HTTP de IIS), como tal, muy rica en características y proporciona protección contra varios ataques .

Kestrel, por otro lado, es un servidor web multiplataforma para ASP.NET Core que está diseñado para ejecutarse detrás de un proxy (por ejemplo, IIS o Nginx) y no debe implementarse directamente frente a Internet . Kestrel es relativamente nuevo y no tiene un complemento completo de defensas contra ataques . Tampoco es tan rico en funciones como WebListener y viene con límites de tiempo de espera, límites de tamaño y límites de usuarios concurrentes.

En esencia, la elección se reduce al escenario de implementación de su aplicación web.

Casos de uso de Weblistener:

Casos de uso de cernícalo:

Actualizar:

Anteriormente, Kestrel siempre requería el uso de un proxy inverso con implementaciones perimetrales (expuestas al tráfico de Internet) por razones de seguridad. Con Kestrel en ASP.Net Core 2.x este ya no es el caso. Echa un vistazo a la documentación para más información. Documentación del servidor web Kestrel

Fuentes:

  1. Docs.Microsoft.com Implementaciones de servidores web en ASP.NET Core
  2. Docs.Microsoft.com Implementación del servidor web WebListener en ASP.NET Core