< Insights

Por que utilizar o ASP.NET Core em seu próximo projeto?

  • Desenvolvimento de Software

A Microsoft é conhecida por muitos por produzir frameworks com códigos fechados, engessados e geralmente menos performáticos, esse não é o caso do ASP.NET Core. 

Resultado de uma nova mentalidade dentro da Microsoft a partir de 2013 com o seu novo CEO, todo o código do ASP.NET Core é aberto, focado em disponibilizar micro-serviços e com performance competitiva no mercado.

Desde o seu início em 2016, o ASP.NET Core surgiu com a proposta de separar antigas APIs em diversos micro-serviços na nuvem e multiplataforma com a possibilidade de hospedagem em Kestrel, IIS, Apache, Docker e outros.

Benefícios no uso do ASP.NET Core

Ganhando cada vez mais popularidade, o ASP.NET Core vem se tornando o framework escolhido no desenvolvimento de aplicações de pequeno a grande porte, podendo ser desenvolvido e implantado em Windows, Linux e Mac.

Arquitetura do ASP.NET Core

Com uma arquitetura voltada a testes, alta performance, injeção de dependência nativa, código aberto e foco na comunidade são grandes diferenciais que contribuem com o aumento da popularidade do framework.

A possibilidade de desenvolver e executar nos sistemas operacionais Windows, macOS e Linux, aumentaram o número de desenvolvedores que não utilizam Windows e de empresas que não possuem servidores Windows para subirem aplicações, além de ser possível a hospedagem de projetos em diferentes versões do ASP.NET Core no mesmo servidor, permitindo assim, por exemplo, aplicações desenvolvidas em ASP.NET Core 1.0 serem executadas em conjunto com aplicações desenvolvidas no ASP.NET 3.1 no mesmo servidor.

Além da diversidade no desenvolvimento e execução do código o ASP.NET Core suporta atualmente o deploy de aplicações web utilizando Kestrel, IIS, HTTP.sys, Nginx, Apache e Docker.

Desenvolvimento Web com ASP.NET Core

Na construção de páginas web conta com o Razor Pages, framework para desenvolvimento de páginas web de maneira dinâmica, auxilia na criação de páginas utilizando uma abordagem de Web UI, ou seja, páginas sem APIs e Controllers. 

No Razor Pages toda a página possui um PageModel correspondente que lida com as interações feitas pelo usuário, diminuindo assim a complexidade envolvida em abordagens como MVC (Model-View-Controller). 

O Blazor foi lançado junto com o ASP.NET Core para facilitar na criação de páginas interativas sem o uso de Javascript, utilizando apenas C#, HTML e CSS com base no Razor Pages. Mantendo apenas uma linguagem no projeto, o Blazor possibilita o compartilhamento de código entre o back e o front, diminuindo muitas vezes pela metade a codificação de validações e regras de negócio. Disponibiliza ainda a opção de executar o código da página diretamente no navegador ou enviando eventos via SignalR para o servidor.

Tanto o Razor Pages como o Blazor são soluções bastante utilizadas no meio corporativo pois permitem a criação de páginas web com design robustos de maneira produtiva e isolando as regras de negócio com a apresentação da tela.

Ferramentas para utilizar o ASP.NET Core

Tudo isso pode ser desenvolvido utilizando o Visual Studio, principal IDE para C# e tecnologias Microsoft, que oferece centenas de templates de projetos estruturados com suporte a várias tecnologias como: Angular, React, Vue, Ember, BackboneJS, Lua, Cordova e outros. 

O Visual Studio possui um depurador que permite a edição e execução de código durante a depuração, breakpoints com condicionais, suporte a outras linguagens como Javascript e Python, depuração dentro de containers em projetos com suporte a Docker.

Todos os projetos podem ser criados com suporte a Docker, que gera automaticamente os arquivos para configuração do container. 

Além do Visual Studio, que para uso comercial é pago, a Microsoft oferece também o Visual Studio Code, IDE gratuita que suporta dezenas de linguagens, incluindo C#, com um marketplace de extensões atualizado constantemente pela comunidade, tornando o Visual Studio Code uma ferramenta bastante versátil.

