Interatividade Blazor

Blazor permite que você envie um portal em um dos três modos de interatividade — Servidor, WebAssembly ou Auto. O modo escolhe como os componentes interativos rodam (por uma conexão SignalR no servidor, como compilado em .NET no navegador, ou ambos) e decide o que é gerado no layout do seu projeto. Power Portals Pro roda corretamente em todos os três; As diferenças estão na forma de implantação e na fiação do projeto, não nas características do framework.

Os Três Modos

Servidor

Componentes interativos são executados no servidor. Cada usuário conectado mantém uma conexão SignalR aberta de volta ao host, e cada evento da interface faz ida e volta ao servidor.

Concessões:

WebAssembly

Componentes interativos rodam no navegador como código compilado .NET. O trabalho do servidor se reduz a servir arquivos estáticos e os endpoints da API HTTP do framework sob /api/auth/* e /api/*.

Concessões:

Auto

A primeira pintura vem do servidor (para que o usuário veja o conteúdo imediatamente) e o runtime muda transparentemente para o WebAssembly assim que o pacote cliente termina de baixar. Auto = Servidor primeiro, WebAssembly depois, nas mesmas rotas.

Concessões:

Dica

Este site de documentação roda no modo Auto. Abra a aba de rede das ferramentas de desenvolvimento do navegador na primeira carga e você verá o HTML renderizado pelo servidor chegar primeiro, depois o fluxo do pacote WASM em um ou dois segundos — após o que as navegações param de acessar o servidor para HTML.

Qual escolher

Regras básicas quando não há uma restrição específica que força uma escolha:

Guia de Dicas

O que muda entre os três modos, arquivo por arquivo. Use isso como referência ao comparar um projeto gerado com um dos templates, ou ao buscar uma discrepância após uma troca manual.

Layout do Projeto

Os três modos geram um projeto host de servidor E um projeto irmão .Client . O que difere é o .ClientSDK de 's e se ele realmente foi compilado para um bundle WebAssembly.

.csproj Diferenças

O .Client SDK do projeto muda, e os pacotes de framework específicos do WebAssembly só aparecem quando o host realmente executa o WASM:

Referências adicionais de pacotes quando o WebAssembly ou Auto está ativo:

Server Program.cs — Registro de Serviços

AddRazorComponents() Seleciona os pares de componentes apropriados do modo de renderização com base nos métodos do construtor que estão encadeados:

Server Program.cs — Mapeamento de Endpoints

MapRazorComponents<App>() encadeia os endpoints correspondentes do modo de renderização:

App.razor — Política de Renderização por Rota

O PageRenderMode getter em App.razor decide qual renderizador cada rota usa. Os hosts de servidor retornam servidor em todos os lugares; Hosts WebAssembly e Auto precisam fixar explicitamente as /Account/* rotas para que o WASM apenas IAuthService resolva:

Por que /Conta/* está fixada

A primeira pintura do Auto roda no renderizador do servidor, mas as páginas IAuthService da conta só são registradas no gráfico DI do cliente WASM. Sem o pin explícito em InteractiveWebAssemblyRenderMode(prerender: false), um host automático falha em resolver [Inject] IAuthService na pré-renderização da sessão fria. prerender: false pula completamente a etapa de pré-renderização do lado do servidor, então a página renderiza apenas uma vez, no runtime WASM.

. Cliente/Program.cs — Somente quando interativo

Hosts apenas de servidor não têm .Client/Program.cs nenhum (é .Client uma biblioteca de classes Razor). Os hosts WebAssembly e Auto incluem este arquivo, que configura o runtime do WASM, registra o HttpClient encaminhamento com credenciais de cookies, registra os serviços clientes WASM do Power Portals Pro e faz pré-busca para a localização transversal no início:

Páginas de Identidade / Conta

Power Portals Pro vem com dois conjuntos paralelos de páginas de Conta — um para cada contexto de renderização. Qual conjunto está no seu projeto depende do modo do host:

Próximos Passos

Se você já tem um projeto em um modo e quer converter para outro, veja a página Switch Blazor Interactivity para as alterações arquivo a arquivo.