BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Navegando no Ecossistema .NET

Navegando no Ecossistema .NET

Pontos Principais

  • No final de 2020, podemos esperar que o .NET 5 se unifique com os demais .NETs;
  • O desempenho é uma prioridade ao considerarmos o desenvolvimento de recursos;
  • Os avanços na linguagem C#, levam desenvolvedores a adotá-la;
  • A comunidade open source está mudando o ecossistema .NET para melhor.

Este artigo faz parte da série educacional .NET que explora os benefícios da tecnologia e como pode ajudar não apenas os desenvolvedores .NET tradicionais, mas também todos aqueles que precisam trazer soluções robustas, com desempenho e econômicas ao mercado.

Com o lançamento do .NET Core 3.0, a Microsoft possui a nova versão da plataforma focada no uso geral, modular, multiplataforma e open source, lançada inicialmente em 2016. O .NET Core foi criado inicialmente para permitir a próxima geração das soluções ASP.NET, mas agora é a base para muitos outros cenários, incluindo IoT, nuvem e soluções móveis. A versão 3 inclui vários recursos frequentemente solicitados, como suporte para WinForms, WPF e Entity Framework 6.

Em 2002, o .NET foi lançado, e durante os doze anos que sucederam o lançamento, a comunidade de desenvolvedores .NET cresceu em um ritmo aparentemente constante e tranquilo, porém, as coisas começaram a evoluir rapidamente. A Microsoft antecipou a mudança no ecossistema e adotou a mentalidade de desenvolvimento open source, confirmando este modelo com a aquisição do GitHub a principal plataforma de desenvolvedores de software de código aberto do mundo. Diante dessas mudanças, os desenvolvedores do .NET Framework se prepararam para a aceleração que estava apenas começando.

Em novembro de 2014, nasceu o .NET Core. Foi o início de uma era revolucionária do open source para o ecossistema .NET, mas houve vários problemas. Com isso veio uma onda de confusão e frustração, já que os desenvolvedores não estavam prontos para uma mudança tão dramática e repentina. Houve uma tentativa de equilibrar essa confusão através do gerente de produto da equipe do .NET, Immo Landwerth, que inteligentemente iniciou a tarefa de criação de uma série de vídeos explicativos com vários detalhes do .NET Standard, .NET Core, .NET Framework e o novo ecossistema .NET, nos vídeos Landwerth sempre estava colocando a mão no fogo pelo .NET, porém, por mais acolhedor que isso possa parecer, quando o gerente de produto da Microsoft está disposto a colocar a mão no fogo para explicar algo, temos um indicador de preocupação.

.NET Standard

Os desenvolvedores tiveram que aprender sobre o .NET Standard, mas anos depois o .NET Standard ainda confundia aqueles que não entenderam como utilizá-lo. Eles o tomaram erroneamente como um runtime, quando na verdade era uma simples especificação. Por ser um TFM (Target Framework Moniker), os desenvolvedores puderam criar bibliotecas de classes direcionadas ao .NET Standard, tornando o pacote consumível por aplicações .NET Core ou .NET Framework. Podemos pensar como se fosse uma segmentação múltipla. Ao usar diretivas do compilador, os autores do pacote podem escrever o código condicional que seria compilado para o .NET Core ou o .NET Framework. Essa padronização permite que inúmeras implementações atendam ao padrão. Com o .NET Standard, as versões se alinham às implementações do .NET Core e .NET Framework.

"O .NET Standard é uma especificação. Representa um conjunto de APIs que todas as plataformas .NET precisam implementar".

- Immo Landwerth.

Só de imaginar a manutenção do código, há uma mistura de angústia com interesse.

Unificando o .NET Core e o .NET Framework

Landwerth fez um ótimo trabalho com os vídeos, pois são úteis até hoje, mas agora a Microsoft está pivoteando novamente. Na Microsoft Build 2019, disseram que estão unificando o .NET Core e o .NET Framework no dia em que anunciaram o .NET 5.

"Haverá apenas um .NET, e poderemos usá-lo no Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly e em qualquer outra plataforma".

- Richard Lander

