Udostępnij za pośrednictwem


ASP.NET Core Blazor Hybrid

Uwaga

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

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

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ą, zobacz wersję tego artykułu platformy .NET 9.

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 (BlazorWebView , 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 .

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