Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019

Renato Groff
Renato GroffAon Corporation
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
• Microsoft Most Valuable Professional (MVP)
• Multi-Plataform Technical Audience
Contributor (MTAC)
• Mais de 15 anos de experiência na área de
Tecnologia
• Autor Técnico e Palestrante
• 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 2.2
• .NET Core 3.0 em Preview
• 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/ASPNETCore2.2_InjDependencias_APIs
Retornando XML numa API REST
• Ajuste que pode ser necessário devido à
necessidade de integração com projetos legados
github.com/renatogroffe/ASPNETCore2.2_XML_APIs
Middlewares
• Elementos centrais na arquitetura do ASP.NET Core
• Middlewares customizados também podem ser
implementados
github.com/renatogroffe/ASPNETCore2.2_API-CustomMiddleware
Removendo valores nulos no retorno de APIs
• Diminuição do tamanho das respostas geradas
por APIs
github.com/renatogroffe/ASPNETCore2.2_RemovendoNullAPIs
Comprimindo a resposta no retorno de APIs
• Maior redução do tamanho das respostas geradas
por APIs (GZip, Brotli)
github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-GZip-MiddlewareFilter
github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-Brotli-MiddlewareFilter
Executando middlewares como filtros
• Possibilidade de aplicar um middleware a uma
Action ou Controller específicos
github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-GZip-MiddlewareFilter
github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-Brotli-MiddlewareFilter
Health Checks
• Novo recurso do ASP.NET Core 2.2 que permite
monitorar a saúde de uma aplicação Web
github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks
Entity Framework Core
• Compatibilidade com bancos relacionais como
SQL Server, PostgreSQL, MySQL…
github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks_Predicates
Dapper: acesso a dados com maior performance
• Alternativa ao Entity Framework para acesso a
dados relacionais
github.com/renatogroffe/ASPNETCore2.2_APIIndicadores
github.com/renatogroffe/Dapper_ASP.NETCore2.2_One-to-One
github.com/renatogroffe/Dapper_ASP.NETCore2.2_One-to-Many
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
github.com/renatogroffe/ASPNETCore2.2_SQLServer-JSON
Redis: cache em aplicações Web
github.com/renatogroffe/ASPNETCore2.2_Sql_CacheRedis_API
Application Insights – Monitorando BDs
• Serviço que integra o Microsoft Azure, estando voltado ao
monitoramento de aplicações Web (sites e serviços)
github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks_Predicates
cURL
• Utilitário Linux/Unix que pode ser útil no envio de
múltiplas requisições testando uma API REST
Envio de 1000 requisições – Exemplo:
curl https://teste?[1-1000] -w "n"
ActionResult<T>
• Simplifica a codificação de instruções de retorno
em APIs REST
github.com/renatogroffe/MongoDB-DotNetCore2.2
MongoDB
• Solução NoSQL orientada a documentos e
multiplataforma
github.com/renatogroffe/MongoDB-DotNetCore2.2
API Conventions
• Novo recurso do ASP.NET Core 2.2 disponibilizado
com o objetivo de simplificar a documentação de
APIs REST com Swagger
github.com/renatogroffe/ASPNETCore2.2_APIIndicadores
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
github.com/renatogroffe/ASPNETCore2.2_APIIndicadores
HTTP REPL: testando APIs com o .NET Core 2.2
• Utilitário de linha (Global Tool) de comando para
teste de APIs REST que tiveram o Swagger
habilitado
IHttpClientFactory + Named Client
• Alternativa para simplificar o consumo de APIs
REST em projetos ASP.NET Core e que utiliza a
classe HttpClient
github.com/renatogroffe/ASP.NET-Core-2.2_NASA-API
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/ASPNETCore2.2_JWT-Identity
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/DotNetCore2.2_Refit-JWT
Testando APIs REST com PowerShell
• Solução multiplataforma (Windows, Linux,
macOS)
• Linguagem simples e intuitiva, com suporte à
geração de requisições HTTP
• Desenvolvimento via interface gráfica com
debugging e auto complete: Visual Studio Code
(com extensão própria)
• Excelente alternativa para teste de APIs REST
Azure Web App for Containers
• Escalabilidade (vertical e horizontal)
• Suporte a HTTPS
• Uso de images Linux ou Windows
• Ótimo para projetos de médio e pequeno
porte
• Utilizada a imagem
renatogroffe/apicontagem-sdk-2-2
Azure Kubernetes Service
• Orquestração de containers na nuvem
• Serviço gerenciado para utilização de um
cluster Kubernetes
• Recomendável para projetos de grande porte
github.com/renatogroffe/ASPNETCore2.2_Kubernetes
.NET Core 3.0 – Novo provider de acesso a dados
• Package Microsoft.Data.SqlClient
• Suporte a novos recursos do SQL
Server (Always Encrypted, Data
Classification)
• Ainda não suportado por Dapper,
Entity Framework Core ou Entity
Framework 6
.NET Core 3 – Suporte a JSON
• Namespace System.Text.Json e suas
novas classes mais performáticas:
Utf8JsonReader, Utf8JsonWriter,
JsonDocument e JsonSerializer
• Desde o Preview 5 temos suporte à
serialização de classes POCO (ainda
em desenvolvimento)
.NET Core 3 – Suporte a JSON
• Projetos Web ao serem não contam mais
com uma referência para o package
Microsoft.AspNetCore.Mvc.NewtonsoftJson
( Preview 6)
• Possibilidade de customizar o uso do novo
Serializer
ASP.NET Core 3.0 + gRPC
• Comunicação via HTTP/2 utilizando
um formato binário
• Uso do formato binário Protobuf para
serialização
• Maior performance
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
medium.com/@renato.groffe/
1 de 38

