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.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). 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 Hybrid skł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:
- .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 .
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:
- Lokalizacja ciągów i obrazów platformy Xamarin.Forms: wskazówki są zwykle stosowane do Blazor Hybrid aplikacji. Obecnie nie każdy scenariusz jest obsługiwany.
- 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.