SlideShare uma empresa Scribd logo
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs
Performance Tips
Quem sou?
• Microsoft MVP desde 2013
• Desenvolvedor Web desde 2005
• Atuação em projetos nacionais e internacionais
• Atuação em projetos pequenos, médios e grandes
• Consultor independente desde 2012
• Fundador do balta.io
http://andrebaltieri.net/
contato@andrebaltieri.net
http://balta.io/
http://bit.ly/asp-net-cast
http://bit.ly/software-em-contexto
http://mvp.microsoft.com
Agenda
• ASP.NET vs ASP.NET Core
• Middlewares
• Acesso à Dados
• Async/Await
• Cache
• Compressão
• Infraestrutura
• Micro Serviços
• API Gateway
ASP.NET vs ASP.NET Core
Mudanças Significativas
• Exceeds 1.15 Million request/s
• 2300% More Requests Served Per Second
• More than 12.6 Gbps of Throughput
• https://github.com/aspnet/benchmarks
• https://aka.ms/aspnet/benchmarks
ASP.NET Core
Comparativo: ASP.NET, Node, ASP.NET Core
• Open Source
• Roda sobre o Full Framework / Core Framework
ASP.NET Core
Commits no GitHub do ASP.NET Core
• Se você já utilizava OWIN, é tranquilo
• Se não utilizava, também é tranquilo
• Roda sobre o mesmo ambiente (Full Framework)
• Já está na versão 2.0
ASP.NET => ASP.NET Core
Middlewares
A grande mudança
• Não vem com nada!
• Você pluga o que quer
• Pipeline bem mais limpo
• Exemplos de Middlewares
• Autenticação/Autorização
• Log
• ASP.NET MVC
Middlewares
Middlewares
Middlewares
Performance
Dicas
• Quantos requests ao banco uma requisição a sua API faz?
• Não culpe o EF por tudo
• Você pode mesclar EF com Dapper
Acesso à Dados
• Recurso do C# 5+
• Permite a execução de requisições assíncronas
• Libera a Thread principal no IIS (Desafoga)
• Não deve ser utilizado apenas na API
Async/Await
Async/Await
• Pode ser realizado no Client/Server
• Client => Setar o header Cache-Control
• Server => Existe nativo no ASP.NET Core
• Evita requisições a API (Client)
• Evita requisições ao banco e processamento na API (Server)
Cache
• Compõe o cabeçalho da requisição com os parâmetros do Cache
• Vary
• Só é setado quando a propriedade VaryByHeader for enviada
• NoStore e Location.None
• Tipicamente utilizado em páginas de erros
• Desabilita o Cache
• Location e Duration
• Determina localização e duração do Cache
ResponseCache
VaryByHeader
NoStore e Location.None
Location e Duration
• Utilizado para padronizar o cache da API
• Cria perfis que podem ser re-utilizados
Cache Profile
Cache Profile
• Sub-utilizados
• Somente no lado do cliente
• Podem ser acessados Offline
• São bons amigos quando utilizados
• Vide o balta.io
Local e Session Storage
• Nativo no ASP.NET Core
• Utilizado para comprimir os dados
• Diminui o trafego de rede
• Por que isto é importante?
Compression
Compression
Compression
Compression
Compression
• Utilizado para comprimir textos, imagens e até arquivos
• Também é possível utilizar um Custom Provider
GzipCompressionProvider
GzipCompressionProvider
Infraestrutura
A performance é um conjunto
• Não adianta ter uma API rápida num servidor lento
• Não adianta ter uma API rápida numa super máquina sem alta disponibilidade
• Não adianta ter uma API rápida sem escalonamento automático
• Não adianta ter uma API rápida publicada junto a um frontend massivo
• Não adianta ter uma API rápida publicada numa máquina que ser imagens
• Não adianta ter uma API rápida e um banco lento
Infraestrutura
• Não adianta ter API+Infra e não ter um deploy automatizado
• Não adianta ter API+Infra e não saber qual versão está em produção
• Não adianta ter API+Infra e não ter controle de versão
• Não adianta ter API+Infra e não ter controle de mudanças
• Não adianta ter API+Infra e não ter controle de novas funcionalidades
DevOps
Micro Serviços
Dividir para conquistar
• Ao invés de uma API enorme, diversas APIs menores
• Escalonamento individual
• Problemas Individuais
• Fácil manutenção
• Menor batch size
• A Netflix tem uma API com 1 método, atendendo apenas a listagem do seu catálogo de filmes
Dividir para conquistar
API Gateway
Muitas APIs trazem grandes responsabilidades
• Muitos requests
• Comunicação entre serviços
• Autenticação entre APIs
• Múltiplos Protocolos de Comunicação
Muitas APIs também representam…
Performance
É o conjunto de tudo que você viu aqui!
http://bit.ly/baltaio-curso-aspnetcore
Obrigado
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips
ASP.NET Core APIs: Performance Tips

Mais conteúdo relacionado

