.NET

22 fev, 2018

Dicas de performance para APIs REST no ASP.NET Core

Publicidade

Neste novo artigo, trago algumas dicas para a obtenção de uma maior performance em APIs criadas com o ASP.NET Core. Não se trata de uma versão definitiva deste material, sendo que pretendo incluir sempre que for oportuno novos conteúdos relacionados a esse importante tópico.

Muito do que está aqui listado já foi agrupado em outro artigo, no qual venho mantendo um guia de referência atualizado sobre o desenvolvimento de APIs REST com o ASP.NET Core. Para ter acesso a este material, acesse o link a seguir:

Removendo valores nulos no retorno de uma API

Um descuido muito comum entre desenvolvedores .NET, consiste em não configurar a remoção de valores nulos no retorno de APIs REST. Tal comportamento encontra-se desabilitado por default, com a ativação do mesmo constituindo um processo extremamente simples e que foi detalhado no seguinte artigo:

Compressão de respostas em APIs REST

O ASP.NET Core conta com um middleware para a compressão de respostas em APIs REST, fazendo uso, para isto, do padrão GZIP. A vantagem deste tipo de prática está na diminuição do volume de dados trafegados entre o servidor que processará uma requisição e aplicações-cliente.

No artigo a seguir, demonstrei o uso deste recurso em uma API criada com o ASP.NET Core 1.1:

Este mesmo exemplo também foi convertido para o ASP.NET Core 2.0 e está no seguinte repositório (projeto ExemploCompressao):

Utilizando o suporte a JSON de bancos relacionais

Alguns SGBDs, como o SQL Server (desde a versão 2016), contam com a possibilidade de conversão do resultado de uma consulta para uma string JSON. E qual a relação disso com a performance em APIs REST?

O formato JSON é atualmente a alternativa mais utilizada para a representação de dados em APIs REST (embora XML seja a outra possibilidade, porém menos comum e geralmente associada a projetos legados).

A possibilidade de converter diretamente um conjunto de informações para o padrão JSON evita a codificação de inúmeras classes em um projeto ASP.NET Core, além de dispensar a execução de custosas operações de serialização/deserialização de objetos que seriam devolvidos como retorno da API considerada. No artigo a seguir temos um exemplo disto utilizando o ASP.NET Core e o SQL Server 2017:

Cache

Técnicas de armazenamento temporário de dados via cache são extremamente comuns em aplicações Web, com APIs REST não fugindo a esta regra.

O repositório a seguir, traz exemplos de utilização de cache empregando Redis e em memória para APIs desenvolvidas a partir do ASP.NET Core 2.0:

Performance no acesso a dados com Dapper

Micro-ORM empregado em projetos .NET nos quais a performance no acesso a dados em bases relacionais constituem um fator crítico, o Dapper também pode ser utilizado por APIs construídas com o ASP.NET Core. O artigo a seguir traz vários exemplos de implementação que fazem uso deste framework:

Utilizando soluções NoSQL

Soluções NoSQL como o MongoDB e o DocumentDB se destacam por uma excelente performance na manipulação de grandes conjuntos de informações. No próximo artigo vocês encontrarão exemplos de utilização destas tecnologias em APIs criadas com o ASP.NET Core 2.0:

Monitorando a performance com o Application Insights

Uma solução bastante flexível para o monitoramento de APIs REST (incluindo questões relacionadas a performance), é o Application Insights, alternativa que integra o Microsoft Azure e que pode ser empregada em diferentes plataformas, como: .NET, Java, Node e Ruby.

O artigo a seguir demonstra como o Application Insights pode ser utilizado em conjunto com o ASP.NET Core 2.0:

Referências