ASP.NET Core Blazor Hybrid
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.
Advertência
Esta versão do ASP.NET Core não é mais suportada. Para obter mais informações, consulte a Política de suporte do .NET e .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Importante
Estas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.
Para a versão atual, consulte a versão .NET 9 deste artigo.
Este artigo explica ASP.NET Core Blazor Hybrid, uma maneira de criar uma interface do usuário da Web interativa do lado do cliente com o .NET em um aplicativo ASP.NET Core.
Use Blazor Hybrid para misturar estruturas de cliente nativo de desktop e móvel com .NET e Blazor.
Em um aplicativo Blazor Hybrid, os componentes Razor executam nativamente no dispositivo. Os componentes são renderizados para o controlo Web View incorporado através de um canal de interoperabilidade local. Os componentes não são executados no navegador e o WebAssembly não está envolvido. Razor componentes carregam e executam código rapidamente, e os componentes têm acesso total aos recursos nativos do dispositivo por meio da plataforma .NET. Os estilos de componentes renderizados em um Web View dependem da plataforma e podem exigir que você leve em conta as diferenças de renderização entre plataformas usando folhas de estilo personalizadas.
Blazor Hybrid artigos abordam assuntos relacionados com a integração de componentes Razor em frameworks de cliente nativos.
Blazor Hybrid aplicativos com o .NET MAUI
O suporte
Blazor Hybrid aplicativos com WPF e Windows Forms
Blazor Hybrid aplicações podem ser desenvolvidas com Windows Presentation Foundation (WPF) e Windows Forms.
Blazor fornece controles BlazorWebView
para ambas as estruturas (WPF BlazorWebView
, Windows Forms BlazorWebView
).
Razor componentes são executados nativamente na área de trabalho do Windows e são renderizados num Web Viewincorporado. O uso do Blazor no WPF e no Windows Forms permite que você adicione uma nova interface do usuário aos aplicativos de área de trabalho existentes do Windows que podem ser reutilizados em plataformas com .NET MAUI ou na Web.
Web View configuração
Blazor Hybrid expõe a configuração de Web View subjacente para diferentes plataformas através de eventos do controle BlazorWebView
:
-
BlazorWebViewInitializing
fornece acesso às configurações usadas para criar o Web View em cada plataforma, se as configurações estiverem disponíveis. -
BlazorWebViewInitialized
fornece acesso ao Web View para permitir a configuração adicional das configurações.
Use os padrões preferidos em cada plataforma para anexar manipuladores de eventos aos eventos para executar seu código personalizado.
Documentação da API:
- .NET MAUI
- WPF
- Formulários do Windows
Exceções não tratadas em aplicativos Windows Forms e WPF
Esta seção só se aplica aos aplicativos Windows Forms e WPF Blazor Hybrid.
Crie um callback para UnhandledException
na propriedade System.AppDomain.CurrentDomain. O exemplo a seguir usa uma diretiva de compilador para exibir um MessageBox que alerta o usuário de que ocorreu um erro ou mostra as informações de erro para o desenvolvedor. Registe as informações de erro no error.ExceptionObject
.
AppDomain.CurrentDomain.UnhandledException += (sender, error) =>
{
#if DEBUG
MessageBox.Show(text: error.ExceptionObject.ToString(), caption: "Error");
#else
MessageBox.Show(text: "An error has occurred.", caption: "Error");
#endif
// Log the error information (error.ExceptionObject)
};
Globalização e localização
Esta secção aplica-se apenas a aplicações .NET MAUIBlazor Hybrid.
.NET MAUI configura o CurrentCulture e CurrentUICulture com base nas informações ambientais do dispositivo.
IStringLocalizer e outras API no namespace Microsoft.Extensions.Localization geralmente funcionam conforme o esperado, juntamente com a formatação, análise e ligação relacionadas à globalização, que dependem da cultura do utilizador.
Quando se altera dinamicamente a cultura da aplicação em tempo de execução, a aplicação deve ser recarregada para refletir a alteração na cultura, o que cuida de renderizar novamente o componente raiz e passar a nova cultura para os componentes filho já renderizados novamente.
O sistema de recursos do .NET suporta a incorporação de imagens localizadas (como blobs) numa aplicação, mas Blazor Hybrid não pode exibir as imagens incorporadas nos componentes Razor neste momento. Mesmo que um usuário leia os bytes de uma imagem em um Stream usando ResourceManager, a estrutura atualmente não suporta a renderização da imagem recuperada em um componente Razor.
Para obter mais informações, consulte os seguintes recursos:
- Localização (.NET MAUI documentação)
- Blazor componente de imagem para exibir imagens que não são acessíveis por meio de endpoints HTTP (dotnet/aspnetcore #25274)
Aceder a serviços definidos a partir da interface de utilizador nativa
BlazorWebView tem um método TryDispatchAsync que chama um Action<ServiceProvider>
especificado de forma assíncrona e passa os serviços delimitados disponíveis nos componentes de Razor. Isso permite que o código da interface do utilizador nativa aceda a serviços com escopo, como NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Quando wasDispatchCalled
estiver false
, considere o que fazer se a chamada não tiver sido enviada. Normalmente, o despacho não deveria falhar. Se falhar, os recursos do SO poderão esgotar-se. Se os recursos estiverem esgotados, considere registrar uma mensagem, lançar uma exceção e talvez alertar o usuário.