Slides abordando a implementação de APIs multiplataforma (REST + gRPC) com o ASP.NET Core 3.1. Palestra realizada em evento promovido pela comunidade .NET SP em São Paulo no dia 05/03/2020.
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
2. • Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience
Contributor (MTAC)
• Desenvolvedor, Autor Técnico e Palestrante
• Treinamento Azure na Prática
• Um dos organizadores do Canal .NET e do
.NET São Paulo
Renato Groffe
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
3. Renato Groffe - Contatos
h t t p s : / / m e d i u m . c o m / @ re n a t o . g rof f e /
/renatogroffe /in/renatogroffe
/canaldotnet
/renatogroffe
/canaldotnet
/renatogroff
5. APIs REST - Contexto Atual
• Escalabilidade, disponibilidade e performance
• REST como principal estilo arquitetural
• Microserviços ganhando força
• Economia das APIs
• Emergência do padrão gRPC
6. ASP.NET Core – Visão Geral
• Atualmente na versão 3.1
• Aplicações Web mais leves e rápidas
• Multiplataforma (execução em Windows, Linux e
Mac)
• Suporte a Docker
7. Injeção de Dependências
• O ASP.NET Core conta desde as primeiras versões com um
mecanismo nativo de injeção de dependências
• Favorece Baixo Acoplamento
github.com/renatogroffe/ASPNETCore3.1_InjDependencias_API
8. ASP.NET Core 3.x – Suporte a JSON
• Namespace System.Text.Json e suas novas
classes mais performáticas: Utf8JsonReader,
Utf8JsonWriter, JsonDocument e JsonSerializer
• Projetos Web ao serem não contam mais com
uma referência para o package
Microsoft.AspNetCore.Mvc.NewtonsoftJson
• Possibilidade de customizar o uso do novo
Serializer
9. Retornando XML numa API REST
• Ajuste que pode ser necessário devido à
necessidade de integração com projetos legados
github.com/renatogroffe/ASPNETCore3.1_XML_APIs
10. .NET Core 3.x – Novo provider de acesso a dados
• Package Microsoft.Data.SqlClient
• Suporte a novos recursos do SQL
Server (Always Encrypted, Data
Classification)
11. Suporte a JSON no SQL Server
• Evitar a escrita de várias classes para retorno de
informações e operações de transformação de
dados
12. Entity Framework Core
• Compatibilidade com bancos relacionais como
SQL Server, PostgreSQL, MySQL…
13. Dapper: acesso a dados com maior performance
• Alternativa ao Entity Framework para acesso a
dados relacionais
14. API Conventions
• Novo recurso do ASP.NET Core 2.2 disponibilizado
com o objetivo de simplificar a documentação de
APIs REST com Swagger
15. Documentação/Testes com Swagger
• Geração de um site documentando APIs com
pouquíssimo código, além de contar com
funcionalidades para testes
16. HTTP REPL: testando APIs via linha de comando
• Utilitário de linha (Global Tool) de comando para
teste de APIs REST que tiveram o Swagger
habilitado
17. Azure App Configuration
• Gerenciamento centralizado de configurações de aplicações
• Alteração de configurações sem a necessidade de reiniciar uma
aplicação
github.com/renatogroffe/ASPNETCore3.1-AzureAppConfiguration
18. O atributo ApiController
• Simplifica a implementação de APIs REST,
eliminando a necessidade de algumas convenções
de código; presente desde o ASP.NET Core 2.1
21. Código Resiliente com Polly
• Biblioteca para a implementação de tratamentos
de falha de maneira descomplicada
22. IHttpClientFactory + Typed Client
• Alternativa para simplificar o consumo de APIs
REST em projetos ASP.NET Core e que utiliza a
classe HttpClient
23. Chaos Engineering: Simmy
• Integração com Polly
• Policies para simulação de caos
• Extremamente útil no teste de
sistemas distribuídos/Microservices
24. JWT (JSON Web Tokens)
• Uso de tokens criptografados
• Bearer Authentication
• Emprega HMAC ou RSA
• Tecnologia multiplataforma
• Tokens formados por 3 partes (Header, Payload e Signature)
github.com/renatogroffe/ASPNETCore3.1_JWT-Identity-RefreshTokens
27. Consumindo uma API com Refit
• Solução mais simplificada para o consumo de
APIs REST, tendo compatibilidade com o .NET
Standard
github.com/renatogroffe/DotNetCore3.1_Refit-JWT-RefreshTokens-Polly
28. .NET Core 3.x – Suporte a Docker
• Redução no tamanho das imagens em
relação a versões anteriores
• Imagens do SDK contém agora o PowerShell
Core (é possível invocar este utilitário
durante a geração da imagem de uma
aplicação)
29. ASP.NET Core 3.1 + gRPC
• Comunicação via HTTP/2 utilizando
um formato binário
• Uso do formato binário Protobuf para
serialização
• Maior performance