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.
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:
- .NET MAUI
- WPF
- Formularze systemu Windows
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 UnhandledException
System.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:
- Lokalizacja (dokumentacja.NET MAUI)
- Blazor Składnik obrazu służący do wyświetlania obrazów, które nie są dostępne za pośrednictwem punktów końcowych HTTP (dotnet/aspnetcore #25274)
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.