PPTX
Progressive Web Apps: Um novo mundo
Andre Baltieri
 
PPTX
TDC2017 | São Paulo - Trilha Modern Web How we figured out we had a SRE team ...
tdc-globalcode
 
PPTX
Desenvolvendo APIs com WebAPI
Andre Baltieri
 
PPTX
BaaS seguros com Firebase
Andre Baltieri
 
PDF
Ricardo - PWA
WordPress Floripa
 
PPTX
TDC SP 2015 - Criando aplicações ASP.NET no Mac
Andre Baltieri
 
PDF
Software gratuito
Campus Party Brasil
 
PPTX
Asp.net web api
Waldyr Felix
 
Progressive Web Apps: Um novo mundo
Andre Baltieri
 
TDC2017 | São Paulo - Trilha Modern Web How we figured out we had a SRE team ...
tdc-globalcode
 
Desenvolvendo APIs com WebAPI
Andre Baltieri
 
BaaS seguros com Firebase
Andre Baltieri
 
Ricardo - PWA
WordPress Floripa
 
TDC SP 2015 - Criando aplicações ASP.NET no Mac
Andre Baltieri
 
Software gratuito
Campus Party Brasil
 
Asp.net web api
Waldyr Felix
 

Mais procurados (20)

PDF
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
iMasters
 
PDF
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
iMasters
 
PPTX
Tornando o Xamarin.Forms ainda melhor com Prism
akamud
 
PPTX
Animações com Xamarin.Forms
akamud
 
PDF
Aula 4. bibliotecas js
andreluizlc
 
PPT
Desenvolvimento Ágil com Ruby on Rails
Rogerio Chaves
 
PPTX
ITerior - .NET Core, usando .NET no Linux!
Vinicius Mussak
 
PPTX
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
Andre Baltieri
 
PPTX
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Igor Abade
 
PDF
Ruby on Rails
Elomar Souza
 
PPTX
ASP.NET MVC, para sua vida melhorar
Waldyr Felix
 
PDF
Breve introdução ao Rails
Daniel Andrade
 
PPTX
Trabalhando com WebHooks no ASP.NET
Andre Baltieri
 
PPTX
Novidades do ASP.NET MVC 4
Waldyr Felix
 
PDF
O que é angular?
Caio Rolla
 
PDF
Reuso De Código Com Rails
Rodrigo Urubatan
 
PDF
Do MVP ao PWA, melhorando o engajamento com cliente na CVC
Janderson Silva
 
PPTX
Workshop Vanilla JS e ES6
Wendell Adriel
 
PDF
Do marketplace ao WordPress - WordCamp BH 2015
Fellyph Cintra
 
PPTX
Play Framework
Raphael Ramos Monteiro
 
DevCommerce Conference 2016: React para aplicações web e mobile como platafor...
iMasters
 
DevCommerce Conference 2016: SecDevOps – Testes contínuos de segurança em apl...
iMasters
 
Tornando o Xamarin.Forms ainda melhor com Prism
akamud
 
Animações com Xamarin.Forms
akamud
 
Aula 4. bibliotecas js
andreluizlc
 
Desenvolvimento Ágil com Ruby on Rails
Rogerio Chaves
 
ITerior - .NET Core, usando .NET no Linux!
Vinicius Mussak
 
TDC SP 2015 - Criando Web Apps Real Time com AngularJs e Firebase
Andre Baltieri
 
Acelere - e melhore! - o feedback com testes automatizados rápidos - igor abade
Igor Abade
 
Ruby on Rails
Elomar Souza
 
ASP.NET MVC, para sua vida melhorar
Waldyr Felix
 
Breve introdução ao Rails
Daniel Andrade
 
Trabalhando com WebHooks no ASP.NET
Andre Baltieri
 
Novidades do ASP.NET MVC 4
Waldyr Felix
 
O que é angular?
Caio Rolla
 
Reuso De Código Com Rails
Rodrigo Urubatan
 
Do MVP ao PWA, melhorando o engajamento com cliente na CVC
Janderson Silva
 
Workshop Vanilla JS e ES6
Wendell Adriel
 
Do marketplace ao WordPress - WordCamp BH 2015
Fellyph Cintra
 
Play Framework
Raphael Ramos Monteiro
 
Anúncio

Semelhante a ASP.NET Core APIs: Performance Tips (20)

PPTX
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Renato Groff
 
PPTX
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Renato Groff
 
PPTX
Dicas para uma maior performance em APIs REST - Renato Groffe
iMasters
 
PPTX
Sua Startup precisa de uma WebAPI.
AlexSandro Cruz
 
PPTX
Performance tdc sp 2020 final
Rodolfo Fadino Junior
 
PDF
Intro aspnet webapi
Wedson Quintanilha da Silva
 
PPTX
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019
Renato Groff
 
PPTX
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Rodrigo Kono
 
PPTX
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...
Renato Groff
 
PPTX
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Renato Groff
 