É isso mesmo que você leu, entretanto é bom reforçar. O .NET 5 visa unificar o .NET Framework e o .NET Core. Ainda há muito trabalho para tornar este anúncio uma realidade. Sabemos que não acontecerá em 2019, portanto, precisamos voltar nesse assunto em 2020. A fusão deve ajudar, e muito, a comunidade de desenvolvedores, pois irá simplificar muitas coisas!

A Microsoft também está aproveitando o trabalho do Runtime do Mono e do .NET Core. Pode parecer meio assustador no começo (mais uma vez, como desenvolvedores, precisamos acolher a mudança, não temê-la), mas podemos ficar tranquilos, sabendo que todo o trabalho que antecedeu o .NET 5 se baseia nos sucessos do .NET Core e do Mono. A unificação do .NET traz uma verdadeira sensação de conclusão do problema do .NET dividido, que atormentou a comunidade de desenvolvedores nos últimos anos. No momento, não está claro se o .NET Standard ainda existirá no futuro.

O futuro

Embora seja fácil sermos pegos falando sobre o passado, reclamando das preocupações e frustrações anteriores, precisamos seguir em frente. Talvez, um dos caminhos mais lógicos a se seguir seja unificar o .NET Core e o .NET Framework. Parafraseando Trump, "Let's make .NET great again!". Ok, talvez eu tenha ido longe demais, mas vamos discutir o futuro. Para onde a Microsoft está nos levando?

Vamos dar um passo atrás e analisar de onde viemos, antes de focarmos para onde estamos indo. Nem todos os desenvolvedores .NET sabem como o código é compilado e o que realmente é produzido.

"Desde o início, o .NET confiou em um compilador just-in-time (JIT) para converter o código da Linguagem Intermediária (IL) em um código de máquina otimizado".

- Richard Lander

Voltando a citação anterior sobre o projeto Mono, sabemos que houve esforços significativos para fazer uma compilação antecipada (AOT) para o .NET. O Mono conseguiu isso através da infraestrutura do compilador LLVM, líder do setor.

"O compilador Mono AOT permite que o código .NET seja incorporado em um único executável de código nativo, que pode ser executado em uma máquina, assim como o código C++".

- Richard Lander

É importante perceber que nenhum outro recurso do .NET Framework terá portabilidade após o .NET 3.0. Novamente, o cronograma de introdução do .NET 5 é novembro de 2020, portanto, o timing é um fator importante. Embora pareça um tempo considerável, as mudanças virão em pouco tempo. Podemos nos perguntar o que iremos fazer enquanto isso? Então, vamos lá.

Inovação centrada no desempenho

A Microsoft ofereceu uma recomendação oficial para os desenvolvedores .NET sobre o que fazer durante este ínterim: Comecemos o desenvolvimento de novos aplicativos com o .NET Core. Seria uma boa ideia também, considerar importar as aplicações existentes do .NET Framework para o .NET Core, caso seja possível.

"Novos aplicativos devem ser criados no .NET Core, que é onde os investimentos futuros no .NET estarão".

- Scott Hunter

No ecossistema .NET, o .NET Core está no foco da inovação. É um runtime alternativo ao .NET Framework e é uma reescrita completa desde a base até o topo, isso permitiu inovações agressivas, especificamente para o desempenho. Com cada iteração do .NET Core e ASP.NET Core, respectivamente, temos a garantia de que haverá mais consistência e melhorias. "Reduzir alocações" é um tema muito comum que surgiu como uma conquista de desempenho. Um novo termo da indústria foi cunhado:

"Allocaty (adjetivo: al·lo·caty) - código que aloca mais do que o necessário".

- David Fowler

Um número significativo de solicitações pull continua chegando nos repositórios CoreCLR e CoreFX do GitHub que focam em melhorar o desempenho, reduzindo as alocações. Esses esforços levaram diretamente o ASP.NET Core a se tornar um dos servidores da Web mais rápidos do mundo, de acordo com os benchmarks da Tech Empower. É incrível testemunhar essas melhorias, mas é com o tempo e o esforço que chegaremos a maestria, bem como com o envolvimento da comunidade. Como a Microsoft desenvolve os projetos abertamente, isso permite que a comunidade de desenvolvedores open source contribua para essas inovações. As melhorias de desempenho não se limitam à redução de alocações, há ainda ganhos em outros níveis, aproveitando as intrínsecas do hardware.