Recomendados

SQL Server no Desenvolvimento Web - Database Dev Night #1 - Junho-2019 por
SQL Server no Desenvolvimento Web - Database Dev Night #1 - Junho-2019SQL Server no Desenvolvimento Web - Database Dev Night #1 - Junho-2019
SQL Server no Desenvolvimento Web - Database Dev Night #1 - Junho-2019Renato Groff
2.6K visualizações17 slides
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019 por
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Renato Groff
1.7K visualizações40 slides
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv... por
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
1.5K visualizações23 slides
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019 por
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Renato Groff
3.6K visualizações24 slides
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party... por
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Renato Groff
3.9K visualizações28 slides
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock... por
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...Renato Groff
6.8K visualizações15 slides

Mais conteúdo relacionado

Mais procurados

Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv... por
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
5K visualizações25 slides
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São Paulo por
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São PauloSQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São Paulo
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São PauloRenato Groff
73 visualizações16 slides
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715 por
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715Renato Groff
234 visualizações17 slides
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ... por
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Renato Groff
5.4K visualizações25 slides
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019 por
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019Renato Groff
4.3K visualizações18 slides
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour... por
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Renato Groff
4K visualizações22 slides

Mais procurados(20)

Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv... por Renato Groff
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Renato Groff5K visualizações
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São Paulo por Renato Groff
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São PauloSQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São Paulo
SQL Server 2017 para Desenvolvedores de Software - TDC 2018 - São Paulo
Renato Groff73 visualizações
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715 por Renato Groff
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715
SQL Server 2017 para Desenvolvedores de Software - SQL Saturday 715
Renato Groff234 visualizações
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ... por Renato Groff
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Renato Groff5.4K visualizações
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019 por Renato Groff
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019
.NET Core 3.0 e ASP.NET Core 3.0: principais novidades - FCamara - Agosto-2019
Renato Groff4.3K visualizações
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour... por Renato Groff
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Desenvolvimento Web multiplataforma com ASP.NET Core 2.2 e Docker - Open Sour...
Renato Groff4K visualizações
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -... por Renato Groffe
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Renato Groffe13.1K visualizações
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem... por Renato Groff
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem....NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
Renato Groff1.2K visualizações
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag... por Renato Groff
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Renato Groff1.3K visualizações
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo por Renato Groff
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São PauloExtração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
Renato Groff7K visualizações
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE... por Renato Groff
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE....NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
.NET Core 3.x + ASP.NET Core 3.x + Docker + Kubernetes na prática - Canal .NE...
Renato Groff3.3K visualizações
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ... por Renato Groff
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
Renato Groff940 visualizações
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O... por Renato Groff
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
Renato Groff94 visualizações
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018 por Renato Groff
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
ASP.NET Core + Kubernetes + Azure - Community Bootcamp - Abril/2018
Renato Groff4.6K visualizações
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C... por Renato Groff
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
10 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - ASP.NET C...
Renato Groff73 visualizações
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az... por Renato Groff
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Construindo aplicações Web escaláveis com Docker, Kubernetes e o Microsoft Az...
Renato Groff7.8K visualizações
Docker + Bancos de Dados - DBA Brasil 3.0 - Abril-2018 por Renato Groff
Docker + Bancos de Dados - DBA Brasil 3.0 - Abril-2018Docker + Bancos de Dados - DBA Brasil 3.0 - Abril-2018
Docker + Bancos de Dados - DBA Brasil 3.0 - Abril-2018
Renato Groff1.8K visualizações
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere... por Renato Groff
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Aplicações Web Escaláveis no Azure: App Service, Docker e Kubernetes - Fevere...
Renato Groff2.5K visualizações
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020 por Renato Groff
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Fevereiro-2020
Renato Groff669 visualizações
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março por Renato Groff
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - MarçoASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
ASP.NET Core 3.1: Desenvolvimento de APIs Multiplataforma - Março
Renato Groff1.3K visualizações

