Owin e katana

Post on 12-Apr-2017

49 views 0 download

transcript

OWIN & Katana

ciandt.com

Tanato Cartaxo17/08/2016

● Overview OWIN e Katana● Porque utilizar Katana?● Let’s Code!

○ Inicialização do Katana○ Construindo Middlewares

● Ferramentas○ TopShelf

ciandt.com

Sumário

OWIN

ciandt.com

O que é?

ciandt.com

OWIN define uma interface entre web servers e web applications em .Net

O intúito do OWIN é prover um padrão para desacoplamento entre servidor e aplicação, incentivando o desenvolvimento modular de middlewares para integrar o pipeline de uma aplicação web.

For a modern Web

ciandt.com

Lightweight e Modular

Inspirado em novas tecnologias como:- Stack para Ruby - Connect para NodeJS- WSGI para Python

OWIN == Katana?

ciandt.com

Katana é o projeto da Microsoft com diversos componentes construidos implementando a interface OWIN.

Inclúi módulo compacto para Self-Host de uma aplicação web.

OWIN Stack

Host

Server

Middleware

Application

ciandt.com

Middleware

ciandt.com

Porque utilizar Katana?

ciandt.com

É leve e escalável!

ciandt.com

Possibilidade de escolha dos componentes do middleware ao servidor e host permite a escolha de opções mais leves e rápidas.

Nenhuma funcionalidade é carregada por padrão, apenas funcionalidades realmente necessárias são carregadas no pipeline da aplicação.

Não depende diretamente do System.Web, que contém um overhead para diversas tecnologias (SessionState, WebForms e etc.).

É modular!

ciandt.com

Módulos são incluidos, removidos e substituidos de forma simples.

Módulos são criados para funções específicas e por isso tendem a ser leves. À medida que frameworks são desenvolvidos e atualizados estes podem adicionar novas funcionalidades ou corrigir erros sem impactar nos demais módulos da aplicação.

É simples!

ciandt.com

Abordagem limpa, facilita o desenvolvimento de um pipeline compreensível.

Sem dependências do IIS e outros componentes.

Fácil desenvolvimento de custom middlewares quando necessário.

Katana self-service pipeline

ciandt.com

Host Server Middleware

Application

IIS

Self-Host

Node JS

Custom Host

System.Web

HttpListener

Authentication

WebApi

Logging

Dependency Injection

Your Code!

And a lot more

Vantagens de Self-Host em relação ao IIS

ciandt.com

Lightweight/Low Memory Footprint.

Carrega apenas o necessário para o pipeline.

Não necessita configuração complexa do IIS.

IIS é dependente da versão do SO, atualizações são dependentes da versão do SO.

Let’s Code!

ciandt.com

using AppFunc = Func<IDictionary<string, object>, Task>;

public class Startup{ public void Configuration(IAppBuilder app) { app.Use(new Func<AppFunc, AppFunc>(SomeMiddleware));

var config = new HttpConfiguration(); config.Routes.MapHttpRoute("default", "api/{controller}");

app.UseWebApi(config); }}

Inicialização do OWIN

ciandt.com

using AppFunc = Func<IDictionary<string, object>, Task>; //done

OWIN middleware contract

OWIN environment dictionary

Return Task

ciandt.com

owin.RequestBodyowin.RequestHeadersowin.RequestMethodowin.ResponseBodyowin.ResponseHeaders...

using AppFunc = Func<IDictionary<string, object>, Task>;

public AppFunc SomeMiddleware(AppFunc next){ // Cria uma função AppFunc utilizando Lambda AppFunc appFunc = async (IDictionary<string, object> environment) => { // Faz algum processamento ("inbound")... // Chama e espera a execução do próximo middleware await next.Invoke(environment);

// Faz algum outro processamento ("outbound") }; return appFunc;}

Exemplo de um middleware OWIN em função

ciandt.com

public class MyOwinMiddleware : OwinMiddleware{ public MyOwinMiddleware(OwinMiddleware next) : base(next) { }

public async override Task Invoke(IOwinContext context) { // Faz algum processamento ("inbound")... // Chama e espera a execução do próximo middleware await next.Invoke(context);

// Faz algum outro processamento ("outbound") }}

Exemplo de um OwinMiddleware - Tipado

ciandt.com

using Microsoft.Owin.Hosting;

class Program{ static void Main(string[] args) { WebApp.Start<Startup>("http://localhost:8080"); Console.Write("Press any key to exit..."); Console.ReadLine(); }}

SelfHosting de uma aplicação web

ciandt.com

Ferramentas

ciandt.com

TopShelf

ciandt.com

Framework para host de aplicações em forma de serviço.

Criação de uma classe de serviço dentro de um console application.

Rodar a aplicação via console application facilita o debug.

Facilidade para instalar o serviço a partir do Topshelf command line.

OBRIGADO!