Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ecatepec
División Ingeniería en Sistemas
Computacionales
Academia Diseño en Ingeniería
“OWIN”
Grupo:
5801
OWIN
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, fomentar el desarrollo de módulos simples para el desarrollo web
.NET y, al ser un estándar abierto, estimular el ecosistema de código abierto de
las herramientas de desarrollo web .NET.
El diseño de esta abstracción ha tenido dos objetivos fundamentales, crear una
abstracción lo más simple posible y que utilice las mínimas dependencias
posibles. Todo esto nos ayuda a la hora de crear nuevos componentes, ya que
nos permite desarrollarlos más fácilmente y son más fáciles de utilizar e integrar
en el resto de proyectos. Además, esto nos proporciona la posibilidad de cambiar
entre diferentes servidores hosts o incluso tener aplicaciones web hospedadas
en nuestro propio proceso.
Esto se ha conseguido mediante dos elementos. El primero es un diccionario con
las variables de entorno donde se guarda el estado de toda la información para
procesar las peticiones y respuestas realizadas al servidor. El diccionario con las
variables de entorno se define como:
IDictionary<string, object>
Un servidor web compatible con OWIN es responsable de crear este diccionario
con los datos de las peticiones y respuestas, como las cabeceras, el cuerpo, los
parámetros.
El segundo elemento que nos proporciona OWIN es el application delegate, que
es el que se encarga de ejecutar los diferentes componentes pasándoles como
parámetro el diccionario anterior y devolviendo una Task. Se define como:
Func<IDictionary<string, object>, Task>;
Con esta abstracción se consiguen una serie de objetivos:
Tener un número mínimo de dependencias.
Obtener un mayor rendimiento gracias al diseño asíncrono.
Poder crear pipelines complejos.
Katana/OWIN
Mientras OWIN es mantenido por la comunidad, el proyecto Katana son los
componentes de OWIN creados por Microsoft. Aunque estos también los
encontramos como software libre. Entre estos componentes podemos encontrar
SignalR y Wep API.
Los principales objetivos del proyecto Katana son:
Componentes portables, fácilmente sustituibles por nuevos
componentes y fácilmente actualizables sin alterar al resto de
componentes. Además, implica que los mismos pueden ser ejecutados
tanto en un IIS como en un servidor de terceros o incluso en procesos
nuestros como aplicaciones de consola.
Modular y flexible. A diferencia de muchos frameworks que vienen con
multitud de funcionalidades activadas por defecto, el proyecto Katana
tiene como objetivo pequeños componentes centrados en tareas
concretas, dando al programador la elección de cuáles de ellos utilizar.
Eficiente y escalable. Romper el framework en pequeños componentes
nos da la posibilidad de utilizar sólo los componentes que realmente
necesitamos, incrementando el rendimiento de nuestras aplicaciones.
Arquitectura
Para conseguir esto Katana divide la arquitectura de la aplicación en cuatro
capas lógicas, dando la posibilidad de cambiar un componente en cualquiera de
las capas sin afectar al resto.
Capa Applications
Esta capa no ha cambiado ya que, como hemos comentado, OWIN y Katana no
son un nuevo modelo de programación; simplemente desacoplan los servidores
de los frameworks. Por lo que para realizar nuestras aplicaciones podremos
seguir utilizando todo lo que ya sabíamos
Capa Middleware
Además de desacoplar los frameworks web y los servidores web, OWIN permite
encadenar middleware en una tubería. Un marco web puede interactuar con
OWIN sin saber si está interactuando directamente con el servidor web
subyacente, o con una o más capas de middleware (cada una implementando
OWIN) en la parte superior del servidor web. Esto permite problemas de
infraestructura, como la autenticación, para ser dividido en módulos
separados. Esto es deseable ya que los desacopla del propio código de la
aplicación y los hace reutilizables en todas las aplicaciones. En Project Katana,
Microsoft ha convertido en módulos OWIN varias características de ASP.NET
que anteriormente formaban parte del marco central de ASP.NET. Esto les
permite ser reutilizados en otros marcos web, y también asegura una separación
más limpia de la aplicación que los utiliza.
Capa Host
Host: Es responsable de manejar el hilo principal y crear el flujo que seguirán
las peticiones en el pipeline de OWIN. Actualmente en el proyecto Katana hay
tres opciones:
IIS: Instalando el páquete Microsoft.Owin.Host.SystemWeb el pipeline de OWIN
funcionara sobre IIS sin problemas, pero las capas de Host y Server están
ligadas y no podemos sustituir la implementación del Server.
OwinHost.exe: El proyecto Katana ya nos trae un ejecutable que puede
arrancarnos el host desde una aplicación de consola, como si lo hospedáramos
en nuestro propio proceso, pero sin tener que crearlo.
Host personalizado: El proyecto Katana nos permite hospedar nuestras
aplicaciones en nuestro propio proceso, de una manera similar a como se realiza
con Web API.
Uso de OWIN
Aplicación OWIN que corre en IIS
Para esta aplicación, comenzamos creando con Visual Studio una nueva
aplicación Web, a la que llamamos IIS_Owin y seleccionamos la plantilla vacia
Esta plantilla nos crea el esqueleto básico para nuestra clase de configuración:
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(IIS_Owin.Startup))]
namespace IIS_Owin
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application,
// visit http://go.microsoft.com/fwlink/?LinkID=316888
}
}
}
app.Run(context =>
context.Response.ContentType = "text/html";
return context.Response.WriteAsync("<h1
style='color:red'>OWIN</h1>"+
});
Por último, se escribe el código del método Main en el archivo Program.cs,
como se ve a continuación:
http://localhost:8888