Blazor modelos de hospedagem de aplicativos
Gorjeta
Este conteúdo é um excerto do eBook, Blazor para ASP NET Web Forms Developers for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.
Blazor Os aplicativos podem ser hospedados de uma das seguintes maneiras:
- Lado do cliente no navegador em WebAssembly.
- Lado do servidor em um aplicativo ASP.NET Core.
BlazorWebAssembly Aplicativos
BlazorWebAssembly os aplicativos são executados diretamente no navegador em um tempo de WebAssemblyexecução .NET baseado em . BlazorWebAssembly os aplicativos funcionam de maneira semelhante às estruturas JavaScript front-end, como Angular ou React. No entanto, em vez de escrever JavaScript, você escreve C#. O tempo de execução do .NET é baixado com o aplicativo junto com o assembly do aplicativo e quaisquer dependências necessárias. Não são necessários plugins ou extensões do navegador.
Os assemblies baixados são assemblies .NET normais, como você usaria em qualquer outro aplicativo .NET. Como o tempo de execução oferece 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 tempo de execução 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 da interface do usuário com base na saída renderizada dos componentes. As atualizações do DOM são então aplicadas.
BlazorWebAssembly os aplicativos são executados exclusivamente do lado do cliente. Esses aplicativos podem ser implantados em soluções de hospedagem de site estático, como Páginas GitHub ou Hospedagem de Site Estático do Azure. O .NET não é necessário no servidor. A vinculação direta a partes do aplicativo normalmente requer uma solução de roteamento no servidor. A solução de roteamento redireciona as solicitações para a raiz do aplicativo. Por exemplo, esse redirecionamento pode ser tratado usando regras de reconfiguração de URL no IIS.
Para obter todos os benefícios do Blazor desenvolvimento web .NET full-stack, hospede seu BlazorWebAssembly aplicativo com o ASP.NET Core. Usando o .NET no cliente e no servidor, você pode facilmente compartilhar 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 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 roteamento de fallback já configurado.
Blazor Aplicativos de servidor
Lembre-se da discussão de arquitetura que Blazor osBlazorcomponentes renderizam sua saída para uma abstração intermediária chamada RenderTree
. Em Blazor seguida, a estrutura compara o que foi renderizado com o que foi renderizado anteriormente. As diferenças são aplicadas ao DOM. Blazor Os componentes são dissociados de como sua saída renderizada é aplicada. Consequentemente, os componentes em si não precisam ser executados no mesmo processo que o processo de atualização da interface do usuário. Na verdade, eles nem precisam rodar na mesma máquina.
Em Blazor aplicativos de servidor, os componentes são executados no servidor em vez de no lado do cliente no navegador. Os eventos da 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 componentes corretas. Os componentes são renderizados e a comparação calculada da interface do usuário é serializada e enviada para o navegador onde é aplicada ao DOM.
O Blazor modelo de hospedagem de servidor pode parecer familiar se você tiver usado ASP.NET AJAX e o UpdatePanel controle. O UpdatePanel
controle lida com a aplicação de atualizações parciais de página em resposta a eventos de gatilho na página. Quando acionado, o UpdatePanel
solicita uma atualização parcial e, em seguida, aplica-o sem a necessidade de atualizar a página. O estado da interface do usuário é gerenciado usando ViewState
o . Blazor Os aplicativos de servidor são ligeiramente diferentes, pois 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 certo Blazor
Conforme descrito nos documentos do Blazor modelo de hospedagem, os diferentes Blazor modelos de hospedagem têm compensações diferentes.
O BlazorWebAssembly modelo de hospedagem tem os seguintes benefícios:
- Não há dependência do lado do servidor .NET. O aplicativo está funcionando plenamente 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, servir o aplicativo a partir de uma CDN).
As desvantagens do BlazorWebAssembly modelo de hospedagem são:
- Os recursos do navegador restringem o aplicativo.
- É necessário hardware e software de cliente capazes (por exemplo, WebAssembly suporte).
- O tamanho do download é maior e os aplicativos levam mais tempo para carregar.
- O suporte ao tempo de execução e às ferramentas do .NET é menos maduro. Por exemplo, há limitações no suporte e depuração do .NET Standard .
Por outro lado, o modelo de hospedagem de Blazor servidor oferece os seguintes benefícios:
- O tamanho do download é muito menor do que um aplicativo do lado do cliente, e o aplicativo carrega muito mais rápido.
- O aplicativo aproveita ao máximo os recursos do servidor, incluindo o uso de qualquer API compatível com .NET.
- O .NET no servidor é usado para executar o aplicativo, portanto, as ferramentas .NET existentes, como depuração, funcionam conforme o esperado.
- Os terminais-clientes magros são suportados. Por exemplo, as aplicações do lado do servidor funcionam com browsers que não suportam WebAssembly e em dispositivos com recursos limitados.
- A base de código .NET/C# do aplicativo, incluindo o código do componente do aplicativo, não é servida aos clientes.
As desvantagens do modelo de hospedagem de Blazor servidor são:
- Maior latência da interface do usuário. 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 para de funcionar.
- A escalabilidade é um desafio para aplicativos com muitos usuários. O servidor deve gerenciar várias conexões de cliente e manipular o estado do cliente.
- É necessário um servidor ASP.NET Core para servir a aplicação. Cenários de implantação sem servidor não são possíveis. Por exemplo, não é possível servir a aplicação a partir de uma CDN.
A lista anterior de compensações pode ser intimidante, mas seu modelo de hospedagem pode ser alterado posteriormente. 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 hospedando modelos agnósticos. As abstrações permitem que seu aplicativo adote mais facilmente um modelo de hospedagem diferente.
Implante seu aplicativo
ASP.NET aplicativos Web Forms geralmente são hospedados no IIS em uma máquina Windows Server ou cluster. Blazor Os aplicativos também podem:
- Ser 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 Nginx ou Apache no Linux. Para obter mais informações sobre como publicar e implantar Blazor aplicativos, consulte a documentação de Blazorhospedagem e implantação .
Na próxima seção, veremos como os projetos para BlazorWebAssembly e Blazor os aplicativos de servidor são configurados.