ASP.NET Core Blazor Hybrid

Notatka

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz Zasady pomocy technicznej dla platform .NET i .NET Core. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

Ten artykuł objaśnia ASP.NET Core Blazor Hybrid, sposób tworzenia interaktywnego internetowego interfejsu użytkownika po stronie klienta za pomocą platformy .NET w aplikacji ASP.NET Core.

Dzięki platformie Blazor Hybrid możesz łączyć natywne frameworki klienckie dla komputerów i urządzeń mobilnych za pomocą rozwiązań .NET i Blazor.

W aplikacji Blazor Hybridkomponenty Razor są uruchamiane natywnie na urządzeniu. Składniki są renderowane do osadzonej kontrolki Web View za pośrednictwem lokalnego kanału interoperacyjnego. Składniki nie są uruchamiane w przeglądarce i WebAssembly nie bierze w tym udziału. Komponenty Razor szybko ładują i wykonują kod i mają pełny dostęp do natywnych funkcji urządzenia za pośrednictwem platformy .NET. Style komponentó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.

Blazor Hybrid artykuły obejmują tematy związane z integrowaniem składników Razor z natywnymi frameworkami klienta.

Aplikacje Blazor Hybrid z .NET MAUI

Obsługa platformy Blazor Hybrid jest wbudowana w framework .NET Multi-platform App UI (.NET MAUI). Struktura .NET MAUI obejmuje kontrolkę BlazorWebView umożliwiającą renderowanie komponentów Razor w osadzonym widoku Web View. Korzystając jednocześnie z .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 WPF i Windows Forms

Aplikacje Blazor Hybrid można tworzyć przy użyciu platform Windows Presentation Foundation (WPF) i Windows Forms. BlazorUdostępnia BlazorWebView kontrolki dla obu tych frameworków (WPF BlazorWebView, Windows Forms BlazorWebView). Składniki Razor są uruchamiane natywnie na pulpicie 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 dla 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.

Web View konfiguracja

Blazor Hybrid udostępnia bazową konfigurację 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 przypisać procedury obsługi 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 callback dla UnhandledException dla właściwości System.AppDomain.CurrentDomain. W poniższym przykładzie użyto dyrektywy kompilatora, aby wyświetlić 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 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 otoczeniu urządzenia.

IStringLocalizer i inne interfejsy API w przestrzeni nazw Microsoft.Extensions.Localization zwykle działają zgodnie z oczekiwaniami, a także z formatowaniem, analizą i wiązaniem zależnymi od kultury użytkownika.

W przypadku dynamicznej zmiany kultury aplikacji w czasie wykonywania należy ponownie załadować aplikację, aby odzwierciedlić zmianę kultury, co spowoduje ponowne renderowanie składnika głównego i przekazanie nowej kultury do ponownie renderowanych składników podrzędnych.

. 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 składnikach Razor. Nawet jeśli użytkownik odczytuje bajty obrazu do elementu Stream za pomocą ResourceManager, framework obecnie nie obsługuje 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 Action<ServiceProvider> asynchronicznie i przekazuje usługi o zakresie scoped dostępne w komponentach Razor. 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 parametr wasDispatchCalled ma wartość false, należy wziąć pod uwagę, co zrobić, jeśli połączenie nie zostało przekazane. Ogólnie rzecz biorąc, dyspozycja nie powinna 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 powiadomienie użytkownika.