¿Cómo explicar Katana y OWIN en palabras y usos simples?

337

He leído muchos artículos sobre los proyectos OWIN y Katana, pero no pude tener una idea completa.

Para un desarrollador web normal que usa ASP.NET:

  1. Qué es exactamente OWIN y qué problemas resuelve (en palabras simples). ¿Cuál es su relación con IIS?
  2. ¿OWIN reemplaza a IIS? en caso negativo, ¿en qué situaciones OWIN se adapta mejor?
  3. ¿Cómo podría ayudarme OWIN en mis proyectos de trabajo diario?
  4. ¿Cómo podría ayudarme OWIN en proyectos de superación personal?
ebram khalil
fuente
Puede considerar cambiar la respuesta aceptada considerando que algunos puntos no son realmente correctos, son engañosos.
Admir Tuzović
3
Mi libro en ASP.net sugiere implementar Identity y la clase UserManager a través de OWIN y realmente no veo el punto. Me dejó completamente confundido ...
Luke

Respuestas:

409

Con respecto al comentario anterior, OWIN no es un marco. OWIN es una especificación sobre cómo deben construirse los servidores web y las aplicaciones web para desacoplarlos y permitir el movimiento de las aplicaciones ASP.NET a entornos que antes no eran compatibles.

Antes de OWIN, cuando creaba una aplicación ASP.NET, estaba inherentemente vinculado a IIS debido a la gran dependencia del System.Webensamblado.

System.Web es algo que ha existido desde ASP (versión no .NET) e internamente contiene muchas cosas que quizás ni siquiera necesite (como Formularios web o Autorización de URL), que por defecto se ejecutan en cada solicitud, consumiendo recursos y haciendo ASP Las aplicaciones .NET en general son mucho más lentas que sus contrapartes, como Node.js, por ejemplo.

OWIN en sí no tiene ninguna herramienta, biblioteca o cualquier otra cosa. Es solo una especificación.

Katana, por otro lado, es un marco completamente desarrollado para hacer un puente entre los marcos ASP.NET actuales y la especificación OWIN. Por el momento, Katana ha adaptado con éxito los siguientes marcos ASP.NET a OWIN:

  • API web
  • Señal R

ASP.NET MVC y Web Forms todavía se ejecutan exclusivamente a través de System.Web, y a la larga hay un plan para desacoplarlos también.

Por otro lado, IIS es un buen host ingenioso para servidores web. Todos los problemas de rendimiento de ASP.NET con IIS tienen raíces profundas System.Websolamente. Hasta hace poco, al decidir cómo alojaría su servidor web, tenía dos opciones:

  • IIS
  • Self-Host

Entonces, si quisieras una actuación, optarías por una opción de auto-host. Si quisieras muchas características listas para usar que ofrece IIS, optarías por IIS pero perderías rendimiento.

Ahora, hay una tercera opción, una biblioteca de Microsoft llamada Helios (nombre de código actual) que tiene la intención de eliminar System.Web, y le permite usar IIS en una forma más "limpia", sin bibliotecas o módulos innecesarios. Helios ahora está en versión preliminar y está esperando más comentarios de la comunidad para que sea totalmente compatible con el producto de Microsoft.

Espero que esta explicación te aclare las cosas mejor.

EDITAR (septiembre de 2014):

Con ASP.NET vNext en desarrollo, Katana se está retirando lentamente. La versión 3.0 probablemente será la última versión importante de Katana como un marco independiente.

Sin embargo, todos los conceptos introducidos con Katana se están integrando en ASP.NET vNext, lo que significa que el modelo de programación será prácticamente el mismo. Cita de la publicación del foro hecha por David Fowler (Arquitecto de ASP.NET vNext):

vNext es el sucesor de Katana (por eso se ven tan similares). Katana fue el comienzo de la ruptura con System.Web y con componentes más modulares para la pila web. Puede ver vNext como una continuación de ese trabajo pero yendo mucho más allá (nuevo CLR, nuevo sistema de proyectos, nuevas abstracciones http).

Todo lo que existe hoy en Katana llegará a vNext.

EDITAR (febrero de 2015):

ASP.NET vNext ahora se conoce como ASP.NET 5 y se creará sobre .NET Core 5. .NET Core 5 es una versión ligera de .NET Framework, diseñada para admitir los objetivos de ASP.NET 5 y .NET Native . Sin embargo, ASP.NET 5 también será compatible con .NET Framework 4.6, que debería estar disponible junto con .NET Core 5. Tanto ASP.NET 5 como .NET Core 5 tendrán licencia bajo MIT y aceptarán contribuciones de la comunidad.

