ASP.NET Core Blazor Hybrid
Not
Det här är inte den senaste versionen av den här artikeln. För den aktuella versionen, se .NET 9-versionen av den här artikeln.
Varning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i .NET och .NET Core Support Policy. För den aktuella versionen, se .NET 9-versionen av den här artikeln.
Viktig
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
Den aktuella versionen finns i den .NET 9-versionen av den här artikeln.
I den här artikeln beskrivs ASP.NET Core Blazor Hybrid, ett sätt att skapa interaktivt webbgränssnitt på klientsidan med .NET i en ASP.NET Core-app.
Använd Blazor Hybrid för att blanda skrivbords- och mobilbaserade klientramverk med .NET och Blazor.
I en Blazor Hybrid app Razor komponenter köras internt på enheten. Komponenter renderas till en inbäddad kontrollkomponent Web View via en lokal interop-kanal. Komponenter körs inte i webbläsaren och WebAssembly ingår inte. Razor komponenter läser in och kör kod snabbt, och komponenterna har fullständig åtkomst till enhetens inbyggda funktioner via .NET-plattformen. Komponentformat som återges i en Web View är plattformsberoende och kan kräva att du tar hänsyn till återgivningsskillnader mellan plattformar med hjälp av anpassade formatmallar.
Blazor Hybrid artiklar beskriver ämnen som rör integrering av Razor komponenter i interna klientramverk.
Blazor Hybrid appar med .NET MAUI
Blazor Hybrid stöd är inbyggt i ramverket .NET Multi-platform App UI (.NET MAUI). .NET MAUI innehåller BlazorWebView-kontrollen som gör det möjligt att återge Razor komponenter till en inbäddad Web View. Genom att använda .NET MAUI och Blazor tillsammans kan du återanvända en uppsättning webbgränssnittskomponenter på mobil, stationär dator och på webben.
Blazor Hybrid appar med WPF och Windows Forms
Blazor Hybrid appar kan skapas med Windows Presentation Foundation (WPF) och Windows Forms.
Blazor tillhandahåller BlazorWebView
kontroller för båda dessa ramverk (WPF BlazorWebView
, Windows Forms BlazorWebView
).
Razor-komponenter körs nativt i Windows-skrivbordet och renderas till en inbäddad Web View. Med Blazor i WPF och Windows Forms kan du lägga till nytt användargränssnitt i dina befintliga Windows-skrivbordsappar som kan återanvändas på plattformar med .NET MAUI eller på webben.
Web View-konfiguration
Blazor Hybrid exponerar den underliggande Web View konfigurationen för olika plattformar via händelser i BlazorWebView
-kontrollen:
-
BlazorWebViewInitializing
ger åtkomst till de inställningar som används för att skapa Web View på varje plattform, om inställningarna är tillgängliga. -
BlazorWebViewInitialized
ger åtkomst till Web View för att tillåta ytterligare konfiguration av inställningarna.
Använd önskade mönster på varje plattform för att koppla händelsehanterare till händelserna för att köra din anpassade kod.
API-dokumentation:
- .NET MAUI
- WPF
- Windows-formulär
Ohanterade undantag i Windows Forms- och WPF-appar
Det här avsnittet gäller endast för Windows Forms- och WPF-Blazor Hybrid-appar.
Skapa ett återanrop för UnhandledException
på egenskapen System.AppDomain.CurrentDomain. I följande exempel används ett kompilatordirektiv för att visa en MessageBox som antingen varnar användaren om att ett fel har inträffat eller visar felinformationen för utvecklaren. Logga felinformationen i 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)
};
Globalisering och lokalisering
Det här avsnittet gäller endast för .NET MAUIBlazor Hybrid appar.
.NET MAUI konfigurerar CurrentCulture och CurrentUICulture baserat på enhetens omgivande information.
IStringLocalizer och andra API:er i Microsoft.Extensions.Localization-namnområdet fungerar vanligtvis som förväntat, tillsammans med globaliseringsformatering, parsning och bindning som förlitar sig på användarens kultur.
När appkulturen ändras dynamiskt vid körning måste appen laddas om för att återspegla förändringen i kulturen, vilket innebär att rotkomponenten renderas om och den nya kulturen skickas till de omrenderade underordnade komponenterna.
. NET:s resurssystem stöder inbäddning av lokaliserade avbildningar (som blobar) i en app, men Blazor Hybrid kan inte visa inbäddade bilder i Razor komponenter för tillfället. Även om en användare läser in bildens bytes i en Stream med hjälp av ResourceManager, stöder ramverket för närvarande inte återgivning av den hämtade bilden i en Razor-komponent.
Mer information finns i följande resurser:
- Localization (.NET MAUI dokumentation)
- Blazor bildkomponent för att visa bilder som inte är tillgängliga via HTTP-slutpunkter (dotnet/aspnetcore #25274)
Åtkomst till begränsade tjänster från det interna användargränssnittet
BlazorWebView har en TryDispatchAsync-metod som anropar en specificerad Action<ServiceProvider>
asynkront och skickar de avgränsade tjänsterna som är tillgängliga i Razor-komponenter. På så sätt kan kod från det interna användargränssnittet komma åt begränsade tjänster, till exempel NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
När wasDispatchCalled
är false
bör du fundera på vad du ska göra om anropet inte skickades. I allmänhet bör sändningen inte misslyckas. Om det misslyckas kan operativsystemets resurser vara uttömda. Om resurserna är uttömda kan du logga ett meddelande, utlösa ett undantag och kanske varna användaren.
Ytterligare resurser
ASP.NET Core