ASP.NET Core Blazor Hybrid
Notitie
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Waarschuwing
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.
Belangrijk
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikelvoor de huidige release.
In dit artikel wordt uitgelegd ASP.NET Core Blazor Hybrid, een manier om een interactieve webinterface aan de clientzijde te bouwen met .NET in een ASP.NET Core-app.
Gebruik Blazor Hybrid om desktop- en mobiele native clientframeworks te integreren met .NET en Blazor.
In een Blazor Hybrid-app Razor onderdelen systeemeigen op het apparaat worden uitgevoerd. Onderdelen renderen naar een ingesloten Web View controle via een lokaal interop-kanaal. Onderdelen worden niet uitgevoerd in de browser en WebAssembly is niet betrokken. De Razor-onderdelen laden en voeren snel code uit, en zij hebben volledige toegang tot de systeemeigen mogelijkheden van het apparaat via het .NET-platform. Onderdeelstijlen die worden weergegeven in een Web View zijn afhankelijk van het platform en vereisen mogelijk dat u rekening houdt met het weergeven van verschillen tussen platforms met behulp van aangepaste opmaakmodellen.
Blazor Hybrid artikelen behandelen onderwerpen over het integreren van Razor onderdelen in systeemeigen clientframeworks.
apps Blazor Hybrid met .NET MAUI
Blazor Hybrid ondersteuning is ingebouwd in het .NET Multi-platform App UI (.NET MAUI) framework. .NET MAUI bevat het besturingselement BlazorWebView waarmee Razor onderdelen in een ingesloten Web Viewkunnen worden weergegeven. Door .NET MAUI en Blazor samen te gebruiken, kunt u één set webgebruikersinterfaceonderdelen hergebruiken op mobiel, desktop en web.
Blazor Hybrid apps met WPF en Windows Forms
Blazor Hybrid apps kunnen worden gebouwd met WPF- (Windows Presentation Foundation) en Windows Forms.
Blazor biedt BlazorWebView
besturingselementen voor beide frameworks (WPF-BlazorWebView
, Windows Forms BlazorWebView
).
Razor onderdelen worden systeemeigen uitgevoerd op het Windows-bureaublad en worden weergegeven in een ingesloten Web View. Met Blazor in WPF en Windows Forms kunt u nieuwe gebruikersinterface toevoegen aan uw bestaande Windows-bureaublad-apps die opnieuw kunnen worden gebruikt op verschillende platforms met .NET MAUI of op internet.
configuratie van Web View
Blazor Hybrid de onderliggende Web View-configuratie voor verschillende platforms beschikbaar maakt via gebeurtenissen van het BlazorWebView
-besturingselement:
-
BlazorWebViewInitializing
biedt toegang tot de instellingen die worden gebruikt voor het maken van de Web View op elk platform, als er instellingen beschikbaar zijn. -
BlazorWebViewInitialized
biedt toegang tot de Web View om verdere configuratie van de instellingen toe te staan.
Gebruik de voorkeurspatronen op elk platform om gebeurtenis-handlers toe te voegen aan de gebeurtenissen om uw aangepaste code uit te voeren.
API-documentatie:
- .NET MAUI
- WPF
- Windows Forms
Niet-verwerkte uitzonderingen in Windows Forms- en WPF-apps
Deze sectie is alleen van toepassing op Windows Forms- en WPF-Blazor Hybrid-apps.
Maak een callback voor UnhandledException
in de eigenschap System.AppDomain.CurrentDomain. In het volgende voorbeeld wordt een compilerrichtlijn gebruikt om een MessageBox weer te geven waarin de gebruiker wordt gewaarschuwd dat er een fout is opgetreden of dat de foutgegevens aan de ontwikkelaar worden weergegeven. Registreer de foutgegevens 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)
};
Globalisering en lokalisatie
Deze sectie is alleen van toepassing op .NET MAUIBlazor Hybrid apps.
.NET MAUI configureert de CurrentCulture en CurrentUICulture op basis van de omgevingsinformatie van het apparaat.
IStringLocalizer en andere API in de Microsoft.Extensions.Localization naamruimte werken doorgaans zoals verwacht, samen met globalisatieopmaak, parsering en binding die afhankelijk is van de cultuur van de gebruiker.
Wanneer de app-cultuur tijdens runtime dynamisch wordt gewijzigd, moet de app opnieuw worden geladen om de wijziging in cultuur weer te geven. Dit zorgt ervoor dat het hoofdonderdeel opnieuw wordt gerenderd en dat de nieuwe cultuur wordt doorgegeven aan de opnieuw gerenderde onderliggende onderdelen.
. Het resourcesysteem van NET ondersteunt het insluiten van gelokaliseerde afbeeldingen (als blobs) in een app, maar Blazor Hybrid kan de ingesloten afbeeldingen op dit moment niet weergeven in Razor onderdelen. Zelfs als een gebruiker de bytes van een afbeelding in een Stream leest met behulp van ResourceManager, biedt het framework momenteel geen ondersteuning voor het weergeven van de opgehaalde afbeelding in een Razor onderdeel.
Zie de volgende bronnen voor meer informatie:
- lokalisatie (.NET MAUI documentatie)
- Blazor onderdeel Afbeelding om afbeeldingen weer te geven die niet toegankelijk zijn via HTTP-eindpunten (dotnet/aspnetcore #25274)
Toegang tot scoped services vanuit de systeemeigen gebruikersinterface
BlazorWebView heeft een TryDispatchAsync-methode die een opgegeven Action<ServiceProvider>
asynchroon aanroept en de scoped services doorgeeft die beschikbaar zijn in Razor-componenten. Hierdoor kan code van de systeemeigen gebruikersinterface toegang krijgen tot gescopeerde services, zoals NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Wanneer wasDispatchCalled
is false
, kunt u overwegen wat u moet doen als de oproep niet is verzonden. Over het algemeen mag de verzending niet mislukken. Als dit mislukt, zijn besturingssysteembronnen mogelijk uitgeput. Als resources uitgeput zijn, kunt u overwegen om een bericht te registreren, een uitzondering te genereren en de gebruiker mogelijk te waarschuwen.
Aanvullende informatiebronnen
- handleidingen voor ASP.NET Core Blazor Hybrid
- .NET Multi-platform App UI (.NET MAUI)
-
Windows Presentation Foundation (WPF) - Windows Forms