Bagikan melalui


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:

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:

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: