Série Boas Práticas .NET em Produção • FoundryShip Cloud
Blazor Server vs Blazor WebAssembly: qual modelo faz mais sentido para o seu projeto?
A partir do .NET 8, a pergunta “Blazor Server ou Blazor WebAssembly?” evoluiu para: qual modo de renderização do Blazor Web App usar em cada página e componente? Você pode renderizar tudo no servidor, no navegador ou combinar os dois.
Este guia resume, em linguagem prática, os modos de renderização do Blazor Web App e como escolher entre Server estático, Server interativo, WebAssembly interativo e Interactive Auto para aplicações em produção — inclusive rodando em clouds especializadas como a FoundryShip.
1. O motor Razor e os modos de renderização do Blazor Web App
Blazor é o modelo de UI da ASP.NET Core baseado em componentes Razor. Cada componente é um arquivo .razor que mistura HTML e C#, e é compilado em uma classe .NET que constrói uma árvore de elementos de interface.
O motor Razor gera código C# fortemente tipado para cada componente. Em tempo de execução, o framework compara a árvore de renderização atual com a anterior e aplica apenas as diferenças no DOM – semelhante a um “virtual DOM”, mas com a infraestrutura do .NET por trás.
A partir do Blazor Web App (.NET 8+), entra um conceito central: modo de renderização. Ele define onde o componente roda e como a interatividade é entregue:
- Renderização estática no servidor – HTML é gerado no servidor, enviado e pronto. Sem interatividade Blazor.
- Interactive Server – o HTML é prerenderizado no servidor e a interatividade é habilitada via SignalR.
- Interactive WebAssembly – HTML inicial vem do servidor, mas a interatividade roda no navegador via WebAssembly.
- Interactive Auto – começa no servidor e tenta usar WebAssembly; se não puder, cai para o modo server interativo.
Esses modos podem ser aplicados no nível da aplicação (em App.razor) ou por componente, com a diretiva @rendermode, o que permite misturar estratégias na mesma aplicação.
@page "/filmes"
@rendermode InteractiveServer
Filmes em destaque
@if (movies is null)
{
<p>Carregando...</p>
}
else
{
<ul>
@foreach (var movie in movies)
{
<li>@movie.Title (@movie.Year)</li>
}
</ul>
}
@code {
private List<Movie>? movies;
protected override async Task OnInitializedAsync()
=> movies = await MovieService.GetLatestAsync();
}
O mesmo componente pode ser renderizado como página estática, como UI interativa no servidor ou como UI interativa no navegador — basta trocar o @rendermode e ajustar a arquitetura.
Entre para a lista de Founders
Quer ser avisado quando liberarmos o link de compra no dia 01/03/2026 e ter prioridade para uma das 60 vagas Founders a R$ 59,90/mês (pagamento anual)? Deixe seu e-mail abaixo. Sem spam, só os avisos importantes sobre o lançamento.
Você pode cancelar o recebimento a qualquer momento.
2. Renderização no servidor: estática vs Interactive Server
2.1 Server estático – páginas rápidas, sem interatividade Blazor
No modo estático, o Blazor gera HTML no servidor e envia para o navegador. Não há conexão em tempo real nem acompanhamento de estado da UI. A página se comporta como um site Razor tradicional: ótima para SEO, landing pages, artigos e telas públicas.
- Sem circuito Blazor – menor consumo de memória no servidor.
- Excelente para conteúdo (marketing, blog, documentação).
- Perfeito para combinar com componentes interativos pontuais em outras rotas.
2.2 Interactive Server – experiência de app de desktop, código no servidor
No modo Interactive Server, o componente é prerenderizado no servidor e depois se conecta por SignalR. A UI permanece no navegador, mas toda lógica de componente e estado vivem no servidor, dentro de um “circuito” por usuário.
- Download inicial leve – apenas HTML/CSS/JS mínimos.
- Estado da UI no servidor – ideal para regras de negócio pesadas.
- Debug no backend – você depura o fluxo completo em C# no servidor.
- Depende de conexão estável entre cliente e data center.
@page "/dashboard"
@rendermode InteractiveServer
Painel do escritório
<Counter /> @* componente interativo no servidor *@
Em uma cloud como a FoundryShip, isso significa dimensionar bem o cluster para suportar o número de circuitos simultâneos por tenant: quantidade de conexões WebSocket, memória e CPU disponíveis para cada app Blazor Server.
Uma combinação comum é: páginas públicas estáticas (marketing, site) e área logada em Interactive Server para telas de ERP, jurídico, financeiro e outros backoffices internos.
3. Interactive WebAssembly: a UI .NET rodando no navegador
No modo Interactive WebAssembly, o runtime .NET, as DLLs da aplicação e os componentes Razor são baixados para o navegador. O HTML inicial ainda pode ser prerenderizado no servidor, mas a interatividade passa a rodar dentro do browser, em WebAssembly.
- Primeiro carregamento maior – o usuário baixa runtime + assemblies.
- Depois disso, as interações acontecem localmente, com menos impacto de latência.
- O servidor fica focado em APIs, banco e cache, o que ajuda a escalar.
- Permite cenários com funcionalidade offline usando cache e storage local.
@page "/analytics"
@rendermode InteractiveWebAssembly
Dashboard interativo
<ChartsComponent Data="AnalyticsData" />
Em aplicações B2C com muitos usuários (portais de clientes, e-commerce, SaaS público), esse modelo geralmente reduz o custo de CPU por usuário no servidor, já que parte do trabalho é feito no dispositivo do cliente.
Rodando na FoundryShip, você dimensiona principalmente os serviços de API (compute, PostgreSQL, Redis, mensageria) e muito menos o número de conexões persistentes por usuário.
4. Interactive Auto e modelos híbridos no Blazor Web App
O modo Interactive Auto combina o melhor dos mundos: o componente é prerenderizado no servidor e, depois, o runtime decide se a interatividade vai rodar em WebAssembly ou em Server, dependendo do ambiente do usuário.
- Fallback inteligente – se o navegador não suportar WebAssembly adequadamente, o app pode cair para Interactive Server.
- Experiência consistente – você mantém a mesma base de componentes, mas adapta a execução ao contexto do usuário.
- Excelente para apps com público muito diverso (desktop corporativo, mobile, navegadores antigos).
@page "/app"
@rendermode InteractiveAuto
<LayoutPrincipal>
<Outlet />
</LayoutPrincipal>
Na prática, você pode montar uma estratégia híbrida:
Páginas e modos sugeridos
- Landing pages e blog: Server estático.
- Área administrativa interna: Interactive Server.
- Dashboards ricos para clientes: Interactive WebAssembly.
- App público heterogêneo: Interactive Auto.
O que você otimiza em cada um
- Server estático: SEO e performance de primeiro load.
- Interactive Server: produtividade do time .NET e regras de negócio no backend.
- Interactive WASM: escala por usuário e responsividade da UI.
- Interactive Auto: experiência consistente em ambientes variados.
Na FoundryShip, você pode experimentar esses modos em ambientes separados (dev, homolog, produção), medir consumo de recursos por render mode e, depois, padronizar a arquitetura que faz mais sentido para o seu SaaS.
Entre para a lista de Founders
Quer ser avisado quando liberarmos o link de compra no dia 01/03/2026 e ter prioridade para uma das 60 vagas Founders a R$ 59,90/mês (pagamento anual)? Deixe seu e-mail abaixo. Sem spam, só os avisos importantes sobre o lançamento.
Você pode cancelar o recebimento a qualquer momento.