Sdílet prostřednictvím


ASP.NET Core Blazor Hybrid

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.

Upozorňující

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.

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 v tomto článku ve verzi .NET 9.

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:

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 UnhandledExceptionSystem.AppDomain.CurrentDomain vlastnost. Následující příklad používá direktivu kompilátoru MessageBox Zapište informace o chybě do error.ExceptionObjectsouboru .

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 .

Další informace naleznete v následujících zdrojích:

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.

Další materiály