SlideShare uma empresa Scribd logo
1 de 23
OWIN & Katana
ciandt.com
Tanato Cartaxo
17/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
Middlewar
e
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.RequestBody
owin.RequestHeaders
owin.RequestMethod
owin.ResponseBody
owin.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!

Mais conteúdo relacionado

Mais procurados

Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressRômulo Zoch
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.XEduardo Pires
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoAlamo Saravali
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETRenato Groff
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsWaldyr Felix
 
.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?Victor Cavalcante
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacAndre Baltieri
 
Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Eduardo Pires
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic FrameworkLoiane Groner
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalREduardo Pires
 
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...Milton Camara Gomes
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETEduardo Pires
 
Mini curso - Ionic Framework
Mini curso - Ionic FrameworkMini curso - Ionic Framework
Mini curso - Ionic Frameworkjuniorschroder
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?akamud
 

Mais procurados (20)

Palestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPressPalestra UFPR - Intro Ionic framework + WordPress
Palestra UFPR - Intro Ionic framework + WordPress
 
Novidades do ASP.NET 5.X
Novidades do ASP.NET 5.XNovidades do ASP.NET 5.X
Novidades do ASP.NET 5.X
 
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais RobustoIonic Framework - Parte 1 - Iniciando um Projeto mais Robusto
Ionic Framework - Parte 1 - Iniciando um Projeto mais Robusto
 
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NETASP.NET 5 - Novidades do Desenvolvimento Web em .NET
ASP.NET 5 - Novidades do Desenvolvimento Web em .NET
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?.NET Core Internals. O que é o .NET Platform Standard?
.NET Core Internals. O que é o .NET Platform Standard?
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no MacTDC SP 2015 - Criando aplicações ASP.NET no Mac
TDC SP 2015 - Criando aplicações ASP.NET no Mac
 
Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast Futuro do ASP.NET vNext - MVP ShowCast
Futuro do ASP.NET vNext - MVP ShowCast
 
Mini curso: Ionic Framework
Mini curso: Ionic FrameworkMini curso: Ionic Framework
Mini curso: Ionic Framework
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Comunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalRComunicação em Tempo Real com ASP.Net SignalR
Comunicação em Tempo Real com ASP.Net SignalR
 
AWS
AWS AWS
AWS
 
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...
Iniciando o desenvolvimento de aplicativos híbridos com VS Code + Ionic + Typ...
 
Campus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NETCampus Party 2014 - Desenvolvimento Web com ASP.NET
Campus Party 2014 - Desenvolvimento Web com ASP.NET
 
BaaS com Firebase 3
BaaS com Firebase 3BaaS com Firebase 3
BaaS com Firebase 3
 
GDG Angular 2
GDG Angular 2GDG Angular 2
GDG Angular 2
 
Mini curso - Ionic Framework
Mini curso - Ionic FrameworkMini curso - Ionic Framework
Mini curso - Ionic Framework
 
.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
O Futuro do ASP.NET
O Futuro do ASP.NETO Futuro do ASP.NET
O Futuro do ASP.NET
 
ASP .NET Core MVC
ASP .NET Core MVCASP .NET Core MVC
ASP .NET Core MVC
 

Destaque

ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8twMVC
 
Owin and-katana-overview
Owin and-katana-overviewOwin and-katana-overview
Owin and-katana-overviewsonia merchant
 
ASP.NET Web API O to 100
ASP.NET Web API O to 100ASP.NET Web API O to 100
ASP.NET Web API O to 100Himanshu Desai
 
Moving forward with ASP.NET Core
Moving forward with ASP.NET CoreMoving forward with ASP.NET Core
Moving forward with ASP.NET CoreEnea Gabriel
 
Web api crud operations
Web api crud operationsWeb api crud operations
Web api crud operationsEyal Vardi
 
Creating scalable message driven solutions akkadotnet
Creating scalable message driven solutions akkadotnetCreating scalable message driven solutions akkadotnet
Creating scalable message driven solutions akkadotnetDavid Hoerster
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiTiago Knoch
 
Web api 2 With MVC 5 With TrainerKrunal
Web api 2 With MVC 5 With TrainerKrunalWeb api 2 With MVC 5 With TrainerKrunal
Web api 2 With MVC 5 With TrainerKrunalKrunal Trivedi
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Destaque (14)

ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8
 
The Future of ASP.NET
The Future of ASP.NETThe Future of ASP.NET
The Future of ASP.NET
 
Owin and-katana-overview
Owin and-katana-overviewOwin and-katana-overview
Owin and-katana-overview
 