Evoluindo o C#

Nem é preciso dizer que sou um grande fã da linguagem C#. Vale lembrar que o .Net Core foi criado com o C# e focado no desempenho. Portanto, não é nenhuma novidade que iremos discutir um pouco sobre ele aqui no artigo.

"Como um tema surgido no .NET Core, sempre que possível, as novas funcionalidades focadas no desempenho devem, não somente serem expostas para uso público, mas usadas internamente também".

- Stephen Toub

O C# 7, os releases subsequentes, e o atual C# 8, pressionaram todos os limites da tolerância da comunidade à adoção. Acredito muito na evolução da linguagem, e defendo a defendo com unhas e dentes, mas ao mesmo tempo, tenho empatia com os desenvolvedores que estão limitados devido a questões de negócios, que impedem a adoção. Entendo totalmente essas preocupações. A pergunta que precisamos fazer é: "Qual é a proposta de valor?" Certos recursos que são novos foram focados no desempenho e podem ser considerados, com base nas nossas necessidades.

Em um tópico recente do Twitter, Nick Craver foi citado: "O C# 8 está morto para mim", que podemos traduzir para "O StackExchange não será atualizado para o C# 8 por muitos e muitos anos". Isso se deve em parte ao fato de que certos recursos do C# dependem de atualizações do Common Language Runtime (CLR). Um exemplo é o recurso "membros da interface padrão", que atualmente depende do .NET Core 3.0. A grande maioria dos outros recursos depende apenas do compilador C#, o que é o ideal.

.NET Foundation

Com todos os termos do .NET dançando pela internet, parece apropriado lançar mais um para vocês.

A .NET Foundation é uma organização independente que promove o desenvolvimento aberto e a colaboração em todo o ecossistema .NET. Serve como um fórum para a comunidade e desenvolvedores comerciais, para ampliar e fortalecer o futuro do ecossistema .NET.

Não deixe de visitar o site ou se tornar um membro, que pode ser elegível para votar no conselho de administração, assim como se candidatar à eleição anual para se tornar membro do conselho. Na verdade, eu era um dos candidatos ao conselho de diretores de 2019. Aqui está o atual conselho de administração permanente.

Convido a todos a se inscreverem na newsletter e a se manterem informados.

Um caminho significativo à seguir

O ecossistema .NET é um cenário em constante mudança, mas acredito que esteja se movendo em uma ótima direção. Com o open source e a ideia de multiplataforma, as duas prioridades principais, estamos em boas mãos. Pessoalmente, estou revigorado com a constatação de que o .NET Core e o .NET Framework foram uma pressão sobre o ecossistema .NET, resultando na unificação do .NET 5. Embora tenham sido anos dolorosos, foram eles que tornaram possíveis essas inovações. Convido-os a tentar migrar para o .NET Core e iniciar qualquer novo trabalho com a plataforma, pois ela é o futuro. Apesar do futuro desconhecido do .NET Standard, ainda o sugerimos, até a segunda ordem. Espero que o que for decidido seja de baixo impacto.

Sobre o autor

David Pine é MVP da Microsoft, especialista desenvolvedor do Google e desenvolvedor de conteúdo que atualmente trabalha na Microsoft. Adora compartilhar conhecimento com a comunidade técnica e fala internacionalmente em encontros, grupos de usuários e conferências técnicas. É apaixonado por compartilhar os pensamentos através do seu blog, o davidpine.net. As postagens de David foram destacadas no ASP.NET, MSDN Web-Dev, MSDN .NET, Dot Net Curry e InfoQ. Preza por contribuir para projetos open source e para o StackOverflow.com como outro meio de retribuir à comunidade. Fez parte do conselho técnico e atuou como um dos principais organizadores do Cream City Code por quase quatro anos. Quando não está interagindo com um teclado e um mouse, podemos encontrá-lo passando um tempo com a esposa e os três filhos, Lyric, Londyn e Lennyx. Siga David no Twitter em @ davidpine7.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT