Com o lançamento do .NET 5 em novembro de 2020 o ecossistema .NET se consolidou, preparando as bases da plataforma para a próxima década. O .NET 3.1, a versão com suporte de longo prazo neste momento, já havia recebido a recomendação da Microsoft como plataforma .NET de destino para toda nova aplicação, seja Web ou desktop, e o .NET 5 é seu sucessor natural. Como tudo isso posto, vejamos o que esperar do .NET neste ano de 2021.
Os frameworks para construção desktop se consolidaram no .NET 5. Tanto o Windows Forms quanto o WPF estão mais maduros nessa versão, e o Visual Studio evoluiu bastante para suportá-los. Veremos diversas aplicações que historicamente foram construídas com .NET Framework migrarem para .NET 5, o que vai torná-las menores, mais rápidas, mais modernas (tanto na sua GUI quanto no código) e mais fáceis de instalar. A compatibilidade da API do Windows Forms e WPF entre .NET 5 e .NET Framework é alta, deixando o custo para migração aceitável. A ausência da necessidade da instalação de uma versão específica do .NET Framework na máquina, uma vez que aplicações .NET 5 podem carregar o framework com elas, também simplifica muito o processo de deploy, e é um atrativo muito interessante.
Com o suporte a ARM64 (lançado no .NET 5), somado a maturidade do desktop mencionada no parágrafo anterior, teremos a possibilidade de passarmos a ter aplicações ricas em dispositivos menores, inclusive embarcados. Uma tendência há anos é a movimentação destas aplicações para a web, agora com o .NET 5 as aplicações desktop mais antigas podem finalmente evoluir sem precisarem ser migradas para a web, e aqueles casos, que todos já vimos, de grandes desktops atrás de um monitor (em shoppings, aeroportos etc), podem evoluir para algo tão simples quanto um Raspberry Pi.
Com a evolução no desempenho do .NET, que começou a ficar mais intensa no .NET Core 3, e ainda mais no .NET 5, novas possibilidades começam a se abrir para o .NET, tanto em ambientes muito pequenos, onde o uso de memória e processamento são limitados, quanto em ambientes muito grandes, onde o custo e a escalabilidade são os fatores mais importantes. .NET foi reconhecido como o framework mais rápido na última rodada do TechEmpower Benchmark (um benchmark open source e independente bastante reconhecido pelo mercado), um posto raramente reservado para plataformas de grande adoção, e normalmente reservados para plataformas experimentais que só são usadas em laboratório. Isso tem levado .NET para projetos de alta demanda, como aplicações baseadas em microsserviços, ou mesmo grandes monolitos com alta necessidade de escala. .NET não disputa mais desempenho com Node.js, como no passado, mas com Rust e C++.
O C#, agora na sua nona versão, tem se mostrado uma linguagem capaz de se manter jovem e conectada com os tempos atuais. A linguagem tem ganhado diversas funcionalidades que a tornam mais fácil de programar, mais divertida, e que permite cenários de maior desempenho. No entanto, o C# 9 demanda .NET 5, e muitos projetos migrarão para esta versão especialmente para ter acesso a nova versão da linguagem.
Em geral, veremos projetos que estão em desenvolvimento ativo migrarem para o .NET 5. Projetos que já estavam rodando em .NET 3.1 e não tinham demandas de evolução (ou estavam perto de terminar) não devem migrar, uma vez que o suporte do .NET 5 termina antes do suporte do .NET 3.1.
Com o lançamento do .NET 6 esperado para novembro de 2021, também veremos no final do ano o começo do planejamento de migração de projetos .NET 3.1 e .NET 5 para .NET 6, alguns ainda nas fases finais de preparação do .NET 6, com o release candidate esperado para os últimos meses antes da release (entre setembro e outubro), e já com licenças com suporte a produção. A maioria dos projetos, no entanto, devem se preparar nos meses seguintes, começando em novembro e dezembro, e 2022.
O ano de 2020 mostrou que o .NET se consolidou no Linux, com mais de 2 milhões de publicações por mês de aplicações neste sistema operacional. .NET roda muito bem no Linux – eu argumentaria que até melhor que no Windows – e Linux é o SO que recomendamos na maioria dos casos aos nossos clientes de .NET na Lambda3. 2021 será o ano que muitas empresas que ainda não trabalhavam com Linux passarão a utilizá-lo, por suas vantagens em desempenho e custo, uma vez que o custo de uma aplicação, seja hospedada localmente ou na nuvem, tende a ser bem menor quando comparado com uma aplicação Windows. Isso vem também muito puxado pela tendência de uso de contêineres e Kubernetes, assim como pela existência, nesse momento, da disponibilidade de um kernel de Linux completo no Windows, com o WSL, o que tornou o uso de Linux muito mais fácil no Windows.
E, ainda no assunto contêineres, veremos a continuada adoção de contêineres Windows para aplicações legadas de .NET Framework. A Lambda3 já ajudou diversos clientes a modernizarem apps legadas, algumas escritas há mais de dez anos, utilizando contêineres. Seu uso acaba simplificando muito a gestão dos servidores, que não precisam mais da gestão de dependências (que acontece dentro do contêiner), assim como o processo de publicação da aplicação. Essa não é uma tendência para 2021, mas para toda a década.
Em resumo, após quase 20 anos de .NET, a evolução em uma plataforma já consolidada não é algo comum, mas o time do .NET conseguiu realizá-la e as mudanças são boas e bem vindas. Para quem já trabalhava com .NET são boas notícias, já que continuam relevantes, com alta demanda por profissionais no mercado. Quem está entrando agora vê um ecossistema vibrante, moderno e com muito futuro. Para as empresas a notícia também é boa, uma vez que seus investimentos continuarão dando retorno por muitos anos por vir. E todo esse progresso não dá sinais de que vá parar tão cedo.
.NET nunca esteve tão jovem.
Giovanni Bassi
Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.