asp.net - route - Distinción entre Kestrel y Katana
forms asp net core (4)
"Project Katana" incluye Microsoft que agrega soporte a IIS para OWIN, crea OwinHost.exe y proporciona bibliotecas para permitir que la aplicación interactúe con un WebAPI de hosting propio . ASP.NET MVC 5 (no ASP.NET Core) utiliza algunas de estas bibliotecas, como Microsoft.Owin.Security, para conectar la identidad / autenticación a través de OWIN, pero MVC 5 no admite el alojamiento propio (aunque es posible usar otras herramientas). La biblioteca SelfHosting solo está diseñada para WebAPI.
Por lo tanto, "Katana" es un término amplio que se refiere tanto a las implementaciones de host como al soporte de aplicaciones web para OWIN: "Estos componentes incluyen componentes de infraestructura, como hosts y servidores, así como componentes funcionales, como componentes de autenticación y enlaces a marcos. como SignalR y ASP.NET Web API ".
Es posible que vea frases como "Migrar de Katana a ASP.NET Core" que se refieren al lado de la aplicación web. Lo que significa abandonar las bibliotecas Microsoft.Owin y usar ASP.NET Core que tiene soporte OWIN completo incorporado sin la necesidad de bibliotecas adicionales. O puede ver una frase similar que significa mudarse de un host de Katana a otro host como Kestrel. Desafortunadamente, el término se utiliza para referirse a cualquier lado de la implementación con poca aclaración, y tendrá que prestar atención al contexto de la discusión.
Kestrel es solo una implementación de host. Su objetivo es proporcionar soporte de alojamiento OWIN a través de muchas plataformas. Es más liviano, y no es tan completo ni tan maduro como IIS. Se recomienda usarlo detrás de un proxy inverso de un servidor web más seguro y de segunda generación, como IIS, Apache, nginx u otro. Kestrel es lo que la documentación actual de Microsoft recomienda como host para implementar las aplicaciones web de ASP.NET Core en otras plataformas como Linux.
Si crea un proyecto ASP.Net Core, Kestrel se incluye actualmente de forma predeterminada. Es compatible con las mismas plataformas que soporta ASP.NET Core.
Según tengo entendido, actualmente puede auto hospedarse WebAPI utilizando Katana, y MVC tendrá esta capacidad en una versión futura. Esencialmente, Katana será una opción de alojamiento disponible tanto para MVC como para WebAPI.
Kestrel ha entrado en la imagen, y veo a unos pocos empleados de MS que escriben en su blog que demuestran el alojamiento de ASP.NET vNext en Linux.
Tengo entendido que tanto Kestrel como Katana implementan el oleoducto OWIN.
A partir de ahí todo es un poco borroso. Me pregunto por qué Kestrel ha entrado en escena, cuando parece que Katana podría tener el mismo propósito si lo compilaste con mono e hiciste algunos esfuerzos para que sea compatible con varias plataformas (quizás sea más fácil decirlo que hacerlo).
¿Kestrel y Katana tienen el mismo propósito? ¿O es una especializada de alguna manera que la otra no?
¿Será Kestrel eventualmente una opción viable para las implementaciones de Windows? ¿O será especializado para entornos que no son de Windows y Katana sigue siendo la opción para Windows?
Reconozco que posiblemente estoy pidiendo una comparación de manzanas con naranjas debido a mi falta de conocimiento de Katana / Kestrel, pero si la respuesta es "Las naranjas tienen un sabor más ácido que las manzanas", entonces la OMI es una respuesta perfectamente válida.
Katana es la implementación OWIN de Microsoft y también incluye algunos componentes de middleware para seguridad / autenticación, servicio de archivos estáticos y algunas otras cosas.
Kestrel es el servidor web de desarrollo multiplataforma de Microsoft que se puede usar con ASP.NET 5.
ASP.NET 5 no implementa OWIN, pero tiene un "puente" para permitir que los componentes de OWIN se utilicen en aplicaciones ASP.NET 5, incluida la ejecución en Kestrel.
Puede ser una pregunta antigua, pero como una búsqueda rápida en Google me llevó hasta aquí, creo que nadie más hizo una pregunta similar.
Citando la documentación de ASP.NET 5:
Cernícalo
Kestrel es un servidor web multiplataforma basado en libuv, una biblioteca de E / S asíncrona multiplataforma. Kestrel es de código abierto, y puede ver la fuente de Kestrel en GitHub. Usted agrega soporte para Kestrel al incluir "Kestrel" en las dependencias de su proyecto enumeradas en project.json.
Elegir un servidor
Si tiene la intención de implementar su aplicación en un servidor Windows, debe ejecutar IIS como un servidor proxy inverso que administra y envía las solicitudes a Kestrel. Si se implementa en Linux, debe ejecutar un servidor proxy inverso comparable, como Apache o Nginx, para enviar las solicitudes a Kestrel.
Para los escenarios de auto hospedaje, como ejecutar en Service Fabric, recomendamos usar Kestrel sin IIS. Sin embargo, si necesita la autenticación de Windows en un escenario de hospedaje automático, debe elegir WebListener.
Entonces, mi entendimiento es: si Kestrel era solo un servidor de desarrollo, ya no lo es y de alguna manera está reemplazando a Katana y OWIN.
Todavía no obtengo una imagen clara después de leer otras respuestas en esta pregunta, así que hice una investigación y aquí está mi conclusión:
- OWIN es una especificación que define una interfaz de programación entre un servidor web (como Kestrel y los proporcionados por Katana) y una aplicación web (el código que usted escribe).
- Kestrel viene de ASP.NET Core. Es un servidor web compatible con OWIN.
- Katana viene de ASP.NET 4.X. Es un conjunto de cosas de la implementación OWIN de Microsoft, incluidos los servidores OWIN.
Por último, si bien no menos importante:
- ASP.NET 5 está muerto y reemplazado por ASP.NET Core. Así que no lo menciones más.
- OWIN es lo clave / esencial tanto en ASP.NET 4.X como en ASP.NET Core.
Para más información, puede leer https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana