.NET 7 - Batendo às portas
   Como esperado estamos próximos do lançamento do .NET 7.  Quais as novidades ???


A Microsoft está pronta para trazer a versão mais recente do .NET 7 em novembro de 2022. Você está pronto para abraçar os avanços que o acompanham?
 

 

As prévias lançadas pela Microsoft revelam as adições e modificações dos recursos do .NET 7. Vejamos um resumo dos principais recursos.

 

As previews são liberadas para testes públicos antes do lançamento final da versão .NET. Isso não oferece suporte conciso à versão final, mas ainda funciona como um piloto para a versão mais recente do .NET. Até agora existe um total de 7 previews anunciadas com recursos de modificação e complementação do .NET 7. Vamos dar uma olhada em alguns recursos considerando a última versão preview do .NET 7.

 

#1 AOT-Nativa

 

Como o próprio nome sugere, o Ahead-Of-Time gera código em tempo de compilação em vez de tempo de execução, mas em Native. Este não é um conceito completamente novo. Atualmente, já temos o ReadyToRun para aplicativos cliente-servidor e Mono AOT para aplicativos móveis e WASM.

 

Essas tecnologias não são substituídas pelo AOT Native, no entanto, oferecem um novo conjunto de potenciais que trarão pré-compilação nativa completa para cenários de cliente e servidor de desktop .NET.

O uso de AOT nativo se beneficiará de várias maneiras, pois terá menor uso de memória e acesso restrito à plataforma com tamanho de disco reduzido, tornando o tempo de inicialização mais rápido. Estes são apresentados por números promissores em termos de velocidade e tamanho de compilação.

 

 

#2 ASP.NET Core

 

Para a ASP.NET Core temos melhorias de desempenho adicionais para torná-lo mais rápido e eficiente. O .NET 6 já teve um grande impacto no desempenho e o .NET 7 o levará ainda mais longe.

 

Sendo assim, as atualizações do .NET 7 melhorarão amplamente o desempenho da ASP.NET Core. Embora você não tenha problemas de desempenho hoje, pode economizar seu dinheiro sem alterar seu código-fonte ao executar na nuvem.

O HTTP 3 é um recurso de visualização no .NET 6 e será habilitado por padrão no .NET 7. Haverá recursos TLS adicionais e outras melhorias de desempenho.

As APIs mínimas permitem a criação de APIs web leves sem a sobrecarga dos controladores. Isso foi introduzido no .NET 6. Com o .NET 7, obteremos melhorias adicionais e suporte para recursos ausentes no momento, como agrupar endpoints com um prefixo de rota comum. Esses filtros de endpoint permitirão a implementação de preocupações transversais que só poderiam ser feitas por controladores usando filtros de ação na versão atual.

O Blazor Hybrid Support permitirá pegar os componentes blazor existentes e colocá-los em um aplicativo de desktop usando um controle de visualização da Web com acesso a todas as APIs de hardware subjacentes. Isso também permitirá que os desenvolvedores usem tecnologias da Web para criar aplicativos de desktop com acesso a recursos do sistema, como um sistema de arquivos local ou uma webcam. Haverá controle de visualização da Web para Windows Forms e WPF que permite a modernização dos aplicativos existentes e a integração de novos componentes blazor em um aplicativo existente.

 

#3 O novo gerador de fonte Regex

O novo recurso Regex Source Generator traz todos os benefícios de desempenho do .NET 7 e do mecanismo compilado sem o custo de inicialização, com benefícios adicionais como uma ótima experiência de dublagem e facilidade de corte.

Para começar a usá-lo, você só precisa transformar o tipo contido em partial e declarar um novo método partial com o atributo RegexGenerator que retornará o objeto Regex otimizado, e pronto!

O gerador de código-fonte preencherá a implementação desse método sozinho. E também será atualizado automaticamente à medida que você fizer alterações em seu padrão ou nas opções adicionais que você passar.

 

#4 .NET MAUI