ASP.NET Web API O to 100
ASP.NET Web API O to 100ASP.NET Web API O to 100
ASP.NET Web API O to 100
 
Moving forward with ASP.NET Core
Moving forward with ASP.NET CoreMoving forward with ASP.NET Core
Moving forward with ASP.NET Core
 
End to End Security with MVC and Web API
End to End Security with MVC and Web APIEnd to End Security with MVC and Web API
End to End Security with MVC and Web API
 
Web api crud operations
Web api crud operationsWeb api crud operations
Web api crud operations
 
Creating scalable message driven solutions akkadotnet
Creating scalable message driven solutions akkadotnetCreating scalable message driven solutions akkadotnet
Creating scalable message driven solutions akkadotnet
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web api
 
AKFP At A Glance (2016)
AKFP At A Glance (2016)AKFP At A Glance (2016)
AKFP At A Glance (2016)
 
Web api 2 With MVC 5 With TrainerKrunal
Web api 2 With MVC 5 With TrainerKrunalWeb api 2 With MVC 5 With TrainerKrunal
Web api 2 With MVC 5 With TrainerKrunal
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Semelhante a Owin e katana

Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasAmazon Web Services LATAM
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Fabrício Lopes Sanchez
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e DependênciasWende Mendes
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Wellington Silva
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...iMasters
 
Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet CoreYan Justino
 
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...Amazon Web Services LATAM
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
Desenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateDesenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateAmazon Web Services LATAM
 
CI CD best practices for building modern applications - MAD301 - São Paulo AW...
CI CD best practices for building modern applications - MAD301 - São Paulo AW...CI CD best practices for building modern applications - MAD301 - São Paulo AW...
CI CD best practices for building modern applications - MAD301 - São Paulo AW...Amazon Web Services
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançadoTargettrust
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...Rogério Moraes de Carvalho
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 

Semelhante a Owin e katana (20)

Melhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernasMelhores práticas de CI/CD na construção de aplicações modernas
Melhores práticas de CI/CD na construção de aplicações modernas
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0Construindo aplicações leves e performáticas com ASP.NET Core 1.0
Construindo aplicações leves e performáticas com ASP.NET Core 1.0
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Apostila de asp
Apostila de aspApostila de asp
Apostila de asp
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Curso asp - intermediario
Curso   asp - intermediarioCurso   asp - intermediario
Curso asp - intermediario
 
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
 
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
DevCommerce Conference 2016: Vantagens e resultados de containers e VMs para ...
 
Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet Core
 
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...
Usando Containers e Serverless para acelerar o desenvolvimento de aplicações ...
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
Desenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS FargateDesenvolvimento de Aplicações em Container com AWS Fargate
Desenvolvimento de Aplicações em Container com AWS Fargate
 
CI CD best practices for building modern applications - MAD301 - São Paulo AW...
CI CD best practices for building modern applications - MAD301 - São Paulo AW...CI CD best practices for building modern applications - MAD301 - São Paulo AW...
CI CD best practices for building modern applications - MAD301 - São Paulo AW...
 
Ria
RiaRia
Ria
 
T@rget trust asp.net avançado
T@rget trust   asp.net avançadoT@rget trust   asp.net avançado
T@rget trust asp.net avançado
 
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
MVP Virtual Conference (MVP V-Conf) 2015: Executando ASP.NET MVC 6 no Mac OS ...
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 

Owin e katana

  • 1. OWIN & Katana ciandt.com Tanato Cartaxo 17/08/2016
  • 2. ● Overview OWIN e Katana ● Porque utilizar Katana? ● Let’s Code! ○ Inicialização do Katana ○ Construindo Middlewares ● Ferramentas ○ TopShelf ciandt.com Sumário
  • 4. 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.
  • 5. For a modern Web ciandt.com Lightweight e Modular Inspirado em novas tecnologias como: - Stack para Ruby - Connect para NodeJS - WSGI para Python
  • 6. 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.
  • 10. É 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.).
  • 11. É 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.
  • 12. É 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.
  • 13. Katana self-service pipeline ciandt.com Host Server Middlewar e Application IIS Self-Host Node JS Custom Host System.Web HttpListener Authentication WebApi Logging Dependency Injection Your Code! And a lot more
  • 14. 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.
  • 16. 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
  • 17. using AppFunc = Func<IDictionary<string, object>, Task>; //done OWIN middleware contract OWIN environment dictionary Return Task ciandt.com owin.RequestBody owin.RequestHeaders owin.RequestMethod owin.ResponseBody owin.ResponseHeaders ...
  • 18. 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
  • 19. 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
  • 20. 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
  • 22. 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.