Soy nuevo en OWIN y Katana. Realmente no entiendo por qué debería usar OWIN, mientras que puedo usar IIS
. Para simplificar, mi pregunta es: ¿qué pierdo si omito el aprendizaje de OWIN y uso IIS para mis sitios web?
Busqué en Google pero no hay una explicación simple. Hay alguna información aquí , pero utilizan algunas frases de la jerga así que no puedo entenderlo.
Respuestas:
En asp.net WebApi v2, la canalización OWIN se convierte en la predeterminada. Eventualmente será la tubería estándar en cualquier proyecto asp.net.
No puedo decirlo mejor de lo que está escrito aquí: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
La sección "La interfaz web abierta para .NET (OWIN)" explica perfectamente los objetivos de OWIN.
Sin OWIN, los bits asp.net se acoplan a la forma en que IIS se comunica con la aplicación. OWIN extrae servidores web y componentes de framework. Eso significa que su código de aplicación ahora estará al tanto de la interfaz OWIN, pero no del servidor web que atiende la solicitud.
A cambio, las aplicaciones se pueden portar más fácilmente entre hosts y plataformas / sistemas operativos potencialmente enteros. Por ejemplo, la capacidad de alojar una aplicación en una consola o cualquier proceso le permite a Mono alojarla sin esfuerzo ... (Raspberry Pi, cualquiera)
El segundo aspecto es que funciona como una tubería.
Puede conectar cualquier middlewares (y tantos como desee) entre el servidor web y su aplicación.
Esto permite más soluciones modulares. Puede desarrollar middlewares redistribuibles que puedan afectar la solicitud / respuesta que llega a / desde su aplicación, pero mantenga estos módulos separados del código de la aplicación.
Para convencerse de los beneficios de este enfoque modular, eche un vistazo a los paquetes nuget disponibles para OWIN: http://www.nuget.org/packages?q=owin
Muchos de estos paquetes eran anteriormente funciones básicas de asp.net, y se han extraído como middleware.
Por ejemplo, agregar soporte para iniciar sesión con varios proveedores de OAuth se convierte en un problema de infraestructura (un middleware) y ya no necesita ser parte de su código de aplicación:
...
O si desea reemplazar automáticamente todas las imágenes de su sitio web por lindas imágenes de gatos, también puede hacerlo de manera transparente:
https://github.com/serbrech/Owin.Catify
EDITAR: ahora está disponible como un paquete nuget : Owin.Catify !
fuente
Sí, eso es correcto OWIN es una interfaz y Katana es una implementación de la interfaz OWIN de Microsoft . Por lo tanto, escuchamos estas 2 palabras (OWIN / KATANA) juntas y muchas veces nos confundimos entre la diferencia entre estos 2 términos. Entonces, Katana es la implementación de Microsoft de la interfaz OWIN. Digamos que hay otra compañía llamada BIG-BOSS que quería crear su propia implementación de OWIN, pueden hacerlo y nombrar su implementación como 'BATANA' y anunciar frases como OWIN / BATANA.
Entonces, ¿por qué OWIN!
Piense en un país donde el único vehículo disponible para moverse es un camión. Nada más. Si desea comprar un vehículo, compraría un camión. Bueno, eso solía servir bien, pero la gente comenzó a darse cuenta de que no necesitan camiones todo el tiempo, especialmente cuando quieren ir a ver una película o comprar leche, conducir un camión pesado no solo cuesta mucho combustible, sino que también Añadir estrés en la conducción. Pero sí, si quieren llevar muchas cosas pesadas, el camión sirve muy bien el propósito.
Luego, el gobierno de ese país presentó una especificación para los fabricantes de vehículos. La especificación es la siguiente:
Entonces, según estas especificaciones, cualquiera puede fabricar un vehículo de acuerdo con diferentes necesidades y puede nombrar su vehículo en consecuencia. Por lo tanto, Sedan, camioneta, SUV, VAN, etc., todo tipo de vehículo apareció en el mercado. Si alguien no necesita llevar cosas pesadas todo el tiempo, sino que necesita un vehículo solo para ir al lugar de trabajo, puede comprar un pequeño sedán. Alguien puede comprar SUV si necesita un poco más de potencia.
Según el ejemplo anterior, podemos decir que nuestra aplicación web ASP.NET usa System.Web Assembly, que está muy cargada (como un camión) y si queremos hacer una pequeña aplicación web donde nuestro propósito es servir solo algunos archivos en un pequeño conjunto de solicitudes, estamos obligados a utilizar ese sistema pesado. Conjunto web (camión). Ahora, OWIN aparece. OWIN es un conjunto de especificaciones (podemos llamarlo interfaz) que define un servidor. Según esa especificación, alguien (como un fabricante de vehículos) puede hacer varios tipos de servidores en función de los dominios de problemas específicos / necesidades de la aplicación. Microsoft creó su propia Implementación para OWIN llamada Katana de la misma manera que puede servir API web. Como WebAPI es una tecnología ligera, que no necesita un sistema completo.
Ahora, si preguntas, ' ¿Lo necesito?'? La respuesta es: "Depende de su necesidad de rendimiento". Si no le importa conducir su camión incluso para ir a ver una película, entonces, tal vez no necesite OWIN. Pero si siente eso, un automóvil Sedan ligero es todo lo que necesita para conducir dentro de una ciudad, a poca distancia, ver películas ... etc., sí, puede verificar qué implementaciones de OWIN están disponibles en el mercado. Katana es una de las implementaciones de OWIN, por lo tanto, puede verificar lo que ofrece Katana. No solo Katana, si alguna otra compañía implementa OWIN de acuerdo con un Dominio específico (por ejemplo, un servidor para Dispositivos Médicos que descargará la información más reciente sobre medicamentos) y si usted es médico, tal vez, puede verificar esa implementación de OWIN. Además, usted mismo puede crear su propia implementación de OWIN dirigida a cualquier nicho específico.
En términos de aplicaciones web, si usted es un desarrollador web simple, que desarrolla sitios web personalizados para sus clientes, tal vez no tenga que preocuparse por la implementación personalizada de OWIN, porque IIS le servirá de manera equilibrada. Si crea un proyecto de API web, obtendrá una plantilla basada en Katana preparada a partir de Visual Studio -> Nuevo proyecto, por lo que no tendrá que preocuparse por nada más que aprender técnicas específicas de Katana. En este momento, Katana no es lo suficientemente madura como para reemplazar completamente la necesidad de IIS para ASP.NET MVC, pero tal vez, en el futuro lo hará.
Entonces, ¿cuándo necesito escribir mi propia implementación de OWIN?
Respuesta: Bueno, digamos, por ejemplo, que ha desarrollado una aplicación de Windows que debe ejecutarse como un servidor en segundo plano y escuchar un número de puerto XXXX. Su servidor responderá solo a un conjunto de solicitudes como esta:
Eso es todo. Y nada más. Entonces, ¿por qué necesitarías un servidor web IIS completo para esta pequeña tarea? Puede crear su propia implementación de OWIN en ese caso. (Tal vez, usarás Katana para eso)
Ok, entendí que, si quiero crear un sitio web ASP.NET MVC, no tengo la opción de reemplazar IIS, entonces ¿por qué debería saber sobre Katana en este momento?
Respuesta: Aunque Katana no es lo suficientemente madura como para reemplazar la necesidad de IIS para que pueda alojar su sitio web ASP.NET MVC directamente en Katana, pero Katana implementó muchas interfaces interesantes de OWIN para que pueda aprovechar la ventaja de usar esas características al lado. Por ejemplo, antes de permitir a sus usuarios iniciar sesión con Facebook, Google, Twitter, etc., no era muy fácil. Katana le ofrece muchos ganchos (como middleware) para que pueda dejar que Katana se encargue fácilmente de la autenticación externa basada en redes sociales sin escribir código de plomería. Hay muchos otros beneficios al usar Katana que puede descubrir cuando comience a usar esta tecnología.
fuente
what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Una versión más simple de esa respuesta es que Katana es gong para reemplazar completamente el ensamblaje de System.Web y la antigua tubería ASP.NET, lo que le brinda una mayor flexibilidad (úsela en más escenarios y use solo las partes que desee) y el rendimiento.
Por lo tanto, todos deberían ver su evolución ahora y estar listos para cambiar cuando finalmente se complete.
A continuación se muestra un diagrama que dibujé para completar los detalles que Microsoft no puede incluir en este artículo .
OWIN es un estándar tal que permite que los marcos de aplicaciones se ejecuten sobre él y se olviden de todo lo que se encuentra debajo. Por otro lado, OWIN utiliza varios adaptadores de host para asegurarse de que puede comunicarse con los servidores web subyacentes (IIS y muchos otros).
Ahora estoy trabajando con el autor del servidor web Jexus para investigar cómo podemos escribir un adaptador host para unir OWIN / Katana y Jexus. Estamos muy contentos de saber que OWIN es flexible y altamente personalizable.
Referencia: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
fuente
System.Web
.OWIN está diseñado para desacoplar servidores web de los marcos en los que trabaja. Puede hacer que las aplicaciones sean livianas y portátiles para los marcos de mezcla y servidores.
Y Katana es la implementación de Microsoft de componentes OWIN.
Desde los últimos años, Microsoft está haciendo que las herramientas web sean más ágiles y receptivas a medida que avanza su plan. Por ejemplo, el desarrollo de ASP.Net MVC y ASP.Net Web API. No dependen de System.Web dll, que es una carga enorme que sienten ahora, creo. La ventaja es que ambas soluciones de desarrollo se pueden proporcionar de manera oportuna y el ciclo es más rápido que nunca. Además, ahora los desarrolladores pueden implementar estas aplicaciones en hosts OWIN personalizados o Katana, que es una referencia de la implementación de OWIN.
¿Cuál es el punto después de todo?
Microsoft ha lanzado un proyecto que es un host web ligero basado en OWIN sobre IIS, llamado `Helios. El objetivo es evitar la relación ASP.NET/IIS al proporcionar algunos componentes pequeños independientes que se pueden usar, instalar y administrar de forma independiente en un host web que implementa las especificaciones OWIN.
Una de las razones principales es el factor de rendimiento. Helios podrá lograr un rendimiento 2x-3x más que la aplicación ASP.Net estándar. En términos de consumo de memoria, Helios es mucho mejor que System.Web dll. En un punto de referencia tomado, la arquitectura Helios permitió que una aplicación de muestra lograra 50000 solicitudes concurrentes con aproximadamente 1 GB menos de sobrecarga en comparación con una aplicación ASP.Net estándar.
fuente
OWIN es una abstracción entre la aplicación web y la plataforma de alojamiento. Si escribe su aplicación web usando OWIN no está vinculado a IIS, puede usar otro host si lo desea.
Preguntó por qué usar OWIN en lugar de IIS, pero no son alternativas entre sí. OWIN se encuentra entre IIS y su aplicación para que pueda cambiar IIS sin tener que volver a escribir su aplicación.
También puede consultar esta página https://github.com/Bikeman868/OwinFramework/wiki/OWIN
fuente