O novo kit de ferramentas de desenvolvimento do .NET MAUI fará parte do .NET 7. Atualmente, o .NET MAUI preview 13 já foi lançado. Haverá um lançamento oficial dentro de alguns meses com base no .NET 6

No .NET 7 haverá algumas melhorias de ferramentas e desempenho para o desenvolvimento do .NET MAUI. Algumas outros recursos incluídos são :

- Controle de mapa
- Controles de tela dupla
- Melhorias na “Introdução”
- Melhorias na capacidade de resposta da interface do usuário
- Melhorias na inicialização e no tamanho do aplicativo
- Assistente de migração de projetos Xamarin
- Melhoria na interoperabilidade da biblioteca nativa

 

#5 Cloud-Native

No .NET 7, o foco está na jornada do desenvolvedor em direção ao aplicativo nativo da nuvem, melhorando especificamente dois pontos:

  1. Simplificar a configuração necessária para implementar autenticação e autorização seguras;

  2. Melhorar o desempenho da inicialização do aplicativo e da execução do tempo de execução;

Haverá investimentos em Orleans, um framework multitaplataforma para construção de aplicativos distribuídos. Os pontos a seguir são direcionados para modificação :

- Implementar grains POCO
- Serializadores configuráveis para persistência de grãos
- Remover o provedor de SMS
- Implementar abstrações de serviço sem estado
- Implementar fluxos de trabalho como primitivo em Orleans
- Melhorar a experiência dos clientes de Orleans que estão implantando no Azure
- Simplificar as abstrações de configuração de stream
- Adicionar modelo Orleans para aspnetcore


Há também um plano para simplificar e melhorar a experiência do desenvolvedor na criação e implantação de aplicativos .NET em contêiner.

 

##6 Matemática genérica

O Generic Math associa o poder dos genéricos e um novo recurso conhecido como static virtuals em interfaces para permitir que os desenvolvedores .NET aproveitem as APIs estáticas, incluindo operadores do código genérico.

Isso denota que você obtém todo o poder dos genéricos, juntamente com a capacidade de restringir a entrada a tipos semelhantes a números. Isso significa que você não precisa mais escrever ou manter muitas implementações quase idênticas apenas para oferecer suporte a vários tipos.

Também indica que você obtém acesso a todos os seus operadores favoritos e pode usá-los em contextos genéricos. Ou seja, agora você pode ter estático T Add<T>(T left, T right) onde T : INumber<T> => left + right; Considerando que anteriormente isso seria impossível definir.

 

#7 Adicionar Stream ReadExactly e ReadAtLeast

Um dos erros mais comuns ao usar Stream.Read() é que o programador não percebe que Read() pode retornar menos dados do que o que está disponível no Stream e menos dados do que o buffer que está sendo passado.

E mesmo para programadores que estão cientes disso, é irritante escrever o mesmo loop toda vez que eles querem ler de um Stream.
 

Para ajudar nessa situação, a Microsoft adicionou novos métodos à classe base System.IO.Stream.


Os novos métodos ReadExactly garantem a leitura exata do número de bytes solicitado e uma exceção EndOfStreamException será lançada, se o Stream terminar antes que os bytes solicitados tenham sido lidos.

 

Esse é um resumo das principais novidades do .NET 7 ...
 

"(Disse Jesus) Eu sou a videira verdadeira, e meu Pai é o agricultor. Todo ramo que, estando em mim, não dá fruto, ele corta; e todo que dá fruto ele poda, para que dê mais fruto ainda. "
Joao 15:1

 

Porque um menino nos nasceu, um filho se nos deu, e o principado está sobre os seus ombros, e se chamará o seu nome: Maravilhoso, Conselheiro, Deus Forte, Pai da Eternidade, Príncipe da Paz.

Isaías 9:6
Porque um menino nos nasceu, um filho se nos deu, e o principado está sobre os seus ombros, e se chamará o seu nome: Maravilhoso, Conselheiro, Deus Forte, Pai da Eternidade, Príncipe da Paz.

Isaías 9:6

Referências:


José Carlos Macoratti