Similar a Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019

Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui... por
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...Renato Groff
6.1K visualizações17 slides
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ... por
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...Renato Groff
1.4K visualizações17 slides
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019 por
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019Renato Groff
1.9K visualizações24 slides
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem... por
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...Renato Groff
187 visualizações18 slides
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019 por
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Renato Groff
106 visualizações28 slides
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest... por
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest....NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest...
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest...Renato Groff
899 visualizações29 slides

Similar a Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019(20)

Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui... por Renato Groff
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Arqui...
Renato Groff6.1K visualizações
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ... por Renato Groff
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - .NET ...
Renato Groff1.4K visualizações
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019 por Renato Groff
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Outubro-2019
Renato Groff1.9K visualizações
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem... por Renato Groff
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...
Dicas para simplificar o desenvolvimento de APIs REST em ASP.NET Core - Dezem...
Renato Groff187 visualizações
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019 por Renato Groff
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Cloud Solutions com Microsoft Azure - Azure Talks - Novembro-2019
Renato Groff106 visualizações
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest... por Renato Groff
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest....NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest...
.NET Core 3.0 e ASP.NET Core 3.0: novidades e dicas úteis - Qual o X da Quest...
Renato Groff899 visualizações
7 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - .NET SP - ... por Renato Groff
7 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - .NET SP - ...7 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - .NET SP - ...
7 dicas úteis para simplificar o desenvolvimento em ASP.NET Core - .NET SP - ...
Renato Groff37 visualizações
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas... por Renato Groff
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
Renato Groff84 visualizações
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ... por Renato Groff
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
Renato Groff5.7K visualizações
Monitorando aplicações ASP.NET Core 2.2 com Health Checks, Application Insigh... por Renato Groff
Monitorando aplicações ASP.NET Core 2.2 com Health Checks, Application Insigh...Monitorando aplicações ASP.NET Core 2.2 com Health Checks, Application Insigh...
Monitorando aplicações ASP.NET Core 2.2 com Health Checks, Application Insigh...
Renato Groff3.4K visualizações
Sobrevoando os serviços do Azure | TDC Florianópolis Online 2020 por Renato Groff
Sobrevoando os serviços do Azure | TDC Florianópolis Online 2020Sobrevoando os serviços do Azure | TDC Florianópolis Online 2020
Sobrevoando os serviços do Azure | TDC Florianópolis Online 2020
Renato Groff2K visualizações
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018 por Renato Groff
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018
.NET Core e ASP.NET Core: Presente e Futuro - .NET SP - Novembro/2018
Renato Groff58 visualizações
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ... por Renato Groff
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Desenvolvendo APIs seguras com ASP.NET Core, JWT, Docker e Azure Web App for ...
Renato Groff1.6K visualizações
.NET Core e ASP.NET Core: Dicas e Truques por Renato Groff
.NET Core e ASP.NET Core: Dicas e Truques.NET Core e ASP.NET Core: Dicas e Truques
.NET Core e ASP.NET Core: Dicas e Truques
Renato Groff1.2K visualizações
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack... por Renato Groff
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Renato Groff956 visualizações
ASP.NET Core + Health Checks: monitorando a saúde de aplicações e suas depend... por Renato Groff
ASP.NET Core + Health Checks: monitorando a saúde de aplicações e suas depend...ASP.NET Core + Health Checks: monitorando a saúde de aplicações e suas depend...
ASP.NET Core + Health Checks: monitorando a saúde de aplicações e suas depend...
Renato Groff1.2K visualizações
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo por Renato Groff
Novidades do ASP.NET Core 2.1 - TDC 2018 - São PauloNovidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Novidades do ASP.NET Core 2.1 - TDC 2018 - São Paulo
Renato Groff4.1K visualizações
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1 por tdc-globalcode
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
TDC2018SP | Trilha .Net - Novidades do ASP.NET Core 2.1
tdc-globalcode105 visualizações
Middlewares + ASP.NET Core: incrementando e acrescentando comportamentos em a... por Renato Groff
Middlewares + ASP.NET Core: incrementando e acrescentando comportamentos em a...Middlewares + ASP.NET Core: incrementando e acrescentando comportamentos em a...
Middlewares + ASP.NET Core: incrementando e acrescentando comportamentos em a...
Renato Groff725 visualizações

