Compartilhar via


Blazor modelos de hospedagem de aplicativos

Dica

Esse conteúdo é um trecho do livro eletrônico, Blazor para Desenvolvedores do ASP NET Web Forms para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

BlazorImagem em miniaturada da capa do livro eletrônico para-Desenvolvedores-do-ASP-NET-Web-Forms.

Blazor os aplicativos podem ser hospedados de uma das seguintes maneiras:

  • No lado do cliente no navegador em WebAssembly.
  • Do lado do servidor em um aplicativo ASP.NET Core.

Blazor WebAssembly aplicativos

Os aplicativos BlazorWebAssembly são executados diretamente no navegador em um runtime do .NET baseado em WebAssembly. Blazor WebAssembly os aplicativos funcionam de maneira semelhante às estruturas JavaScript de front-end, como Angular ou React. No entanto, em vez de escrever JavaScript, você escreve C#. O runtime do .NET é baixado com o aplicativo junto com o assembly do aplicativo e as dependências necessárias. Não são necessários plug-ins ou extensões do navegador.

Os assemblies baixados são assemblies .NET normais, como você usaria em qualquer outro aplicativo .NET. Como o runtime dá suporte ao .NET Standard, você pode usar bibliotecas existentes do .NET Standard com seu BlazorWebAssembly aplicativo. No entanto, esses assemblies ainda serão executados na área restrita de segurança do navegador. Algumas funcionalidades podem gerar um PlatformNotSupportedException, como tentar acessar o sistema de arquivos ou abrir conexões de rede arbitrárias.

Quando o aplicativo é carregado, o runtime do .NET é iniciado e apontado para o assembly do aplicativo. A lógica de inicialização do aplicativo é executada e os componentes raiz são renderizados. Blazor calcula as atualizações de interface do usuário com base na saída renderizada dos componentes. As atualizações do DOM são então aplicadas.

Blazor WebAssembly

Blazor WebAssembly os aplicativos são executados puramente no lado do cliente. Esses aplicativos podem ser implantados em soluções de hospedagem de sites estáticos, como Páginas do GitHub ou Hospedagem de Sites Estáticos do Azure. O .NET não é necessário no servidor. A vinculação profunda a partes do aplicativo normalmente requer uma solução de roteamento no servidor. A solução de roteamento redireciona solicitações para a raiz do aplicativo. Por exemplo, esse redirecionamento pode ser tratado usando regras de regravação de URL no IIS.

Para obter todos os benefícios do desenvolvimento web completo com .NET, hospede seu BlazorBlazor aplicativo com ASP.NET Core. Usando o .NET no cliente e no servidor, você pode compartilhar facilmente o código e criar seu aplicativo usando um conjunto consistente de linguagens, estruturas e ferramentas. Blazor fornece modelos convenientes para configurar uma solução que contém um BlazorWebAssembly aplicativo e um projeto de host do ASP.NET Core. Quando a solução é criada, os arquivos estáticos criados do Blazor aplicativo são hospedados pelo aplicativo ASP.NET Core com o roteamento de fallback já configurado.

Blazor Aplicativos de servidor

Lembre-se da discussão sobre a Blazor arquitetura de que os componentes Blazor renderizam sua saída para uma abstração intermediária chamada RenderTree. Então, o Blazor framework compara o que foi renderizado com o que foi renderizado anteriormente. As diferenças são aplicadas ao DOM. Os componentes de Blazor são dissociados de como a saída renderizada é aplicada. Consequentemente, os próprios componentes não precisam ser executados no mesmo processo que o processo de atualização da interface do usuário. Na verdade, eles nem precisam ser executados no mesmo computador.

Em Blazor aplicativos de servidor, os componentes são executados no servidor em vez do lado do cliente no navegador. Os eventos de interface do usuário que ocorrem no navegador são enviados ao servidor por meio de uma conexão em tempo real. Os eventos são enviados para as instâncias de componente corretas. Os componentes são renderizados, e a diferença da interface do usuário calculada é serializada e enviada para o navegador em que ela é aplicada ao DOM.

Blazor Servidor