PPTX
Introdução ASP.NET Core
lacerda2
 
PPTX
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
PPTX
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Renato Groff
 
PPTX
Performance Web com ASP.NET MVC
Rodolfo Fadino Junior
 
PDF
APIs gerenciadas de ponta a ponta
Fábio Rosato
 
PDF
APIs gerenciadas de ponta a ponta
José Vahl
 
PPTX
DevXperience WPO com .NET CORE
Rodolfo Fadino Junior
 
PPTX
ASP.NET Web API
Waldyr Felix
 
PPTX
Introdução ao ASP .NET Web API
Vinicius Mussak
 
PPTX
Minha Vida Fiap - Desenvolvimento
Rodolfo Fadino Junior
 
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Renato Groff
 
Dicas para uma maior performance em APIs REST - Tech Meetup - Itaú Unibanco -...
Renato Groff
 
Dicas para uma maior performance em APIs REST - Renato Groffe
iMasters
 
Sua Startup precisa de uma WebAPI.
AlexSandro Cruz
 
Performance tdc sp 2020 final
Rodolfo Fadino Junior
 
Intro aspnet webapi
Wedson Quintanilha da Silva
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019
Renato Groff
 
Dicas para migrar sua aplicação ASP.NET para ASP.NET Core 2.x
Rodrigo Kono
 
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...
Renato Groff
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Renato Groff
 
Introdução ASP.NET Core
lacerda2
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Renato Groff
 
Performance Web com ASP.NET MVC
Rodolfo Fadino Junior
 
APIs gerenciadas de ponta a ponta
Fábio Rosato
 
APIs gerenciadas de ponta a ponta
José Vahl
 
DevXperience WPO com .NET CORE
Rodolfo Fadino Junior
 
ASP.NET Web API
Waldyr Felix
 
Introdução ao ASP .NET Web API
Vinicius Mussak
 
Minha Vida Fiap - Desenvolvimento
Rodolfo Fadino Junior
 
Anúncio

Mais de Andre Baltieri (20)

PPTX
Clean Code - Promob DevDay 2022
Andre Baltieri
 
PPTX
31/08/2019 - Flutter Talks
Andre Baltieri
 
PPTX
Refatorando para Testes de Unidade
Andre Baltieri
 
PPTX
PWA: State of Art
Andre Baltieri
 
PPTX
PWAs no seu Desktop
Andre Baltieri
 
PPTX
Criando APIs com Node e TypeScript
Andre Baltieri
 
PPTX
Otimizando seu cenário de APIs
Andre Baltieri
 
PPTX
Turbine sua API no Microsoft Azure
Andre Baltieri
 
PPTX
Progressive Web Apps
Andre Baltieri
 
PPTX
Migrando para o Angular 2
Andre Baltieri
 
PPTX
Progressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NET
Andre Baltieri
 
PPTX
BaaS com Firebase 3
Andre Baltieri
 
PPTX
Otimizando eu JavaScript com TypeScript
Andre Baltieri
 
PPTX
Angular 2, TypeScript e Além
Andre Baltieri
 
PPTX
Introdução ao Native Script
Andre Baltieri
 
PPTX
Criando aplicações Híbridas com AngularJs, TypeScript e Material Design
Andre Baltieri
 
PPTX
Microsoft e o mundo do Desenvolvimento
Andre Baltieri
 
PPTX
5509 segurança em ap is
Andre Baltieri
 
PPTX
5507 os principais design patterns
Andre Baltieri
 
PPTX
5505 otimizando frontends
Andre Baltieri
 
Clean Code - Promob DevDay 2022
Andre Baltieri
 
31/08/2019 - Flutter Talks
Andre Baltieri
 
Refatorando para Testes de Unidade
Andre Baltieri
 
PWA: State of Art
Andre Baltieri
 
PWAs no seu Desktop
Andre Baltieri
 
Criando APIs com Node e TypeScript
Andre Baltieri
 
Otimizando seu cenário de APIs
Andre Baltieri
 
Turbine sua API no Microsoft Azure
Andre Baltieri
 
Progressive Web Apps
Andre Baltieri
 
Migrando para o Angular 2
Andre Baltieri
 
Progressive Web Apps e o futuro do desenvolvimento Web na Plataforma .NET
Andre Baltieri
 
BaaS com Firebase 3
Andre Baltieri
 
Otimizando eu JavaScript com TypeScript
Andre Baltieri
 
Angular 2, TypeScript e Além
Andre Baltieri
 
Introdução ao Native Script
Andre Baltieri
 
Criando aplicações Híbridas com AngularJs, TypeScript e Material Design
Andre Baltieri
 
Microsoft e o mundo do Desenvolvimento
Andre Baltieri
 
5509 segurança em ap is
Andre Baltieri
 
5507 os principais design patterns
Andre Baltieri
 
5505 otimizando frontends
Andre Baltieri
 

ASP.NET Core APIs: Performance Tips