Mais de Renato Groff

Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ... por
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Renato Groff
312 visualizações40 slides
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020 por
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Renato Groff
98 visualizações19 slides
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev... por
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Renato Groff
250 visualizações18 slides
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat... por
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Renato Groff
141 visualizações19 slides
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat... por
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...Renato Groff
117 visualizações14 slides
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No... por
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...Renato Groff
160 visualizações15 slides

Mais de Renato Groff(20)

Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ... por Renato Groff
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Microsoft Azure role-based certifications valem a pena? | Interop Day Edição ...
Renato Groff312 visualizações
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020 por Renato Groff
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Kubernetes: dicas e truques para o dia a dia | Azure Experts - Novembro-2020
Renato Groff98 visualizações
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev... por Renato Groff
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Como o Microsoft Azure pode melhorar o desenvolvimento de seu Back-End? | Dev...
Renato Groff250 visualizações
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat... por Renato Groff
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Como avançar na Power Platform com Azure Functions e Logic Apps | MVPConf Lat...
Renato Groff141 visualizações
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat... por Renato Groff
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
GitHub Actions: descomplicando o build/deployment automatizados | MVPConf Lat...
Renato Groff117 visualizações
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No... por Renato Groff
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
A evolução da plataforma .NET: passado, presente e futuro | Baixada NERD - No...
Renato Groff160 visualizações
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf... por Renato Groff
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Polly: aplicações .NET resilientes e um melhor tratamento de falhas | MVPConf...
Renato Groff88 visualizações
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV... por Renato Groff
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Containers no Azure: Docker, Kubernetes e suas diferentes possibilidades | MV...
Renato Groff85 visualizações
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020 por Renato Groff
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Docker: dicas e truques para o dia a dia | MVPConf Latam 2020
Renato Groff122 visualizações
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020 por Renato Groff
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Simplificando a montagem de ambientes de Dev+Testes com Docker | DEVDAY 2020
Renato Groff209 visualizações
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |... por Renato Groff
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |....NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
.NET Core + Serverless: Desenvolvimento Multiplataforma com Azure Functions |...
Renato Groff169 visualizações
Aplicações Distribuídas com .NET | TDC Recife Online 2020 por Renato Groff
Aplicações Distribuídas com .NET | TDC Recife Online 2020Aplicações Distribuídas com .NET | TDC Recife Online 2020
Aplicações Distribuídas com .NET | TDC Recife Online 2020
Renato Groff130 visualizações
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020 por Renato Groff
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Renato Groff224 visualizações
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ... por Renato Groff
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Serverless + Integrações com BDs: Azure Functions e Logic Apps - SQLSaturday ...
Renato Groff184 visualizações
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -... por Renato Groff
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Boas práticas de segurança no acesso a dados em Web Apps - SQLSaturday #972 -...
Renato Groff485 visualizações
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie por Renato Groff
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
.NET: passado, presente e futuro | Semana FCI 2020 - Mackenzie
Renato Groff257 visualizações
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ... por Renato Groff
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Docker: visão geral e primeiros passos | Fatec Praia Grande - Semana Tecnológ...
Renato Groff576 visualizações
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática por Renato Groff
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaKubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Renato Groff569 visualizações
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020 por Renato Groff
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado | Setembro-2020
Renato Groff435 visualizações
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020 por Renato Groff
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Sobrevoando os serviços do Azure | TDC São Paulo Online 2020
Renato Groff241 visualizações

Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019

  • 2. • Microsoft Most Valuable Professional (MVP) • Multi-Plataform Technical Audience Contributor (MTAC) • Mais de 15 anos de experiência na área de Tecnologia • Autor Técnico e Palestrante • 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 2.2 • .NET Core 3.0 em Preview • 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/ASPNETCore2.2_InjDependencias_APIs
  • 8. Retornando XML numa API REST • Ajuste que pode ser necessário devido à necessidade de integração com projetos legados github.com/renatogroffe/ASPNETCore2.2_XML_APIs
  • 9. Middlewares • Elementos centrais na arquitetura do ASP.NET Core • Middlewares customizados também podem ser implementados github.com/renatogroffe/ASPNETCore2.2_API-CustomMiddleware
  • 10. Removendo valores nulos no retorno de APIs • Diminuição do tamanho das respostas geradas por APIs github.com/renatogroffe/ASPNETCore2.2_RemovendoNullAPIs
  • 11. Comprimindo a resposta no retorno de APIs • Maior redução do tamanho das respostas geradas por APIs (GZip, Brotli) github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-GZip-MiddlewareFilter github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-Brotli-MiddlewareFilter
  • 12. Executando middlewares como filtros • Possibilidade de aplicar um middleware a uma Action ou Controller específicos github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-GZip-MiddlewareFilter github.com/renatogroffe/ASPNETCore2.2_RemocaoNulls-Brotli-MiddlewareFilter
  • 13. Health Checks • Novo recurso do ASP.NET Core 2.2 que permite monitorar a saúde de uma aplicação Web github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks
  • 14. Entity Framework Core • Compatibilidade com bancos relacionais como SQL Server, PostgreSQL, MySQL… github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks_Predicates
  • 15. Dapper: acesso a dados com maior performance • Alternativa ao Entity Framework para acesso a dados relacionais github.com/renatogroffe/ASPNETCore2.2_APIIndicadores github.com/renatogroffe/Dapper_ASP.NETCore2.2_One-to-One github.com/renatogroffe/Dapper_ASP.NETCore2.2_One-to-Many
  • 16. 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 github.com/renatogroffe/ASPNETCore2.2_SQLServer-JSON
  • 17. Redis: cache em aplicações Web github.com/renatogroffe/ASPNETCore2.2_Sql_CacheRedis_API
  • 18. Application Insights – Monitorando BDs • Serviço que integra o Microsoft Azure, estando voltado ao monitoramento de aplicações Web (sites e serviços) github.com/renatogroffe/ASP.NET-Core-2.2_AppInsights_HealthChecks_Predicates
  • 19. cURL • Utilitário Linux/Unix que pode ser útil no envio de múltiplas requisições testando uma API REST Envio de 1000 requisições – Exemplo: curl https://teste?[1-1000] -w "n"
  • 20. ActionResult<T> • Simplifica a codificação de instruções de retorno em APIs REST github.com/renatogroffe/MongoDB-DotNetCore2.2
  • 21. MongoDB • Solução NoSQL orientada a documentos e multiplataforma github.com/renatogroffe/MongoDB-DotNetCore2.2
  • 22. API Conventions • Novo recurso do ASP.NET Core 2.2 disponibilizado com o objetivo de simplificar a documentação de APIs REST com Swagger github.com/renatogroffe/ASPNETCore2.2_APIIndicadores
  • 23. 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 github.com/renatogroffe/ASPNETCore2.2_APIIndicadores
  • 24. HTTP REPL: testando APIs com o .NET Core 2.2 • Utilitário de linha (Global Tool) de comando para teste de APIs REST que tiveram o Swagger habilitado
  • 25. IHttpClientFactory + Named Client • Alternativa para simplificar o consumo de APIs REST em projetos ASP.NET Core e que utiliza a classe HttpClient github.com/renatogroffe/ASP.NET-Core-2.2_NASA-API
  • 26. 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/ASPNETCore2.2_JWT-Identity
  • 27. JWT (JSON Web Tokens) - Utilização
  • 28. Um exemplo de token
  • 29. Consumindo uma API com Refit • Solução mais simplificada para o consumo de APIs REST, tendo compatibilidade com o .NET Standard github.com/renatogroffe/DotNetCore2.2_Refit-JWT
  • 30. Testando APIs REST com PowerShell • Solução multiplataforma (Windows, Linux, macOS) • Linguagem simples e intuitiva, com suporte à geração de requisições HTTP • Desenvolvimento via interface gráfica com debugging e auto complete: Visual Studio Code (com extensão própria) • Excelente alternativa para teste de APIs REST
  • 31. Azure Web App for Containers • Escalabilidade (vertical e horizontal) • Suporte a HTTPS • Uso de images Linux ou Windows • Ótimo para projetos de médio e pequeno porte • Utilizada a imagem renatogroffe/apicontagem-sdk-2-2
  • 32. Azure Kubernetes Service • Orquestração de containers na nuvem • Serviço gerenciado para utilização de um cluster Kubernetes • Recomendável para projetos de grande porte github.com/renatogroffe/ASPNETCore2.2_Kubernetes
  • 33. .NET Core 3.0 – Novo provider de acesso a dados • Package Microsoft.Data.SqlClient • Suporte a novos recursos do SQL Server (Always Encrypted, Data Classification) • Ainda não suportado por Dapper, Entity Framework Core ou Entity Framework 6
  • 34. .NET Core 3 – Suporte a JSON • Namespace System.Text.Json e suas novas classes mais performáticas: Utf8JsonReader, Utf8JsonWriter, JsonDocument e JsonSerializer • Desde o Preview 5 temos suporte à serialização de classes POCO (ainda em desenvolvimento)
  • 35. .NET Core 3 – Suporte a JSON • Projetos Web ao serem não contam mais com uma referência para o package Microsoft.AspNetCore.Mvc.NewtonsoftJson ( Preview 6) • Possibilidade de customizar o uso do novo Serializer
  • 36. ASP.NET Core 3.0 + gRPC • Comunicação via HTTP/2 utilizando um formato binário • Uso do formato binário Protobuf para serialização • Maior performance