Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ASP.NET Core APIs
Performance Tips
Quem sou?
• Microsoft MVP desde 2013
• Desenvolvedor Web desde 2005
• Atuação em projetos nacionais e internacionais
• Atu...
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
• Micr...
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://git...
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 Framew...
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...
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
Aces...
• Recurso do C# 5+
• Permite a execução de requisições assíncronas
• Libera a Thread principal no IIS (Desafoga)
• Não dev...
Async/Await
• Pode ser realizado no Client/Server
• Client => Setar o header Cache-Control
• Server => Existe nativo no ASP.NET Core
•...
• Compõe o cabeçalho da requisição com os parâmetros do Cache
• Vary
• Só é setado quando a propriedade VaryByHeader for e...
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 b...
• Nativo no ASP.NET Core
• Utilizado para comprimir os dados
• Diminui o trafego de rede
• Por que isto é importante?
Comp...
Compression
Compression
Compression
Compression
• Utilizado para comprimir textos, imagens e até arquivos
• Também é possível utilizar um Custom Provider
GzipCompressionP...
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 disponibi...
• 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 p...
Micro Serviços
Dividir para conquistar
• Ao invés de uma API enorme, diversas APIs menores
• Escalonamento individual
• Problemas Individuais
• Fácil manutenção
...
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...
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
ASP.NET Core APIs: Performance Tips
Upcoming SlideShare
Loading in …5
×

ASP.NET Core APIs: Performance Tips

Palestra realizada no meetup Developer SP em Campinas no dia 26/08/2017

  • Be the first to comment

  • Be the first to like this

ASP.NET Core APIs: Performance Tips

  1. 1. ASP.NET Core APIs Performance Tips
  2. 2. 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
  3. 3. http://balta.io/ http://bit.ly/asp-net-cast http://bit.ly/software-em-contexto http://mvp.microsoft.com
  4. 4. Agenda • ASP.NET vs ASP.NET Core • Middlewares • Acesso à Dados • Async/Await • Cache • Compressão • Infraestrutura • Micro Serviços • API Gateway
  5. 5. ASP.NET vs ASP.NET Core Mudanças Significativas
  6. 6. • 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
  7. 7. Comparativo: ASP.NET, Node, ASP.NET Core
  8. 8. • Open Source • Roda sobre o Full Framework / Core Framework ASP.NET Core
  9. 9. Commits no GitHub do ASP.NET Core
  10. 10. • 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
  11. 11. Middlewares A grande mudança
  12. 12. • 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
  13. 13. Middlewares
  14. 14. Middlewares
  15. 15. Performance Dicas
  16. 16. • 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
  17. 17. • 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
  18. 18. Async/Await
  19. 19. • 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
  20. 20. • 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
  21. 21. VaryByHeader
  22. 22. NoStore e Location.None
  23. 23. Location e Duration
  24. 24. • Utilizado para padronizar o cache da API • Cria perfis que podem ser re-utilizados Cache Profile
  25. 25. Cache Profile
  26. 26. • 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
  27. 27. • Nativo no ASP.NET Core • Utilizado para comprimir os dados • Diminui o trafego de rede • Por que isto é importante? Compression
  28. 28. Compression
  29. 29. Compression
  30. 30. Compression
  31. 31. Compression
  32. 32. • Utilizado para comprimir textos, imagens e até arquivos • Também é possível utilizar um Custom Provider GzipCompressionProvider
  33. 33. GzipCompressionProvider
  34. 34. Infraestrutura A performance é um conjunto
  35. 35. • 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
  36. 36. • 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
  37. 37. Micro Serviços Dividir para conquistar
  38. 38. • 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
  39. 39. API Gateway Muitas APIs trazem grandes responsabilidades
  40. 40. • Muitos requests • Comunicação entre serviços • Autenticação entre APIs • Múltiplos Protocolos de Comunicação Muitas APIs também representam…
  41. 41. Performance É o conjunto de tudo que você viu aqui!
  42. 42. http://bit.ly/baltaio-curso-aspnetcore
  43. 43. Obrigado

×