ASP.NET Core Blazor Hybrid

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ten artykuł zawiera omówienie platformy ASP.NET Core Blazor Hybrid, czyli sposobu tworzenia interaktywnego internetowego interfejsu użytkownika po stronie klienta za pomocą platformy .NET w aplikacji platformy ASP.NET Core.

Dzięki platformie Blazor Hybrid możesz korzystać jednocześnie z natywnych klasycznych i mobilnych struktur klienta za pomocą rozwiązań .NET i Blazor.

W aplikacji Blazor Hybridskładniki Razor są uruchamiane natywnie na urządzeniu. Składniki są renderowane do osadzonej kontrolki Web View za pośrednictwem lokalnego kanału międzyoperacyjnego. Składniki nie są uruchamiane w przeglądarce i nie ma konieczności używania zestawu WebAssembly. Składniki Razor szybko ładują i wykonują kod i mają pełny dostęp do natywnych funkcji urządzenia za pośrednictwem platformy .NET. Style składników renderowane w elemencie Web View są zależne od platformy i mogą wymagać uwzględnienia różnic renderowania na różnych platformach przy użyciu niestandardowych arkuszy stylów.

W artykułach dotyczących platformy Blazor Hybrid omówiono tematy związane z integrowaniem składników Razor w natywnych strukturach klienta.

Aplikacje Blazor Hybrid ze strukturą .NET MAUI

Obsługa platformy Blazor Hybrid jest wbudowana w strukturę .NET Multi-platform App UI (.NET MAUI). Struktura .NET MAUI obejmuje kontrolkę BlazorWebView umożliwiającą renderowanie składników Razor w osadzonym widoku Web View. Korzystając jednocześnie z platform .NET MAUI i Blazor, możesz ponownie używać jednego zestawu internetowych składników interfejsu użytkownika w aplikacjach mobilnych, klasycznych i internetowych.

Aplikacje Blazor Hybrid ze strukturami WPF i Windows Forms

Aplikacje Blazor Hybrid można utworzyć za pomocą struktur Windows Presentation Foundation (WPF) i Windows Forms. BlazorUdostępnia BlazorWebView kontrolki dla obu tych struktur (WPFBlazorWebView , Windows FormsBlazorWebView). Składniki Razor są uruchamiane natywnie w aplikacjach klasycznych systemu Windows i są renderowane do osadzonego widoku Web View. Użycie platformy Blazor w strukturach WPF i Windows Forms umożliwia dodanie do istniejących aplikacji klasycznych systemu Windows nowego interfejsu użytkownika, który może być ponownie używany na różnych platformach za pomocą struktury .NET MAUI lub w Internecie.

Konfiguracja widoku Web View

Platforma Blazor Hybrid udostępnia podstawową konfigurację widoku Web View dla różnych platform za pośrednictwem zdarzeń kontrolki BlazorWebView:

  • Element BlazorWebViewInitializing zapewnia dostęp do ustawień używanych w celu utworzenia widoku Web View na każdej platformie, jeśli ustawienia są dostępne.
  • Element BlazorWebViewInitialized zapewnia dostęp do widoku Web View w celu umożliwienia dalszej konfiguracji ustawień.

Użyj preferowanych wzorców na każdej platformie, aby dołączyć obsługę zdarzeń do zdarzeń w celu wykonania kodu niestandardowego.

Dokumentacja interfejsu API:

Nieobsługiwane wyjątki w aplikacjach Windows Forms i WPF

Ta sekcja dotyczy tylko aplikacji Windows Forms i WPF Blazor Hybrid .

Utwórz wywołanie zwrotne dla UnhandledExceptionSystem.AppDomain.CurrentDomain właściwości . W poniższym przykładzie użyto dyrektywy kompilatora, aby wyświetlić element MessageBox , który powiadamia użytkownika o wystąpieniu błędu lub wyświetla informacje o błędzie dla dewelopera. Zarejestruj informacje o błędzie w pliku 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)
};

Globalizacja i lokalizacja

Ta sekcja dotyczy .NET MAUIBlazor Hybrid tylko aplikacji.

.NET MAUI konfiguruje element CurrentCulture i CurrentUICulture na podstawie informacji o otoczenia urządzeniach.

IStringLocalizer i inne interfejsy API w Microsoft.Extensions.Localization przestrzeni nazw zwykle działają zgodnie z oczekiwaniami, wraz z formatowaniem globalizacji, analizowaniem i powiązaniem, które opiera się na kulturze użytkownika.

W przypadku dynamicznej zmiany kultury aplikacji w czasie wykonywania należy ponownie załadować aplikację, aby odzwierciedlić zmianę kultury, która dba o rerendering składnika głównego i przekazanie nowej kultury do składników podrzędnych rerendered.

. System zasobów platformy NET obsługuje osadzanie zlokalizowanych obrazów (jako obiektów blob) w aplikacji, ale Blazor Hybrid nie może teraz wyświetlać obrazów osadzonych w Razor składnikach. Nawet jeśli użytkownik odczytuje bajty obrazu do Stream elementu using ResourceManager, struktura nie obsługuje obecnie renderowania pobranego obrazu w składniku Razor .

Podejście specyficzne dla platformy do dołączania zlokalizowanych obrazów jest funkcją . System zasobów platformy NET, ale Razor elementy przeglądarki składnika w .NET MAUIBlazor Hybrid aplikacji nie mogą wchodzić w interakcje z takimi obrazami.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Uzyskiwanie dostępu do usług o określonym zakresie z natywnego interfejsu użytkownika

BlazorWebView ma metodę TryDispatchAsync , która wywołuje określony asynchronicznie i przekazuje do usług o określonym Action<ServiceProvider> zakresie dostępnych w Razor składnikach. Dzięki temu kod z natywnego interfejsu użytkownika może uzyskiwać dostęp do usług o określonym zakresie, takich jak NavigationManager:

private async void MyMauiButtonHandler(object sender, EventArgs e)
{
    var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
    {
        var navMan = sp.GetRequiredService<NavigationManager>();
        navMan.CallSomeNavigationApi(...);
    });

    if (!wasDispatchCalled)
    {
        ...
    }
}

Gdy wasDispatchCalled parametr to false, należy wziąć pod uwagę, co zrobić, jeśli połączenie nie zostało wysłane. Ogólnie rzecz biorąc, wysyłanie nie powinno zakończyć się niepowodzeniem. W przypadku niepowodzenia zasoby systemu operacyjnego mogą zostać wyczerpane. Jeśli zasoby są wyczerpane, rozważ rejestrowanie komunikatu, zgłaszanie wyjątku i być może zgłaszanie alertu użytkownika.

Dodatkowe zasoby