ASP.NET Core Blazor Hybrid

Nota

Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 10 di questo articolo.

Avviso

Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i Criteri di supporto per .NET e .NET Core. Per la versione corrente, vedere la versione .NET 10 di questo articolo.

Questo articolo illustra ASP.NET Core Blazor Hybrid, un modo per creare un'interfaccia utente Web sul lato client interattiva con .NET in un'app ASP.NET Core.

Usare Blazor Hybrid per integrare framework client nativi desktop e per dispositivi mobili con .NET e Blazor.

In un'app Blazor Hybrid i componenti di Razor vengono eseguiti in modo nativo nel dispositivo. I componenti eseguono il rendering in un controllo Web View incorporato tramite un canale di interoperabilità locale. I componenti non vengono eseguiti nel browser e WebAssembly non è coinvolto. Razor componenti caricano ed eseguono il codice rapidamente e hanno accesso completo alle funzionalità native del dispositivo tramite la piattaforma .NET. Gli stili dei componenti di cui viene eseguito il rendering in un Web View sono dipendenti dalla piattaforma e possono richiedere di tenere conto delle differenze di rendering tra le piattaforme usando fogli di stile personalizzati.

Blazor Hybrid articoli trattano argomenti relativi all'integrazione dei Razor componenti nei framework client nativi.

app Blazor Hybrid con .NET MAUI

Il supporto di Blazor Hybrid è integrato nel framework .NET Multi-platform App UI (.NET MAUI). .NET MAUI include il controllo BlazorWebView che consente il rendering dei componenti di Razor in una Web View incorporata. Usando .NET MAUI e Blazor insieme, è possibile riutilizzare un set di componenti dell'interfaccia utente web su mobile, desktop e web.

App Blazor Hybrid con macchine virtuali Windows e Windows Form

Le app Blazor Hybrid possono essere sviluppate con Windows Presentation Foundation (macchine virtuali Windows) e Windows Form. Blazorfornisce BlazorWebView controlli per entrambi questi framework (macchine virtuali Windows BlazorWebView, Windows Forms BlazorWebView). Razor componenti vengono eseguiti in modo nativo nel desktop Windows ed eseguono il rendering in una Web View incorporata. L'uso di Blazor in macchine virtuali Windows e Windows Form consente di aggiungere una nuova interfaccia utente alle app desktop Windows esistenti, che può essere riutilizzata nelle diverse piattaforme con .NET MAUI o sul Web.

Web View configurazione

Blazor Hybrid espone la configurazione sottostante di Web View per piattaforme diverse attraverso gli eventi del controllo BlazorWebView:

  • BlazorWebViewInitializing consente di accedere alle impostazioni usate per creare la Web View in ogni piattaforma, se le impostazioni sono disponibili.
  • BlazorWebViewInitialized fornisce l'accesso alla Web View per consentire un'ulteriore configurazione delle impostazioni.

Usare i pattern preferiti in ogni piattaforma per collegare i gestori di eventi agli eventi per eseguire il codice personalizzato.

Documentazione dell'API:

Eccezioni non gestite nelle app Windows Form e macchine virtuali Windows

Questa sezione si applica solo alle app Windows Form e macchine virtuali WindowsBlazor Hybrid.

Crea un callback per UnhandledException sulla proprietà System.AppDomain.CurrentDomain. Nell'esempio seguente viene utilizzata una direttiva del compilatore per visualizzare MessageBox che avvisa l'utente che si è verificato un errore o che mostra le informazioni sull'errore per lo sviluppatore. Registrare le informazioni sull'errore in 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)
};

Globalizzazione e localizzazione

Questa sezione si applica solo alle .NET MAUIBlazor Hybrid app.

.NET MAUI configura CurrentCulture e CurrentUICulture in base alle informazioni di ambiente del dispositivo.

IStringLocalizer e altre API nel namespace Microsoft.Extensions.Localization funzionano in genere come previsto, insieme alla formattazione della globalizzazione, all'analisi e al binding che si basa sulle impostazioni cultura dell'utente.

Quando si modificano dinamicamente le impostazioni cultura dell'app in fase di esecuzione, l'app deve essere ricaricata per riflettere la modifica delle impostazioni cultura, che si occupa di eseguire il rendering del componente radice e di passare le nuove impostazioni cultura ai componenti figlio nuovamente renderizzati.

. Il sistema di risorse di .NET supporta l'incorporamento di immagini localizzate (come BLOB) in un'app, ma Blazor Hybrid non può visualizzare le immagini incorporate nei Razor componenti in questo momento. Anche se un utente legge i byte di un'immagine in un Stream oggetto usando ResourceManager, il framework attualmente non supporta il rendering dell'immagine recuperata in un Razor componente.

Per ulteriori informazioni, vedi le seguenti risorse:

Accedere ai servizi con ambito definito dall'interfaccia utente nativa

BlazorWebView dispone di un TryDispatchAsync metodo che chiama un metodo specificato Action<ServiceProvider> in modo asincrono e passa i servizi con ambito disponibili nei Razor componenti. In questo modo il codice dell'interfaccia utente nativa può accedere ai servizi con ambito definito quali 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 è false, considerare cosa fare se la chiamata non è stata instradata. In genere, il dispatch non dovrebbe fallire. Se fallisce, le risorse del sistema operativo potrebbero essere esaurite. Se le risorse sono esaurite, prendere in considerazione la registrazione di un messaggio, la generazione di un'eccezione e, ad esempio, l'avviso dell'utente.