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.
Top comments (4)
Cara isso é incrível, muito obrigado por compartilhar esse conteúdo, não fazia ideia que algo assim estava sendo criado!
Sabe se o modo
WebComponentRenderMode.Auto
tem alguma lógica por trás? Por exemplo, será que ele identifica que o componente não vai precisar de live updates aí ele gera server side, mas caso contrário ele gera webassembly?Muito obrigado pelo feedback! Então acredito que ele sempre inicia como Blazor Server por ter uma inicialização mais rápida, só que em background ele realiza o download do Blazor WebAssembly, na segunda vez que o usuário acessa a mesma pagina ele já usa o WebAssembly e não abre mais uma conexão via web socket.
Adorei, muito bom André 👏👏
Muito obrigado pelo feedback!