Hemos estado investigando en distintos sitios para tener para ti la respuesta para tu duda, si tienes dudas deja tu duda y te responderemos sin falta.
Solución:
En asp.net WebApi v2, la canalización OWIN se convierte en la predeterminada. Eventualmente será la canalización estándar en cualquier proyecto de asp.net.
No puedo expresarlo 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 de asp.net se acoplan a la forma en que IIS se comunica con la aplicación. OWIN abstrae los servidores web y los componentes del marco. Eso significa que el código de su aplicación ahora conocerá la interfaz OWIN, pero no el servidor web que atiende la solicitud.
A cambio, las aplicaciones se pueden migrar 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 le permite a Mono alojarla sin esfuerzos … (Raspberry Pi cualquiera)
El segundo aspecto es que funciona como pipeline.
Puede conectar cualquier middlewares (y tantos como desee) entre el servidor web y su aplicación.
Esto permite soluciones más modulares. Puede desarrollar middlewares redistribuibles que pueden afectar la solicitud / respuesta proveniente de 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 el inicio de sesión utilizando varios proveedores de OAuth se convierte en una preocupación de infraestructura (un middleware) y ya no necesita ser parte del código de su aplicación:
- http://www.nuget.org/packages/Microsoft.Owin.Security.Google/
- http://www.nuget.org/packages/Microsoft.Owin.Security.Facebook/
- http://www.nuget.org/packages/Microsoft.Owin.Security.ActiveDirectory/
…
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 nuget: ¡Owin.Catify!
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 un interfaz y Katana es un implementación de la interfaz OWIN por 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 empresa llamada BIG-BOSS que quería crear su propia implementación de OWIN, pueden hacerlo y nombrar su implementación como ‘BATANA’ y publicitar 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 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 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 agregar estrés al conducir. Pero sí, si quieren transportar muchas cosas pesadas, el camión cumple muy bien su 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 dirección.
- Un vehículo debe tener faros y luces de señalización.
Entonces, 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, 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 un SUV si necesita un poco más de potencia.
Basado en el ejemplo anterior, podemos decir que nuestra aplicación web ASP.NET usa System.Web Assembly que está muy cargado (como un camión) y si queremos hacer una pequeña aplicación web donde nuestro propósito es solo servir algunos archivos basados en un pequeño conjunto de solicitudes, estamos obligados a utilizar ese pesado ensamblaje System.Web (camión). Ahora aparece OWIN. OWIN es un conjunto de especificaciones (podemos llamarlo interfaz) que define un servidor. Con base en esa especificación, alguien (como un fabricante de vehículos) puede crear varios tipos de servidores basados en dominios de problemas específicos / necesidades de aplicaciones. Microsoft creó su propia implementación para OWIN llamada Katana de la misma manera que puede servir a la API web. Como WebAPI es una tecnología liviana, que no necesita elementos System.Web completos, una implementación de servidor liviana (como Katana) puede aumentar considerablemente el rendimiento cuando usa Web Api alojada 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 quizás no necesite OWIN. Pero si siente eso, un automóvil sedán liviano es todo lo que necesita para conducir dentro de una ciudad, una distancia pequeña, ver una película, etc., sí, puede verificar qué implementaciones de OWIN están disponibles en el mercado. Katana es una de las implementaciones de OWIN, por lo que puedes consultar lo que ofrece Katana. No solo Katana, si alguna otra empresa 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, pueda 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 simple desarrollador web que desarrolla sitios web personalizados para sus clientes, tal vez no necesite preocuparse por la implementación personalizada de OWIN, porque IIS le brindará un servicio equilibrado. Si crea un proyecto de API web, obtendrá 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 tiene la madurez suficiente para reemplazar completamente la necesidad de IIS para ASP.NET MVC, pero quizás, en el futuro lo hará.
Entonces, ¿cuándo debo escribir mi propia implementación OWIN?
Respuesta: Bueno, digamos, por ejemplo, que ha desarrollado una aplicación de Windows que debería ejecutarse como servidor en segundo plano y escuchar un número de puerto XXXX. Su servidor responderá solo a algunos conjuntos de solicitudes como esta:
- OBTENER Inventario
- BORRAR ID de inventario = 4
- 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? En ese caso, puede crear su propia implementación OWIN. (Quizás, 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 maduro como para reemplazar la necesidad de IIS para que pueda alojar su sitio web ASP.NET MVC directamente en Katana, Katana implementó muchas interfaces interesantes de OWIN para que pueda aprovechar el uso de esas características. al lado. Por ejemplo, permitir que sus usuarios inicien sesión usando Facebook, Google, Twitter, etc.no era muy fácil antes. Katana le ofrece muchos ganchos (como software intermedio) para que pueda permitir 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 de usar Katana que puede descubrir cuando comience a usar esta tecnología.
Una versión más simple de esa respuesta es que Katana reemplazará por completo el ensamblaje System.Web y la antigua tubería ASP.NET, lo que le brinda mayor flexibilidad (úselo en más escenarios y use solo las partes que le gustan) y 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 incluye en este artículo.
OWIN es un estándar tal que permite que los marcos de aplicaciones se ejecuten en él y se olvide de todo lo que hay debajo. Por otro lado, el propio OWIN utiliza varios adaptadores de host para asegurarse de que pueda 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 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/
Tienes la opción de añadir valor a nuestra información colaborando tu experiencia en las interpretaciones.