EDITAR (mayo de 2015):

Además, la marca de API web ASP.NET se descontinuará, sin embargo, su tecnología será la base para el nuevo ASP.NET MVC 6. Las versiones anteriores de ASP.NET MVC se crearon implementando IHttpHandler, una interfaz definida en System.Web. ASP.NET MVC 6 elimina esa dependencia, haciéndola portátil a varias plataformas y servidores web.

EDITAR (mayo de 2016):

ASP.NET 5 se renombrará oficialmente a ASP.NET Core a partir de Release Candidate 2, que se lanzará pronto. Lo mismo se aplicará a Entity Framework 7, que pasará a llamarse Entity Framework Core. Puede encontrar más información sobre el anuncio oficial y las razones que lo respaldan en la publicación del blog de Scott Hanselman: ASP.NET 5 está muerto: Presentación de ASP.NET Core 1.0 y .NET Core 1.0

EDITAR (mayo de 2016):

Con el lanzamiento de Release Candidate 2, ASP.NET Core se ha modificado para que las aplicaciones web futuras en realidad sean solo configuraciones de aplicaciones de consola .NET Core para procesar las solicitudes HTTP entrantes . Este concepto hace que ASP.NET Core esté aún más alineado con el enfoque que Microsoft ha adoptado con el soporte de arquitectura de microservicios y su implementación a través de Azure Service Fabric. Se puede encontrar más información sobre el blog oficial: Anunciando ASP.NET Core RC2

Admir Tuzović
fuente
2
@ebramtharwat Ahora, un año después, no parece que helios sea una cosa
Andrew Savinykh
1
Usted mencionó que Katana v3 probablemente será la última versión importante, así que, en el futuro, ¿qué marco se usará para reemplazar a Katana?
Vincent
2
Las características de Katana se han integrado en ASP.NET 5. Katana continuará existiendo para la compatibilidad con versiones anteriores.
Admir Tuzović
2
@ AdmirTuzović: gran respuesta. ¿Hay más actualizaciones para agregar desde mayo de 2016?
Igby Largeman
2
La respuesta inicial con ediciones posteriores explica muy bien las transiciones. Gracias por el esfuerzo.
Sang Suantak
71

Si tuviera que definir OWIN por mí mismo, sería: "Las mejores ideas de las comunidades de desarrollo web de Ruby y Node.js, llegando a .NET"

Pero esto no ayudaría a ningún desarrollador de ASP.NET. Mi propia definición sería algo similar a:

OWIN define una interfaz estándar entre los servidores web .NET y las aplicaciones web. El objetivo de la interfaz OWIN es desacoplar el servidor y la aplicación. Si tengo que responder las preguntas que ha planteado, aquí está:

  1. OWIN es una especificación de interfaz. Desacopla las aplicaciones web de IIS.

  2. Si está utilizando componentes listos (que es lo que es Katana), algunas partes de la funcionalidad de la aplicación son mucho más fáciles de implementar en comparación con ASP.NET anterior. La autenticación con proveedores de identidad de terceros (Facebook, Twitter) es un ejemplo de esto.

  3. OWIN es esencialmente una colección de mejores prácticas, que han sido probadas en comunidades de desarrollo web. Muestra una forma de implementar aplicaciones web que está muy abierta a la extensibilidad. Como cada desarrollador web debe estar constantemente a la vanguardia de las nuevas tecnologías, esta es una forma de mantenerse actualizado con toda la comunidad de desarrollo web y no solo con .NET. Si aprende OWIN, sería mucho más fácil aprender otros marcos de desarrollo web como Express para node.js o Rack para Ruby, porque las prácticas que utilizan son similares.
