.NET 10 - Novidades do Blazor


 Neste artigo vou apresentar um resumo das principais novidades previstas para o .NET 10 relacionadas ao Blazor.

O .NET 10, previsto para novembro de 2025, traz aprimoramentos significativos ao Blazor, incluindo ganhos de desempenho, produtividade para desenvolvedores e capacidades cross-platform, consolidando-o como uma opção ainda mais versátil para o desenvolvimento de aplicações web modernas.



Exemplos de segurança usando Blazor Web App

Foram adicionados e atualizados os exemplos de segurança interligados Blazor Web App nos seguintes artigos:

Garantir a segurança de um ASP.NET Core com OpenID Connect (OIDC)Blazor Web App
Proteger um ASP.NET Core Blazor Web App com o Microsoft Entra ID
Proteger um ASP.NET Core Blazor Web App com a Autenticação do Windows

Todas as soluções de exemplo OIDC e Entra agora incluem um projeto de API Web separado (MinimalApiJwt) para demonstrar como configurar e chamar uma API Web externa com segurança. O uso de APIs Web é demonstrado com um manipulador de token e um cliente HTTP nomeado para o provedor de identidade OIDC ou para pacotes/API Web da Microsoft Entra ID.

As soluções de exemplo são configuradas no código C# nos arquivos Program. Para configurar as soluções a partir de arquivos de configurações de aplicativo (por exemplo, appsettings.json), consulte a seção nova sobre a configuração de fornecimento utilizando o provedor de configuração JSON (configurações de aplicativo) nos artigos OIDC ou Entra.

Os exemplos do Entra também incluem novas diretrizes sobre como usar um cache de token distribuído criptografado para cenários de hospedagem de farm da Web.

Destaques por versão Preview:

 - .NET 10 Preview 1: Introduziu a nova palavra-chave Field, geração de documentação com OpenAPI e suporte a left joins no LINQ e Entity Framework.

- .NET 10 Preview 2: Melhorias no Blazor como o parâmetro rowClass para o Quick Grid (estilização dinâmica de linhas) e fingerprinting de assets web (como o script do Blazor) para apps WebAssembly independentes, visando cache mais eficiente.

- .NET 10 Preview 3: Aprimoramentos na persistência de estado para maior clareza.

Principais Atualizações do Blazor no .NET 10

1. Desempenho

O runtime do .NET 10 inclui otimizações em:

    Inlining JIT
    Desvirtualização de métodos
    Alocações de stack

    Resultando em aplicações Blazor mais rápidas.

2. Produtividade para Desenvolvedores

Novos recursos como a palavra-chave Field e melhorias na interoperabilidade com JavaScript reduzem código repetitivo.

3. WebAssembly

FingerPrinting e assets (como scripts do Blazor) permite cache mais agressivo e carregamento mais rápido.

No ano passado, o lançamento do .NET 9 introduziu a impressão digital do lado do servidor de ativos estáticos em Blazor Web Apps com a introdução das convenções de ponto de extremidade de roteamento de Ativos Estáticos do Mapa (MapStaticAssets), o ImportMap componente e a ComponentBase.Assets propriedade (@Assets["..."]) para resolver módulos JavaScript com impressão digital.

Para o .NET 10, você pode optar por ativar a impressão digital feita no lado do cliente de módulos JavaScript para aplicativos independentes Blazor WebAssembly.

Em aplicativos Blazor WebAssembly autônomos, durante a compilação/publicação, a estrutura substitui espaços reservados em index.html por valores calculados durante a compilação para ativos estáticos de impressão digital. Uma impressão digital é colocada no nome do arquivo de script blazor.webassembly.js

4. Novos Recursos

    rowClass no Quick Grid: Estilização dinâmica de linhas baseada em dados.

Permite aplicar uma classe de estilo a uma linha da grade com base no item da linha usando o novo parâmetro RowClass. No exemplo a seguir, o método GetRowCssClass é chamado em cada linha para aplicar condicionalmente uma classe de folha de estilos com base no item de linha.

<QuickGrid ... RowClass="GetRowCssClass">
    ...
</QuickGrid>
@code {
    private string GetRowCssClass(MyGridItem item) =>
        item.IsArchived ? "row-archived" : null;
}

    NavigateTo atualizado: Evita que o navegador role para o topo ao navegar para a mesma página.

Anteriormente, NavigationManager.NavigateTo rolava até a parte superior da página para navegação na mesma página. Esse comportamento foi alterado no .NET 10 para que o navegador não role mais para a parte superior da página ao navegar para a mesma página. Isso significa que o viewport não é mais redefinido ao fazer atualizações no endereço da página atual, como ao alterar a string de consulta ou o fragmento.

Componente de IU de reconexão adicionado ao modelo de projeto Blazor Web App

O modelo de projeto Blazor Web App agora inclui um componente ReconnectModal, incluindo arquivos JavaScript e folhas de estilos agrupados, para melhorar o controle do desenvolvedor sobre a IU de reconexão quando o cliente perde a conexão WebSocket com o servidor. O componente não insere estilos programaticamente, garantindo a conformidade com configurações de CSP (Política de Segurança de Conteúdo) mais rigorosas para a política de style-src.

Em versões anteriores, a interface do usuário de reconexão padrão foi criada pela estrutura de uma maneira que poderia causar violações de CSP. Observe que a interface do usuário de reconexão padrão ainda é usada como alternativa quando o aplicativo não define a interface do usuário de reconexão, como ao usar o componente ReconnectModal do modelo de projeto ou um componente personalizado semelhante.

Novos recursos de IU de reconexão:

Além de indicar o estado de reconexão definindo uma classe CSS específica no elemento de interface de reconexão, o novo evento components-reconnect-state-changed é disparado para alterações de estado de reconexão.

O código pode diferenciar melhor os estágios do processo de reconexão com o novo estado de reconexão "retrying", indicado pela classe CSS e pelo novo evento.

Ignorar a cadeia de caracteres e o fragmento de consulta ao usar NavLinkMatch.All

O componente NavLink agora ignora a cadeia de caracteres de consulta e o fragmento ao usar o valor NavLinkMatch.All para o parâmetro Match. Isso significa que o link mantém a classe active se o caminho da URL corresponder, mas a cadeia de caracteres de consulta ou o fragmento mudarem. Para reverter para o comportamento original, use o conjunto de Microsoft.AspNetCore.Components.Routing.NavLink.EnableMatchAllForQueryStringAndFragmentAppContext opções como true.

5. Melhorias no Blazor Server

Compressão de WebSockets e protocolos de reconexão aprimorados para maior responsividade.

6. Integração com ASP.NET Core 10.0

Recursos como OpenAPI e atualizações em APIs mínimas são integrados ao Blazor.

À medida que novas atualizações forem sendo incluídas e que os novos recursos estejam mais consolidados voltarei ao assunto apresentando exemplos práticos.

Para mais detalhes consulte o site:  Novidades no ASP.NET Core no .NET 10

E estamos conversados...  

"Porque o amor ao dinheiro é a raiz de todos os males; e nessa cobiça alguns se desviaram da fé, e se traspassaram a si mesmos com muitas dores"
1 Timóteo 6:10

Referências:


José Carlos Macoratti