Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-Version dieses Artikels.
Warnung
Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Die aktuelle Version finden Sie in der .NET 10-Version dieses Artikels.
Dieser Artikel erläutert ASP.NET Core Blazor Hybrid, eine Möglichkeit, interaktive clientseitige Webbenutzeroberflächen mit .NET in einer ASP.NET Core-App zu erstellen.
Verwenden Sie Blazor Hybrid, um Desktop- und mobile native Clientframeworks mit .NET und Blazor zu verbinden.
In einer Blazor Hybrid-App laufen Razor-Komponenten nativ auf dem Gerät. Komponenten werden über einen lokalen Interoperabilitätskanal an ein eingebettetes Web View-Steuerelement gerendert. Komponenten werden nicht im Browser ausgeführt, und WebAssembly ist nicht beteiligt. Razor-Komponenten laden und führen Code schnell aus, und Komponenten haben über die .NET-Plattform vollen Zugriff auf die nativen Fähigkeiten des Geräts. Komponentenstile, die in einer Web View gerendert werden, sind plattformabhängig und erfordern möglicherweise, dass Sie Unterschiede beim Rendering zwischen Plattformen mithilfe benutzerdefinierter Stylesheets berücksichtigen.
Blazor Hybrid-Artikel behandeln Themen, die sich auf die Integration von Razor-Komponenten in native Clientframeworks beziehen.
Blazor Hybrid-Apps mit .NET MAUI
Blazor Hybrid Support ist in das .NET Multi-platform App UI (.NET MAUI) Framework integriert. .NET MAUI enthält das Steuerelement BlazorWebView, das das Rendern von Razor-Komponenten in ein eingebettetes Web View ermöglicht. Indem Sie .NET MAUI und Blazor zusammen verwenden, können Sie einen Satz von Web-UI-Komponenten auf Mobilgeräten, Desktops und im Web wiederverwenden.
Blazor Hybrid-Apps mit WPF und Windows Forms
Blazor Hybrid-Apps können mit Windows Presentation Foundation (WPF) und Windows Forms erstellt werden.
Blazor stellt BlazorWebView-Steuerelemente für beide Frameworks bereit (WPF BlazorWebView, Windows Forms BlazorWebView).
Razor-Komponenten werden nativ auf dem Windows-Desktop ausgeführt und in ein eingebettetes Web View gerendert. Mit Blazor in WPF und Windows Forms können Sie Ihren bestehenden Windows-Desktop-Apps eine neue Benutzeroberfläche hinzufügen, die plattformübergreifend mit .NET MAUI oder im Web wiederverwendet werden kann.
Web View-Konfiguration
Blazor Hybrid macht die zugrunde liegende Web View-Konfiguration für verschiedene Plattformen über Ereignisse des BlazorWebView-Steuerelements verfügbar:
-
BlazorWebViewInitializingbietet Zugriff auf die Einstellungen, die zum Erstellen der Web View auf einzelnen Plattformen verwendet werden, wenn Einstellungen verfügbar sind. -
BlazorWebViewInitializedbietet Zugriff auf die Web View, um weitere Konfiguration der Einstellungen zu ermöglichen.
Verwenden Sie die bevorzugten Muster auf jeder Plattform, um Ereignishandler für die Ereignisse zu registrieren, damit Ihr benutzerdefinierter Code ausgeführt wird.
API-Dokumentation:
- .NET MAUI
- WPF
- Windows Forms
Nicht behandelte Ausnahmen in Windows Forms und WPF-Apps
Dieser Abschnitt gilt nur für Windows Forms und WPF-AppsBlazor Hybrid.
Erstellen Sie einen Callback für UnhandledException an der System.AppDomain.CurrentDomain-Eigenschaft. Im folgenden Beispiel wird eine Compileranweisung verwendet, um eine MessageBoxMeldung anzuzeigen, die den Benutzer entweder über einen Fehler informiert oder dem Entwickler die Fehlerinformationen anzeigt. Protokollieren Sie die Fehlerinformationen 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)
};
Globalisierung und Lokalisierung
Dieser Abschnitt gilt nur für .NET MAUIBlazor Hybrid-Apps.
.NET MAUI konfiguriert CurrentCulture und CurrentUICulture basierend auf den Umgebungsinformationen des Geräts.
IStringLocalizer und andere APIs im Microsoft.Extensions.Localization-Namespace funktionieren im Allgemeinen wie erwartet, zusammen mit der Globalisierungsformatierung, dem -Parsing und der -Bindung, die von der Kultur des Benutzers abhängig sind.
Beim dynamischen Ändern der App-Kultur zur Laufzeit muss die App neu geladen werden, um die Änderung der Kultur zu übernehmen. Dadurch wird die Stammkomponente neu gerendert und die neue Kultur an neu gerenderte untergeordnete Komponenten übergeben.
Das Ressourcensystem von .NET unterstützt das Einbetten lokalisierter Bilder (als Blobs) in eine App, aber Blazor Hybrid kann die eingebetteten Bilder derzeit nicht in Razor-Komponenten anzeigen. Auch wenn ein Benutzer die Bytes eines Bilds mithilfe von ResourceManager in ein Stream liest, unterstützt das Framework derzeit kein Rendering des abgerufenen Bilds in einer Razor-Komponente.
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Lokalisierung (.NET MAUI Dokumentation)
- Blazor Bildkomponente zum Anzeigen von Bildern, auf die nicht über HTTP-Endpunkte zugegriffen werden kann (dotnet/aspnetcore #25274)
Zugriff auf Dienste mit Bereichsbindung über die native Benutzeroberfläche
BlazorWebView verfügt über eine TryDispatchAsync-Methode, die eine angegebene Action<ServiceProvider> asynchron aufruft und die in Razor-Komponenten verfügbaren bereichsbezogenen Dienste übergibt. Auf diese Weise kann Code über die native Benutzeroberfläche auf bereichsbezogene Dienste zugreifen, z. B. NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Wenn falsewasDispatchCalled ist, überlegen Sie, was Sie tun, wenn der Anruf nicht weitergeleitet wurde. Im Allgemeinen sollte der Dispatch nicht fehlschlagen. Wenn sie fehlschlägt, sind möglicherweise Betriebssystemressourcen erschöpft. Wenn Ressourcen erschöpft sind, sollten Sie eine Nachricht protokollieren, eine Ausnahme auslösen und den*die Benutzer*in möglicherweise benachrichtigen.