Upload
tanato-cartaxo
View
59
Download
0
Embed Size (px)
Citation preview
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!