ASP.NET Core Blazor Hybrid
Catatan
Ini bukan versi terbaru dari artikel ini. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Peringatan
Versi ASP.NET Core ini tidak lagi didukung. Untuk informasi selengkapnya, lihat Kebijakan Dukungan .NET dan .NET Core. Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Penting
Informasi ini berkaitan dengan produk pra-rilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Untuk rilis saat ini, lihat versi .NET 8 dari artikel ini.
Artikel ini menjelaskan Blazor Hybrid ASP.NET Core, cara membangun UI web sisi klien interaktif dengan .NET di aplikasi ASP.NET Core.
Gunakan Blazor Hybrid untuk memadukan kerangka kerja klien native desktop dan seluler dengan .NET dan Blazor.
Dalam aplikasi Blazor Hybrid, komponen Razor berjalan secara native di perangkat. Komponen dirender ke kontrol Web View yang disematkan melalui saluran interop lokal. Komponen tidak berjalan di browser, dan WebAssembly tidak terlibat. Komponen Razor memuat dan menjalankan kode dengan cepat, dan komponen memiliki akses penuh ke kemampuan native perangkat melalui platform .NET. Gaya komponen yang dirender dalam Web View tergantung platform dan mungkin mengharuskan Anda memperhitungkan perbedaan penyajian di seluruh platform menggunakan lembar gaya kustom.
Artikel Blazor Hybrid mencakup topik yang berkaitan dengan pengintegrasian komponen Razor ke dalam kerangka kerja klien native.
Aplikasi Blazor Hybrid dengan .NET MAUI
Dukungan Blazor Hybrid dibangun ke dalam kerangka kerja .NET Multi-platform App UI (.NET MAUI). .NET MAUI menyertakan kontrol BlazorWebView yang memungkinkan perenderan komponen Razor menjadi Web View yang disematkan. Dengan menggunakan .NET MAUI dan Blazor secara bersamaan, Anda dapat menggunakan kembali satu set komponen UI web di seluler, desktop, dan web.
Aplikasi Blazor Hybrid dengan WPF dan Formulir Windows
Aplikasi Blazor Hybrid dapat dibuat dengan Windows Presentation Foundation (WPF) dan Formulir Windows. Blazormenyediakan BlazorWebView
kontrol untuk kedua kerangka kerja ini (WPF BlazorWebView
, Formulir Windows BlazorWebView
). Komponen Razor berjalan secara native di desktop Windows dan dirender ke Web View yang disematkan. Menggunakan Blazor di WPF dan Formulir Windows memungkinkan Anda menambahkan UI baru ke aplikasi desktop Windows yang ada yang dapat digunakan kembali di seluruh platform dengan .NET MAUI atau di web.
Web View konfigurasi
Blazor Hybrid mengekspos konfigurasi Web View yang mendasari untuk platform yang berbeda melalui peristiwa kontrol BlazorWebView
:
BlazorWebViewInitializing
menyediakan akses ke pengaturan yang digunakan untuk membuat Web View di setiap platform, jika pengaturan tersedia.BlazorWebViewInitialized
menyediakan akses ke Web View untuk memungkinkan konfigurasi pengaturan lebih lanjut.
Gunakan pola pilihan di setiap platform untuk melampirkan penanganan aktivitas ke aktivitas untuk menjalankan kode kustom Anda.
Dokumentasi API:
- .NET MAUI
- WPF
- Formulir Windows
Pengecualian yang tidak tertangani di aplikasi Formulir Windows dan WPF
Bagian ini hanya berlaku untuk aplikasi Formulir Windows dan WPFBlazor Hybrid.
Buat panggilan balik untuk UnhandledException
di System.AppDomain.CurrentDomain properti . Contoh berikut menggunakan direktif kompilator untuk menampilkan MessageBox yang memperingatkan pengguna bahwa kesalahan telah terjadi atau menunjukkan informasi kesalahan kepada pengembang. Catat informasi kesalahan di 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)
};
Globalisasi dan pelokalan
Bagian ini hanya berlaku untuk .NET MAUIBlazor Hybrid aplikasi.
.NET MAUICurrentCulture mengonfigurasi dan CurrentUICulture berdasarkan informasi sekitar perangkat.
IStringLocalizer dan API lain di Microsoft.Extensions.Localization namespace umumnya berfungsi seperti yang diharapkan, bersama dengan pemformatan globalisasi, penguraian, dan pengikatan yang bergantung pada budaya pengguna.
Ketika mengubah budaya aplikasi secara dinamis pada runtime, aplikasi harus dimuat ulang untuk mencerminkan perubahan budaya, yang mengurus rendering komponen root dan meneruskan budaya baru ke komponen anak yang dirender.
. Sistem sumber daya NET mendukung penyematan gambar yang dilokalkan (sebagai blob) ke dalam aplikasi, tetapi Blazor Hybrid tidak dapat menampilkan gambar yang disematkan dalam Razor komponen saat ini. Bahkan jika pengguna membaca byte gambar ke dalam Stream penggunaan ResourceManager, kerangka kerja saat ini tidak mendukung penyajian gambar yang Razor diambil dalam komponen.
Pendekatan khusus platform untuk menyertakan gambar yang dilokalkan adalah fitur dari . Sistem sumber daya NET, tetapi Razor elemen browser komponen dalam .NET MAUIBlazor Hybrid aplikasi tidak dapat berinteraksi dengan gambar tersebut.
Untuk informasi selengkapnya, lihat sumber daya berikut:
- String Xamarin.Forms dan Pelokalan Gambar: Panduan umumnya berlaku untuk Blazor Hybrid aplikasi. Tidak setiap skenario didukung saat ini.
- Blazor Komponen gambar untuk menampilkan gambar yang tidak dapat diakses melalui titik akhir HTTP (dotnet/aspnetcore #25274)
Mengakses layanan terlingkup dari UI asli
BlazorWebView memiliki TryDispatchAsync metode yang memanggil secara asinkron tertentu Action<ServiceProvider>
dan meneruskan layanan terlingkup yang tersedia dalam Razor komponen. Ini memungkinkan kode dari UI asli untuk mengakses layanan terlingkup seperti NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Ketika wasDispatchCalled
adalah false
, pertimbangkan apa yang harus dilakukan jika panggilan tidak dikirim. Umumnya, pengiriman seharusnya tidak gagal. Jika gagal, sumber daya OS mungkin kelelahan. Jika sumber daya habis, pertimbangkan untuk mencatat pesan, memberikan pengecualian, dan mungkin memberi tahu pengguna.
Sumber Daya Tambahan:
ASP.NET Core