• 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 /
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
Agenda
• ASP.NET Core: uma visão geral
• Dicas e Exemplos práticos
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
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
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
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
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
.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)
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
Entity Framework Core
• Compatibilidade com bancos relacionais como
SQL Server, PostgreSQL, MySQL…
Dapper: acesso a dados com maior performance
• Alternativa ao Entity Framework para acesso a
dados relacionais
API Conventions
• Novo recurso do ASP.NET Core 2.2 disponibilizado
com o objetivo de simplificar a documentação de
APIs REST com Swagger
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
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
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
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
Dapper.Contrib
• CRUDS implementados com Dapper de forma
mais simplificada
Fluent Validation
• Maior simplicidade e flexibilidade na
implementação de regras de validação
Código Resiliente com Polly
• Biblioteca para a implementação de tratamentos
de falha de maneira descomplicada
IHttpClientFactory + Typed Client
• Alternativa para simplificar o consumo de APIs
REST em projetos ASP.NET Core e que utiliza a
classe HttpClient
Chaos Engineering: Simmy
• Integração com Polly
• Policies para simulação de caos
• Extremamente útil no teste de
sistemas distribuídos/Microservices
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
JWT (JSON Web Tokens) - Utilização
Um exemplo de token
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
.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)
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
medium.com/@renato.groffe/

ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março

  • 2.
    • Microsoft MostValuable 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
  • 4.
    Agenda • ASP.NET Core:uma visão geral • Dicas e Exemplos práticos
  • 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 numaAPI 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 JSONno 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 adados com maior performance • Alternativa ao Entity Framework para acesso a dados relacionais
  • 14.
    API Conventions • Novorecurso 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: testandoAPIs 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
  • 19.
    Dapper.Contrib • CRUDS implementadoscom Dapper de forma mais simplificada
  • 20.
    Fluent Validation • Maiorsimplicidade e flexibilidade na implementação de regras de validação
  • 21.
    Código Resiliente comPolly • Biblioteca para a implementação de tratamentos de falha de maneira descomplicada
  • 22.
    IHttpClientFactory + TypedClient • 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 WebTokens) • 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
  • 25.
    JWT (JSON WebTokens) - Utilização
  • 26.
  • 27.
    Consumindo uma APIcom 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
  • 31.