ASP.NET Core Blazor Hybrid
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Tento článek probírá ASP.NET Core Blazor Hybrid, způsob, jak vytvořit interaktivní webové uživatelské rozhraní na straně klienta pomocí .NET v aplikaci ASP.NET Core.
Blazor Hybrid umožňuje kombinovat desktopové a mobilní nativní klientské architektury s .NET a Blazor.
V aplikaci Blazor Hybrid se komponenty Razor spouští nativně na zařízení. Komponenty se vykreslují do vloženého ovládacího prvku Web View prostřednictvím místního kanálu interop. Komponenty se nespouštějí v prohlížeči a webAssembly se neúčastní. Komponenty Razor načítají a spouštějí kód rychle a komponenty mají úplný přístup k nativním možnostem zařízení prostřednictvím platformy .NET. Styly komponent vykreslené v závislosti na platformě Web View a můžou vyžadovat, abyste při vykreslování rozdílů mezi platformami používali vlastní šablony stylů.
Články o Blazor Hybrid se týkají témat souvisejících s integrací komponent Razor do nativních klientských architektur.
Aplikace Blazor Hybrid s .NET MAUI
Podpora Blazor Hybrid je integrovaná do architektury .NET Multi-platform App UI (.NET MAUI). .NET MAUI obsahuje ovládací prvek BlazorWebView, který umožňuje vykreslování komponent Razor do vloženého Web View. Společným použitím .NET MAUI a Blazor můžete opakovaně používat jednu sadu komponent webového uživatelského rozhraní napříč mobilními, desktopovými a webovými aplikacemi.
Aplikace Blazor Hybrid s WPF a Windows Forms
Aplikace Blazor Hybrid se dají sestavit pomocí Windows Presentation Foundation (WPF) a Windows Forms. Blazorposkytuje BlazorWebView
ovládací prvky pro obě tyto architektury (WPF BlazorWebView
, model Windows Forms BlazorWebView
). Komponenty Razor běží nativně v desktopové verzi Windows a vykreslují se do vloženého Web View. Použití Blazor ve WPF a Windows Forms umožňuje přidat nové uživatelské rozhraní do stávajících desktopových aplikací pro Windows, které lze opakovaně používat na různých platformách s .NET MAUI nebo na webu.
Konfigurace Web View
Blazor Hybrid zveřejňuje základní konfiguraci Web View pro různé platformy prostřednictvím událostí ovládacího prvku BlazorWebView
:
BlazorWebViewInitializing
poskytuje přístup k nastavením používaným k vytvoření Web View na každé platformě, pokud jsou nastavení k dispozici.BlazorWebViewInitialized
poskytuje přístup k Web View, aby byla možná další konfigurace nastavení.
Pomocí upřednostňovaných vzorů na jednotlivých platformách připojte obslužné rutiny událostí k událostem a spusťte vlastní kód.
Dokumentace k rozhraní API:
- .NET MAUI
- WPF
- model Windows Forms
Neošetřené výjimky v aplikacích model Windows Forms a WPF
Tato část platí jenom pro aplikace model Windows Forms a WPFBlazor Hybrid.
Vytvořte zpětné volání pro UnhandledException
System.AppDomain.CurrentDomain vlastnost. Následující příklad používá direktivu kompilátoru k zobrazeníMessageBox, které buď upozorní uživatele, že došlo k chybě, nebo zobrazí informace o chybě vývojáři. Zapište informace o chybě do error.ExceptionObject
souboru .
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)
};
Globalizace a lokalizace
Tato část platí jenom pro .NET MAUIBlazor Hybrid aplikace.
.NET MAUI nakonfiguruje CurrentCulture a CurrentUICulture na základě okolních informací o zařízení.
IStringLocalizer a další rozhraní API v Microsoft.Extensions.Localization oboru názvů obecně fungují podle očekávání, spolu s formátováním globalizace, analýzou a vazbou, která závisí na jazykové verzi uživatele.
Když dynamicky mění jazykovou verzi aplikace za běhu, musí se aplikace znovu načíst, aby odrážela změnu jazykové verze, která se postará o opětovné obnovení kořenové komponenty a předání nové jazykové verze znovu vyřazuje podřízené komponenty.
. Systém prostředků NET podporuje vkládání lokalizovaných obrázků (jako objektů blob) do aplikace, ale Blazor Hybrid v tuto chvíli nemůže vložené obrázky zobrazit v Razor komponentách. I když uživatel přečte bajty obrázku do objektu Stream using ResourceManager, architektura v současné době nepodporuje vykreslování načteného obrázku v komponentě Razor .
Přístup specifický pro platformu pro zahrnutí lokalizovaných obrázků je funkcí . Systém prostředků net, ale Razor prvky prohlížeče komponenty v aplikaci nemůžou .NET MAUIBlazor Hybrid s těmito obrázky pracovat.
Další informace naleznete v následujících zdrojích:
- Lokalizace řetězců a obrázků Xamarin.Forms: Obecně platí pro Blazor Hybrid aplikace. V tuto chvíli se nepodporuje každý scénář.
- Blazor Image component to display images that are not accessible through HTTP endpoints (dotnet/aspnetcore #25274)
Přístup ke službám s vymezeným oborem z nativního uživatelského rozhraní
BlazorWebView má metodu TryDispatchAsync , která volá zadanou Action<ServiceProvider>
asynchronně a předává v rámci služeb dostupných v Razor součástech. To umožňuje kódu z nativního uživatelského rozhraní přistupovat ke službám s vymezeným oborem, například NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Pokud wasDispatchCalled
je to false
, zvažte, co dělat, pokud hovor nebyl odeslán. Obecně platí, že odeslání by nemělo selhat. Pokud selže, můžou se prostředky operačního systému vyčerpat. Pokud jsou prostředky vyčerpány, zvažte protokolování zprávy, vyvolání výjimky a možná upozornění uživatele.