Blazor United o futuro do .NET
Introdução
Atualmente, existem dois tipos de aplicativos web: Single Page Applications (SPA), que requerem alta interatividade, e Multi Page Applications (MPA), que são mais simples, têm respostas mais rápidas e retornam apenas HTML. Muitos aplicativos web usam ambas as soluções.
Para desenvolver uma MPA, podemos usar MVC ou Razor Pages, e para SPA, podemos usar Blazor WebAssembly ou Blazor Server.
No entanto, há uma tendência atual de criar uma tecnologia que permita o uso de MPA e SPA ao mesmo tempo, sem limitar o desenvolvedor a apenas uma solução.
A solução para isso no .NET é o Blazor United. Com ele, você pode criar seus componentes razor e escolher se deseja que eles sejam renderizados como Blazor Server ou WebAssembly.
Funcionamento
Se um componente for renderizado como Blazor Server, ele abrirá uma conexão chamada Circuito, que é basicamente um WebSocket, e começará a enviar HTML para tornar a página mais interativa sem ter que carregar a página inteira de uma vez.
Para especificar o modo de renderização de um componente, basta usar a diretiva rendermode, como em:
<MeuComponente rendermode="@WebComponentRenderMode.Server">
Para uma página inteira, é possível utilizar a anotação:
[ComponentRenderMode(WebComponentRenderMode.Server)]
Existe também a opção de usar o Blazor WebAssembly, que é executado inteiramente no lado do cliente, o que significa que o código do aplicativo é baixado e executado diretamente no navegador do usuário. Estamos falando de C# no front-end!
[ComponentRenderMode(WebComponentRenderMode.WebAssembly)]
E se você quiser que o modo de renderização seja definido automaticamente, basta usar:
[ComponentRenderMode(WebComponentRenderMode.Auto)]
Nesse caso ele vai decidir entre paginas estáticas, Blazor WebAssembly ou Blazor Server.
Conclusão
O projeto ainda está em fase de protótipo e não está disponível pra uso, você pode conferir o vídeo do Steve Sanderson apresentando a ideia.
Com o Blazor United, sua aplicação pode inicialmente retornar páginas estáticas HTML que serão carregadas rapidamente (MPA). Quando o usuário acessar um formulário, uma conexão Web Socket será criada para transferir HTML e tornar aquele formulário mais interativo como uma SPA. Na próxima vez que o usuário interagir com a página, ela rodará C# diretamente via WebAssembly, sem a necessidade de abrir um socket.
O Blazor United é uma solução versátil e flexível que permite o uso de MPA e SPA em um único aplicativo web.