tag net microsoft asp asp.net asp.net-mvc iis owin katana

asp.net - net - ¿Cuándo debo usar OWIN Katana?



katana microsoft (5)

¿Por qué debería usar OWIN, mientras puedo usar IIS?

OWIN está diseñado para desacoplar los 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 los componentes OWIN.

Desde los últimos años, Microsoft está haciendo las herramientas web 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 ambos desarrollos 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 encima de IIS, llamado `Helios. El objetivo es evitar la relación ASP.NET/IIS al proporcionar algunos pequeños componentes 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 estándar ASP.Net. En términos de consumo de memoria, Helios es mucho mejor que System.Web dll. En una arquitectura de Helios tomada como referencia, una aplicación de ejemplo pudo alcanzar 50000 solicitudes simultáneas con aproximadamente 1 GB menos de sobrecarga en comparación con una aplicación estándar de ASP.Net.

Soy nuevo en OWIN y Katana. Realmente no entiendo por qué debo 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. Aquí hay alguna información, pero usan algunas frases de jerga, así que no puedo entenderla.


En asp.net WebApi v2, el canal de OWIN se convierte en el predeterminado. Eventualmente, será la tubería estándar en cualquier proyecto de asp.net.

No puedo explicarlo mejor que lo que está escrito aquí: asp.net/aspnet/overview/owin-and-katana/…

La sección "La interfaz web abierta para .NET (OWIN)" explica perfectamente los objetivos de OWIN.

Sin OWIN, los bits de asp.net se acoplan a la forma en que IIS se comunica con la aplicación. OWIN abstrae servidores web y componentes del 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 pueden ser portadas más fácilmente entre hosts y plataformas / sistemas operativos potencialmente completos. Por ejemplo, la capacidad de alojar una aplicación en una consola o cualquier proceso permite que Mono la aloje 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 pueden afectar la solicitud / respuesta que llega a su aplicación, pero mantenga estos módulos separados del código de la aplicación.

Para persuadirse 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 la funcionalidad principal de asp.net y se extrajeron como middleware.
Por ejemplo, agregar soporte para iniciar sesión usando 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 imágenes de gatos lindos, también puede hacerlo de manera transparente:

https://github.com/serbrech/Owin.Catify

EDITAR: Ahora está disponible como un paquete Owin.Catify : Owin.Catify !


OWIN es una abstracción entre la aplicación web y la plataforma de alojamiento. Si escribe su aplicación web utilizando OWIN, no está atado a IIS, puede usar otro host si lo desea.

Usted preguntó por qué usar OWIN en lugar de IIS, pero estas no son alternativas entre sí. OWIN se encuentra entre IIS y su aplicación para que pueda cambiar IIS sin volver a escribir su aplicación.

También puede consultar esta página https://github.com/Bikeman868/OwinFramework/wiki/OWIN


Una versión más simple de esa respuesta es que Katana está gong para reemplazar por completo el conjunto de System.Web y el antiguo canal de ASP.NET, lo que le brinda a ambos una mayor flexibilidad (utilícelo en más escenarios y use solo las partes que le gustan) y el rendimiento.

Así que 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 incluye en asp.net/aspnet/overview/owin-and-katana/… .

OWIN es un estándar tal que permite que los marcos de aplicaciones se ejecuten en él y se olviden de todo lo que hay 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 de host para salvar 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/


public interface OWIN { void ListenHttpCallAndServeWebPage(); } namespace Microsoft.OWIN { public class Katana : OWIN { public void ListenHttpCallAndServeWebPage() { // listen to a port for HTTP call and serve web page } } }

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 hacer eso 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 el movimiento es un camión. Nada más. Si quieres comprar un vehículo, comprarías un camión. Bueno, eso solía servir bien, pero la gente comenzó a darse cuenta de que no necesitan un camión 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 también añadir estrés en la conducción. Pero sí, si quieren llevar un montón de cosas pesadas, el camión cumple su función muy bien.

Entonces, el gobierno de ese país creó una especificación para los fabricantes de vehículos. La especificación es la siguiente:

  1. Un vehículo necesita tener 4 ruedas.
  2. Un vehículo debe tener una dirección.
  3. Un vehículo debe tener faros y luces de señal.

Por lo tanto, según estas especificaciones, cualquier persona puede fabricar un vehículo de acuerdo con diferentes necesidades y puede nombrar su vehículo en consecuencia. Por lo tanto, sedán, camioneta pickup, SUV, VAN, ... etc .. todo tipo de vehículo apareció en el mercado. Si alguien no necesita cargar cosas pesadas todo el tiempo, sino que necesita un vehículo para ir al lugar de trabajo, puede comprar un sedán pequeño. Alguien puede comprar un SUV si necesita un poco más de potencia.

Basándonos en el ejemplo anterior, podemos decir que nuestra aplicación web ASP.NET utiliza System.Web Assembly que está muy cargada (como un camión) y si queremos crear una pequeña aplicación web en la que nuestro propósito sea servir algunos archivos basados en un pequeño conjunto de solicitudes, estamos obligados a usar ese ensamblado pesado de System.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 dominios de problemas específicos o necesidades de aplicaciones. Microsoft creó su propia Implementación para OWIN llamada Katana de la misma manera que puede servir la API web. Como WebAPI es una tecnología liviana, que no necesita System.Web, es una implementación de servidor liviana (como Katana) que puede aumentar el rendimiento en gran medida cuando utiliza Web Api alojado en Katana.

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 cree que eso es todo lo que necesita para conducir dentro de una ciudad, a poca distancia, ver una película de un sedán liviano, 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 qué 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 un médico, quizás pueda verificar esa implementación de OWIN. Además, usted mismo puede crear su propia implementación de OWIN dirigiéndose a cualquier nicho específico.

En términos de aplicaciones web, si usted es un desarrollador web simple, desarrollando sitios web personalizados para sus clientes, quizás no tenga que preocuparse por la implementación personalizada de OWIN, porque IIS le brindará un servicio de manera equilibrada. Si crea un proyecto de API web, tendrá una plantilla basada en Katana preparada desde 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 por completo la necesidad de IIS para ASP.NET MVC, pero quizás lo haga en el futuro.

Entonces, ¿cuándo podría necesitar escribir mi propia implementación de OWIN?

Respuesta: Bueno, digamos, por ejemplo, que ha desarrollado una aplicación para Windows que debería 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:

  1. GET Inventory
  2. ELIMINAR ID de inventario = 4
  3. PUT ID de inventario = 5

Eso es todo. Y nada más. Entonces, ¿por qué necesitaría un servidor web IIS completo para esta pequeña tarea? Puede crear su propia implementación OWIN en ese caso. (Quizás, usarás Katana para eso)

Ok, entonces 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: A pesar de que 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, Katana implementó muchas interfaces geniales de OWIN para que pueda aprovechar las ventajas del uso de esas características. al lado. Por ejemplo, permitir que sus usuarios inicien sesión usando Facebook, Google, Twitter, etc. no fue muy fácil antes. Katana le brinda muchos ganchos (como medio) para que pueda dejar que Katana se encargue de la autenticación externa basada en redes sociales fácilmente sin escribir código de plomería. Hay muchos otros beneficios al usar Katana que puede descubrir cuando comience a usar esta tecnología.