Compartilhar via


modelos de hospedagem de aplicativo Blazor

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.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

É possível hospedar aplicativos Blazor de uma das seguintes maneiras:

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

Blazoraplicativos WebAssembly

BlazorAplicativos WebAssembly são executados diretamente no navegador em um runtime do .NET baseado em WebAssembly. BlazorOs aplicativos WebAssembly 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 de 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 aplicativo BlazorWebAssembly. No entanto, esses assemblies ainda serão executados na área restrita de segurança do navegador. Algumas funcionalidades podem gerar uma 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. Em seguida, as atualizações do DOM são aplicadas.

Blazor WebAssembly

BlazorOs aplicativos WebAssembly são executados puramente no lado do cliente. Esses aplicativos podem ser implantados em soluções de hospedagem de sites estáticos, como GitHub Pages 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 Blazor e desenvolvimento Web completo do .NET, hospede seu aplicativo BlazorWebAssembly com ASP.NET Core. Ao usar 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 aplicativo BlazorWebAssembly e um projeto host do ASP.NET Core. Quando a solução é criada, os arquivos estáticos criados a partir do aplicativo Blazor são hospedados pelo aplicativo ASP.NET Core com o roteamento de fallback já configurado.

Aplicativos de servidor Blazor

Lembre-se da discussão sobre Blazorarquitetura de que componentes Blazor renderizam a saída para uma abstração intermediária chamada de RenderTree. Na estrutura de Blazor, a estrutura 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.

Nos aplicativos de servidor do Blazor, os componentes são executados no servidor em vez de no lado do cliente no navegador. Eventos de interface do usuário que ocorrem no navegador são enviados para o 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 Server

O modelo de hospedagem do Servidor Blazor pode parecer familiar se você tiver usado 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, 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. Os aplicativos do servidor Blazor 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 do Blazor

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

O modelo de hospedagem WebAssembly do Blazor trazem os seguintes benefícios:

  • Não há dependências do lado do servidor .NET. O aplicativo está funcionando totalmente depois de baixado para o cliente.
  • Os recursos e 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, servindo o aplicativo de uma CDN).

As desvantagens do modelo de hospedagem WebAssembly do Blazor 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 levam mais tempo para serem carregados.
  • O suporte a runtime e a ferramentas é menos maduro. Por exemplo, há limitações no suporte e na depuração do .NET Standard.

Por outro lado, o modelo de hospedagem do Servidor do Blazor 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 rapidamente.
  • O aplicativo aproveita ao máximo os recursos do servidor, incluindo o uso de quaisquer APIs compatíveis com .NET.
  • O .NET no servidor é usado para executar o aplicativo, portanto, as ferramentas .NET existentes, como a 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 a WebAssembly e em dispositivos com restrição de recursos.
  • A base de código .NET/C# do aplicativo, incluindo o código de componente do aplicativo, não é servida aos clientes.

As desvantagens do modelo de hospedagem do Servidor Blazor são:

  • Latência de interface do usuário mais alta. 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 é desafiadora 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 atender ao aplicativo de uma CDN.

A lista anterior de compensações pode ser intimidadora, mas seu modelo de hospedagem pode ser alterado depois. Independentemente do modelo de hospedagem do Blazor 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 aplicativo não é alterado; no entanto, é uma boa prática introduzir abstrações para que seus componentes permaneçam hospedando de forma independente ao modelo. As abstrações permitem que seu aplicativo adote mais facilmente um modelo de hospedagem diferente.

Implante seu aplicativo

Aplicativos ASP.NET Web Forms normalmente são hospedados no IIS em um computador ou cluster do Windows Server. Os aplicativos Blazor também podem:

  • ser hospedados no IIS, seja como arquivos estáticos ou como um aplicativo ASP.NET Core.
  • aproveitar a flexibilidade do ASP.NET Core a ser hospedado em várias plataformas e infraestruturas de servidor. Por exemplo, você pode hospedar um aplicativo Blazor usando Nginx ou Apache no Linux. Para saber mais sobre como publicar e implantar aplicativos Blazor, confira a documentação do Blazor sobre Hospedagem e implantação.

Na próxima seção, veremos como os projetos para aplicativos BlazorWebAssembly e do Servidor Blazor são configurados.