ASP.NET Core Blazor Hybrid
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Bu makalede, bir ASP.NET Core uygulamasında .NET ile etkileşimli istemci tarafı web kullanıcı arabirimi oluşturmanın bir yolu olan ASP.NET Core Blazor Hybrid açıklanmaktadır.
Masaüstü ve mobil yerel istemci çerçevelerini .NET ve Blazor ile karıştırmak için Blazor Hybrid kullanın.
Bir Blazor Hybrid uygulamasında Razorbileşenleri cihazda yerel olarak çalışır. Bileşenler, yerel birlikte çalışma kanalı aracılığıyla ekli Web View bir denetime işlenir. Bileşenler tarayıcıda çalışmaz ve WebAssembly söz konusu değildir. Razor bileşenleri kodu hızla yükleyip yürütür ve bileşenler, .NET platformu aracılığıyla cihazın yerel özelliklerine tam erişime sahiptir. içinde Web View işlenen bileşen stilleri platforma bağımlıdır ve özel stil sayfalarını kullanarak platformlar arasındaki işleme farklarını hesaba eklemenizi gerektirebilir.
Blazor Hybrid makaleleri, Razor bileşenlerini yerel istemci çerçeveleri ile tümleştirmeyle ilgili konuları kapsar.
.NET MAUI ile Blazor Hybrid uygulamaları
Blazor Hybrid destek, .NET Multi-platform App UI (.NET MAUI) çerçevesinde yerleşik olarak bulunur. .NET MAUI, Razor bileşenleri katıştırılmış bir Web Viewoluşturulmasına izin veren BlazorWebView denetimini içerir. .NET MAUI ve Blazor birlikte kullanarak, mobil, masaüstü ve web genelinde bir web kullanıcı arabirimi bileşeni kümesini yeniden kullanabilirsiniz.
WPF ve Windows Forms içeren Blazor Hybrid uygulamaları
Blazor Hybrid uygulamaları Windows Presentation Foundation (WPF) ve Windows Forms ile oluşturulabilir. Blazor bu çerçevelerin her ikisi için de denetimler BlazorWebView
sağlar (WPF BlazorWebView
, Windows Forms BlazorWebView
). Razor bileşenleri, Windows masaüstünde yerel olarak çalışır ve gömülü bir Web View öğesine dönüştürülür. WPF ve Windows Forms içinde Blazor kullanmak, mevcut Windows Masaüstü uygulamalarınıza, .NET MAUI veya webde platformlar arasında yeniden kullanılabilen yeni kullanıcı arabirimi eklemenize olanak sağlar.
Web View yapılandırması
Blazor Hybrid, BlazorWebView
denetiminin olayları aracılığıyla farklı platformlar için temel Web View yapılandırmasını kullanıma sunar:
BlazorWebViewInitializing
, ayarlar kullanılabiliyorsa her platformda Web View oluşturmak için kullanılan ayarlara erişim sağlar.BlazorWebViewInitialized
ayarların daha fazla yapılandırılmasına izin vermek için Web View erişimi sağlar.
Özel kodunuzu yürütmek üzere olaylara olay işleyicileri eklemek için her platformda tercih edilen desenleri kullanın.
API belgeleri:
- .NET MAUI
- WPF
- Windows Forms
Windows Forms ve WPF uygulamalarında işlenmeyen özel durumlar
Bu bölüm yalnızca Windows Forms ve WPF Blazor Hybrid uygulamaları için geçerlidir.
özelliğinde System.AppDomain.CurrentDomain için UnhandledException
bir geri çağırma oluşturun. Aşağıdaki örnek, kullanıcıyı bir hata oluştuğu konusunda uyaran veya hata bilgilerini geliştiriciye gösteren bir derleyici yönergesi MessageBox kullanır. hata bilgilerini içinde günlüğe error.ExceptionObject
kaydeder.
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)
};
Genelleştirme ve yerelleştirme
Bu bölüm yalnızca uygulamalar için .NET MAUIBlazor Hybrid geçerlidir.
.NET MAUICurrentCulture ve CurrentUICulture öğesini cihazın ortam bilgilerine göre yapılandırmaktadır.
IStringLocalizer ve ad alanı içindeki Microsoft.Extensions.Localization diğer API'ler genelleştirme biçimlendirmesi, ayrıştırma ve bağlama ile birlikte genellikle beklendiği gibi çalışır.
Çalışma zamanında uygulama kültürünü dinamik olarak değiştirirken, uygulamanın kök bileşeni yeniden oluşturma ve yeni kültürü yeniden yenilenen alt bileşenlere geçirmeyle ilgilenen kültürdeki değişikliği yansıtacak şekilde yeniden yüklenmesi gerekir.
. NET'in kaynak sistemi, bir uygulamaya yerelleştirilmiş görüntülerin (blob olarak) eklemeyi destekler, ancak Blazor Hybrid şu anda ekli görüntüleri bileşenlerde Razor görüntüleyemez. Kullanıcı kullanarak ResourceManagerbir görüntünün baytlarını Stream okuysa bile, çerçeve şu anda alınan görüntünün bir Razor bileşende işlenmesini desteklemez.
Yerelleştirilmiş görüntüleri dahil etmek için platforma özgü bir yaklaşım özelliğidir. NET'in kaynak sistemi, ancak bir Razor .NET MAUIBlazor Hybrid bileşenin uygulamadaki tarayıcı öğeleri bu tür görüntülerle etkileşim kuramaz.
Daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın:
- Xamarin.Forms Dizesi ve Görüntü Yerelleştirmesi: Yönergeler genellikle uygulamalar için Blazor Hybrid geçerlidir. Şu anda her senaryo desteklenmiyor.
- Blazor HTTP uç noktaları üzerinden erişilmeyen görüntüleri görüntülemek için görüntü bileşeni (dotnet/aspnetcore #25274)
Yerel kullanıcı arabiriminden kapsamı belirlenmiş hizmetlere erişme
BlazorWebView, belirtilen Action<ServiceProvider>
bir zaman uyumsuz olarak çağıran ve bileşenlerde kullanılabilen Razor kapsamlı hizmetlere geçen bir TryDispatchAsync yönteme sahiptir. Bu, yerel kullanıcı arabirimindeki kodun gibi NavigationManagerkapsamlı hizmetlere erişmesini sağlar:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
olduğunda wasDispatchCalled
false
, aramanın gönderilip gönderilmediğini göz önünde bulundurun. Genel olarak, gönderim başarısız olmamalıdır. Başarısız olursa işletim sistemi kaynakları tükenmiş olabilir. Kaynaklar tükenirse, bir iletiyi günlüğe kaydetmeyi, özel durum oluşturmayı ve belki de kullanıcıyı uyarmayı göz önünde bulundurun.
Ek kaynaklar
ASP.NET Core