O modelo de hospedagem do Blazor servidor pode parecer familiar se você tiver usado o ASP.NET AJAX e o controle UpdatePanel. O controle UpdatePanel manipula a aplicação de atualizações parciais de página em resposta a eventos de gatilho na página. Quando disparada, a UpdatePanel solicita uma atualização parcial e, em seguida, aplica-a sem a necessidade de atualizar a página. O estado da interface do usuário é gerenciado usando ViewState. Blazor Os aplicativos de servidor são ligeiramente diferentes porque o aplicativo requer uma conexão ativa com o cliente. Além disso, todo o estado da interface do usuário é mantido no servidor. Além dessas diferenças, os dois modelos são conceitualmente semelhantes.

Como escolher o modelo de hospedagem correto Blazor

Conforme descrito nos documentos de modelo de hosting do Blazor, os diferentes modelos de hosting do Blazor têm diferentes compensações.

O BlazorWebAssembly modelo de hospedagem tem os seguintes benefícios:

  • Não há nenhuma dependência do lado do servidor .NET. O aplicativo está funcionando totalmente depois de baixado para o cliente.
  • Os recursos e as capacidades do cliente são totalmente aproveitados.
  • O trabalho é descarregado do servidor para o cliente.
  • Um servidor Web ASP.NET Core não é necessário para hospedar o aplicativo. Cenários de implantação sem servidor são possíveis (por exemplo, atendendo o aplicativo de uma CDN).

As desvantagens do BlazorWebAssembly modelo de hospedagem são:

  • Os recursos do navegador restringem o aplicativo.
  • Hardware e software do cliente compatíveis (por exemplo, suporte ao WebAssembly) são necessários.
  • O tamanho do download é maior e os aplicativos demoram mais para serem carregados.
  • O suporte a runtime e ferramentas do .NET é menos maduro. Por exemplo, há limitações no suporte e na depuração do .NET Standard.

Por outro lado, o modelo de hospedagem do Blazor servidor oferece os seguintes benefícios:

  • O tamanho do download é muito menor do que um aplicativo do lado do cliente e o aplicativo é carregado muito mais rápido.
  • O aplicativo aproveita ao máximo os recursos do servidor, incluindo o uso de qualquer APIs compatíveis com .NET.
  • O .NET no servidor é usado para executar o aplicativo, portanto, as ferramentas .NET existentes, como depuração, funcionam conforme o esperado.
  • Há suporte para clientes finos. Por exemplo, os aplicativos do lado do servidor funcionam com navegadores que não dão suporte WebAssembly e em dispositivos restritos a recursos.
  • A base de código .NET/C# do aplicativo, incluindo o código de componente do aplicativo, não é fornecida aos clientes.

As desvantagens para o modelo de hospedagem do Blazor servidor são:

  • Maior latência na interface do usuário (UI). Cada interação do usuário envolve um salto de rede.
  • Não há suporte offline. Se a conexão do cliente falhar, o aplicativo deixará de funcionar.
  • A escalabilidade é um desafio para aplicativos com muitos usuários. O servidor deve gerenciar várias conexões de cliente e lidar com o estado do cliente.
  • Um servidor ASP.NET Core é necessário para atender ao aplicativo. Cenários de implantação sem servidor não são possíveis. Por exemplo, você não pode servir o aplicativo de uma CDN.

A lista anterior de compensações pode ser intimidante, mas seu modelo de hospedagem pode ser alterado mais tarde. Independentemente do Blazor modelo de hospedagem selecionado, o modelo de componente é o mesmo. Em princípio, os mesmos componentes podem ser usados com qualquer modelo de hospedagem. O código do seu aplicativo não é alterado; no entanto, é uma boa prática introduzir abstrações para que seus componentes permaneçam agnósticos em relação ao modelo. As abstrações permitem que seu aplicativo adote mais facilmente um modelo de hospedagem diferente.

Implantar seu aplicativo

Aplicativos ASP.NET Web Forms são normalmente hospedados no IIS em uma máquina ou cluster do Windows Server. Blazor os aplicativos também podem:

  • Seja hospedado no IIS, como arquivos estáticos ou como um aplicativo ASP.NET Core.
  • Aproveite a flexibilidade do ASP.NET Core para ser hospedado em várias plataformas e infraestruturas de servidor. Por exemplo, você pode hospedar um Blazor aplicativo usando o Nginx ou o Apache no Linux. Para obter mais informações sobre como publicar e implantar Blazor aplicativos, consulte a Blazor documentação de hospedagem e implantação.

Na próxima seção, examinaremos como os projetos para os aplicativos de servidor Blazor, WebAssembly e Blazor são configurados.