Slavo
fuente
1
Este artículo también podría ayudar a tener una idea de los problemas históricos resueltos por OWIN / katana: asp.net/aspnet/overview/owin-and-katana/… . Dicho esto, solo estos marcos son compatibles en este momento en el host OWIN : owin.org/#projects . Si su aplicación utiliza alguno de estos marcos de aplicación, esto puede alojarse en OWIN.
Praburaj
¿Puede publicar aquí la secuencia de solicitudes entrantes desde el navegador hasta el punto de respuesta que devuelve al navegador cuando se utiliza el owinhost.exe? No pude encontrar un documento sobre este tema.
Saravanan
2
Los puntos 1 y 2 son engañosos, OWIN no puede reemplazar nada por sí mismo. Al igual que el punto 4, es solo una especificación que requiere implementación de alguna manera, con implementaciones de referencia de Microsoft como Katana y Helios hasta ahora.
Mani Gandham
Las mejores ideas de las comunidades web dev Ruby y Node.js, que vienen a .NET .... puede u pls lista de algunos de los \
Lakshay
1
Middleware Desacoplar la aplicación del entorno de alojamiento haciendo que estos sean conectables.
Slavo
59

Trataré de cubrirlo desde la perspectiva práctica.

Katana es el nombre del proyecto para implementar OWIN en Microsoft .

Qué es exactamente OWIN y qué problemas resuelve (en palabras simples). ¿Cuál es su relación con IIS? OWIN ( Open Web Interface for .NET ) es un estándar ( especificación OWIN ) y Katana es una biblioteca .NET, puede obtener nuget desde aquí . OWIN y Katana se convirtieron en sinónimos en la web.
Antes de que OWIN tu única opción fuera IIScon OWIN, puedes usar cualquier otra aplicación (que tenga un punto de entrada) como servidor web.

¿OWIN reemplaza a IIS? si no, ¿en qué situaciones se adapta mejor OWIN?
No, no reemplaza a IIS, puede usar OWIN e IIS, hay Microsoft.Owin.Host.SystemWebnuget para eso . Es mejor si desea optimizar / cambiar la forma en que se maneja en IIS, o si desea crear su servidor web personalizado a partir de la aplicación Windows Forms.

¿Cómo podría ayudarme OWIN en mis proyectos de trabajo diario?
Podría reducir los costos de funcionamiento de su servidor ya que sus servidores web ya no necesitan ejecutarse en IIS (Windows) (los servidores de Windows son más caros que los basados ​​en Unix, y puede ejecutarlo en la Aplicación de consola en Mono en Linux).

¿Cómo podría ayudarme OWIN en proyectos de superación personal?
El aprendizaje Microsoft.Owin(y otras bibliotecas OWIN relacionadas) mejorará su conocimiento sobre cómo funciona la comunicación HTTP entre el cliente y el servidor web.

Buena lectura si quieres entender más sobre qué es Katana y OWIN.

Matas Vaitkevicius
fuente
66
Bien hecho y gracias por responder directamente a las preguntas publicadas en lugar de aventurarse por el carril de tangenciales.
Dav
¿Qué sucede si siempre usamos un servidor compatible con Microsoft IIS para el alojamiento? Parece que OWIN es el predeterminado en las nuevas plantillas WebApi2. ¿Debo eliminarlo como referencia si planeo alojar en IIS solo / siempre?
TechTurtle
@TechTurtle Hi Tech, recomendaría publicarlo como una pregunta separada.
Matas Vaitkevicius
Muy clara explicación. Gracias por la información útil
Uttam
9

¿Qué es OWIN?

OWIN significa Open Web Interface para .NET. OWIN es una especificación que describe cómo los marcos de desarrollo web como ASP.NET MVC deberían interactuar con los servidores web. El objetivo de OWIN es desacoplar aplicaciones web del servidor web mediante la introducción de una capa de abstracción. Tal abstracción le permite ejecutar la misma aplicación en todos los servidores web que admiten OWIN. Además, simplifica el sistema general porque la capa de abstracción puede proporcionar una infraestructura ligera para alojar las aplicaciones. IIS proporciona un amplio conjunto de características para las aplicaciones web. Sin embargo, las aplicaciones web pueden no necesitar todas estas características. Puede ser suficiente para ellos tener capacidades mínimas de procesamiento HTTP. El host compatible con OWIN puede proporcionar dicho entorno de alojamiento para estas aplicaciones. Además, puede definir una tubería de módulos que se utilizan durante el procesamiento de la solicitud. Una tubería OWIN es una cadena de componentes compatibles con OWIN a través de los cuales pasa una solicitud.

¿Qué es katana?

Katana es un conjunto de componentes creados por Microsoft utilizando las especificaciones OWIN. Algunos de estos componentes incluyen API web, identidad ASP.NET y SignalR.

Arriba está el extracto del artículo de CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

Venkatesh Muniyandi
fuente