Vale a pena fazer upgrade de versão do .NET?

Com o lançamento do .NET Core (chamado somente de .NET do .NET 5 em diante), a Microsoft modernizou sua plataforma de desenvolvimento. O que antes era um ambiente de desenvolvimento majoritariamente de código fechado, compatível somente com Windows e empacotado em um único pacote de instalação, virou o oposto. O .NET passou a ser multiplataforma, foi componentizado em diversos pacotes, se tornou independente de sistemas operacionais e passou a ser open-source, abrindo as portas para que toda a comunidade pudesse realizar contribuições.

Todas essas mudanças adicionaram muito mais velocidade no desenvolvimento do .NET, e o tornaram mais competitivo no mercado. Devido a isso, todos os anos no mês do novembro, a Microsoft consegue publicar novos lançamentos major.

dotnetReleaseCadence

Com essa velocidade de lançamentos por parte da Microsoft, grande parte das aplicações tendem a utilizar uma versão um pouco mais antiga do .NET, pois muitas vezes não podemos realizar o upgrade por motivos como: prioridades do negócio, criticidade da aplicação, entre outros.

Uma estratégia que podemos seguir é a de utilizar versões LTS (Long Term Support) do .NET, pois estas versões possuem suporte prolongado da Microsoft por até 3 anos após serem lançadas.

Isso significa que durante esse período a Microsoft irá:

  • Corrigir problemas de desempenho graves
  • Mitigar riscos de segurança
  • Prestar suporte à novas versões de sistemas operacionais
  • Corrigir bugs

A partir do .NET 5, todos os lançamentos pares de novas versões do .NET serão LTS (ou seja, o .NET 6 é LTS), enquanto que lançamentos ímpares serão considerados as versões atuais (Current) e possuem suporte por 6 meses após o lançamento.

Quais os benefícios de realizar o upgrade?

Performance

Um dos principais motivos para realizar o upgrade de versão é a melhoria de performance.

Os desenvolvedores da Microsoft costumam publicar no .NET Blog sobre as melhorias que são feitas em cada novo lançamento de versão.

Recomendo a leitura dos posts abaixo caso queira se aprofundar nas melhorias de cada versão:

Redução de Custos

Ao gastar menos recursos computacionais como CPU e memória, sua aplicação pode fazer mais com menos, como por exemplo ler mais mensagens de uma fila ou suportar mais usuários simultaneamente.

Isso reduz custos com serviços que cobram por tempo de processamento e gastos com CPU e memória, como ocorre em funções Lambda.

Caso sua aplicação esteja rodando em containers, estes geralmente escalam por uso de CPU e memória, e já que sua aplicação irá gastar menos recursos computacionais, você precisará de menos containers, dessa forma, reduzindo gastos.

Segurança

Novas versões possuem diversas correções de segurança que são lançadas à medida que novas vulnerabilidades são descobertas.

Novas funcionalidades

A equipe da Microsoft possui roadmaps sobre os próximos lançamentos do .NET e da linguagem C#, dessa forma é possível acompanhar quando e o que será lançado em cada versão, possibilitando realizar um planejamento caso você deseje utilizar uma nova funcionalidade.

Quando não devo realizar o upgrade?

Se a sua aplicação depende fortemente de pacotes externos, é necessário verificar se eles são compatíveis com a nova versão que você pretende realizar o upgrade.

Se você possui uma aplicação legada que é estável e necessita somente de manutenções e correções de bugs, verifique qual é o esforço de realizar o upgrade. É muito mais fácil migrar do .NET 5 para o .NET 6 do que do .NET Core 1.1 para o .NET 6, por exemplo.

Existe alguma ferramenta que pode ajudar?

A resposta para essa pergunta é sim.

Felizmente existem ferramentas que podem nos ajudar a identificar com mais facilidade se nosso código pode ser portado e é compatível com as outras versões do .NET.

.NET Upgrade Assistant

É uma ferramenta que foi desenvolvida pela Microsoft cujo objetivo é automatizar o upgrade de projetos que ainda utilizam o .NET Framework para novas versões do .NET.

Escrita em C#, possui código aberto e está hospedada neste repositório.

.NET Portability Analyzer

É um plugin para Visual Studio (versões 2017 e 2019) que foi desenvolvido pela Microsoft cujo objetivo é analisar sua aplicação e fornecer um relatório que informa a compatibilidade com diferentes versões do .NET Framework e .NET Core.

Por se tratar de um plugin, é necessário realizar o download através do Marketplace, e o código fonte pode ser encontrado aqui.

Try-convert tool

É uma ferramenta não oficial que ajuda desenvolvedores a migrar projetos para .NET Core. Por ser desenvolvido pela comunidade, não há nenhuma garantia que qualquer erro na ferramenta seja corrigido, ou que um suporte seja prestado em caso de necessidade.

Também não há garantias que seu projeto seja migrado com sucesso, como o próprio nome da ferramenta já diz, o “try-convert” tenta realizar uma migração de forma automática.

A ferramenta pode ser baixada aqui.

Conclusão

Não há dúvidas de que realizar o upgrade na versão do .NET proporciona diversos benefícios. No entanto, é necessário se atentar se esses benefícios geram valor para seus clientes.

Gerar valor para o cliente deve ser a maior prioridade de um negócio, portanto, é necessário uma análise para levantar qual é o esforço de realizar esse upgrade e se isso pode impactar de alguma forma o cliente final, como por exemplo, uma indisponibilidade da aplicação ou bugs que já haviam sido resolvidos anteriormente.

Uma aplicação legada, com uma versão mais antiga do .NET, mas que é estável e funciona corretamente, gera muito mais valor do que uma aplicação com a última versão do .NET instável e com bugs.

Cada caso deve ser analisado individualmente e não há nenhuma resposta pronta sobre atualizar ou não uma determinada aplicação. Isso depende da criticidade da mesma e do contexto do negócio em que você está inserido.

Espero que tenham gostado!