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 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:
- Un vehículo debe tener 4 ruedas.
- Un vehículo debe tener una dirección.
- Un vehículo debe tener faros y luces de señalización.
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:
- OBTENER inventario
- BORRAR ID de inventario = 4
- PONER ID de inventario = 5
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.