Performance no .NET Core 

O .NET Core é o framework de código aberto que o ASP.NET Core utiliza como base, por isso, analisando sua performance podemos melhor analisar seu desempenho em relação a outras linguagens.

Sua primeira versão já apresentava maior desempenho que grandes linguagens da época como Java, Javascript e Ruby. Sua última versão 3.0 conta com um desempenho ainda superior, conforme gráficos abaixo.

Algoritmo regex-redux

Com esse algoritmo pode ser medido a performance do framework na resolução de busca e substituição de valores em uma sequência de caracteres utilizando funções regex.

gráfico com a performance do framework na resolução de busca e substituição de valores em uma sequência de caracteres utilizando funções regex

Fonte: benchmarksgame-team

Algoritmo binary-trees

A velocidade em que o framework executa o algoritmo de árvores binárias demonstra sua capacidade em lidar com gerenciamento de memória e operações com árvores.

gráfico com A velocidade em que o framework executa o algoritmo de árvores binárias

Fonte: benchmarksgame-team

Algoritmo n-body

Executa um grande número de iterações e operações matemáticas com pontos flutuantes.

gráfico número de iterações e operações matemáticas com pontos flutuantes

Fonte: benchmarksgame-team

Como pode ser observado o .NET Core fica atrás apenas de linguagens de baixo nível como C++, Haskell e Rust, fazendo com que o ASP.NET Core já tenha uma vantagem em relação a outros frameworks que tem como base linguagens e frameworks menos performáticos.

Performance ASP.NET Core

Analisando diretamente o desempenho do ASP.NET Core podemos avaliar seu uso com base na performance em tarefas importantes para aplicações web como serialização de objetos JSON e consultas em bancos de dados.

Serializações de mensagens JSON por segundo

Através dessas medidas é possível avaliar capacidades fundamentais do framework como: suporte ao cabeçalho keep-alive, roteamento de requisições, análise do cabeçalho de requisição, instanciamento de objetos, serialização de JSON, geração de cabeçalho de resposta e contagem de requisições.

gráfico com a Serializações de mensagens JSON por segundo

Fonte: techempower.com

Comunicação com banco de dados e operações com coleções

Com esse teste é possível determinar a performance de um web server como: acesso a banco de dados, suporte a coleções dinâmicas, ordenação, proteção contra injeção de scripts e codificação de caracteres.

gráfico com Comunicação com banco de dados e operações com coleções

Fonte: techempower.com

Comparando o ASP.NET Core com os frameworks mais expressivos do mercado como PHP, Rails e NodeJS, o ASP.NET Core é o framework com melhor performance. Apesar de não ser tão performático quanto alguns frameworks é o que possui mais recursos e a maior comunidade entre eles.

Como escolher um framework

A escolha de um framework para o início de um projeto deve envolver questões como desempenho, testabilidade, curva de aprendizado, número de bibliotecas disponíveis, documentação, comunidade, custo de licença, hospedagem, instalação entre outros. 

Considerando algumas dessas questões, conseguimos concluir que o ASP.NET Core é um framework grátis de código aberto com ótimo desempenho e construído para suportar testes. Utiliza C# uma linguagem bem consolidada no mercado além de oferecer a opção de não utilizar Javascript para desenvolvimento do front, utilizando apenas o C# com o Blazor.

Possui uma documentação extensa com vídeos e tutoriais além de uma comunidade de centenas de desenvolvedores ajudando a evoluir o framework e milhares de bibliotecas disponíveis para uso gratuito com o framework.

A instalação pode ser feita em ambientes Windows, Linux ou macOS e pode ser hospedado com Kestrel, IIS, HTTP.sys, Nginx, Apache e Docker. 

Essas são algumas razões que tornam o ASP.NET Core uma ótima opção para seu próximo projeto. Você considera essas razões boas o suficiente? O que você busca em um framework? Clique aqui e veja como a Objective pode te ajudar no desenvolvimentos de software.

Insights do nosso time

Obtenha insights do nosso time de especialistas sobre metodologias de desenvolvimento de software, linguagens, tecnologia e muito mais para apoiar o seu time na operação e estratégia de negócio.