Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota
Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión de .NET 10 de este artículo.
Advertencia
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulte la Directiva de soporte de .NET y .NET Core. Para la versión actual, consulte la versión de .NET 10 de este artículo.
En este artículo se explica ASP.NET Core Blazor Hybrid, una forma de compilar la interfaz de usuario web interactiva del lado cliente con .NET en una aplicación de ASP.NET Core.
Usa Blazor Hybrid para combinar frameworks de cliente nativos móviles y de escritorio con .NET y Blazor.
En una Blazor Hybrid app, los Razor componentes se ejecutan de forma nativa en el dispositivo. Los componentes se representan en un control Web View incrustado a través de un canal de interoperabilidad local. Los componentes no se ejecutan en el navegador y WebAssembly no está implicado. Los Razor componentes cargan y ejecutan código rápidamente, y los componentes tienen acceso total a las funcionalidades nativas del dispositivo a través de la plataforma .NET. Los estilos de componentes representados en un elemento Web View son dependientes de la plataforma y pueden requerir que tenga en cuenta las diferencias de representación entre plataformas mediante hojas de estilos personalizadas.
En los artículos de Blazor Hybrid se tratan temas relacionados con la integración de componentes de Razor en marcos de cliente nativos.
Blazor Hybrid aplicaciones con .NET MAUI
La compatibilidad con Blazor Hybrid se integra en el framework .NET Multi-platform App UI (.NET MAUI). .NET MAUI incluye el control BlazorWebView que permite representar Razor componentes en un control incrustado Web View. Al usar .NET MAUI y Blazor juntos, puede reutilizar un conjunto de componentes de interfaz de usuario web en móvil, escritorio y web.
Aplicaciones Blazor Hybrid con WPF y Windows Forms
Las aplicaciones Blazor Hybrid se pueden crear con Windows Presentation Foundation (WPF) y Windows Forms.
Blazor proporciona controles BlazorWebView para estos dos marcos (WPF BlazorWebViewy Windows Forms BlazorWebView). Los componentes Razor se ejecutan de forma nativa en el escritorio de Windows y se representan en un Web View incrustado. El uso de Blazor en WPF y Windows Forms permite agregar una nueva interfaz de usuario a las aplicaciones de escritorio de Windows existentes que se pueden reutilizar en plataformas con .NET MAUI o en la Web.
Web View configuración
Blazor Hybrid expone la configuración subyacente de Web View para distintas plataformas a través de eventos del control BlazorWebView:
-
BlazorWebViewInitializingproporciona acceso a la configuración que se usa para crear la Web View en cada plataforma, si las configuraciones están disponibles. -
BlazorWebViewInitializedproporciona acceso a Web View para permitir seguir configurando los parámetros.
Usa los patrones preferidos en cada plataforma para adjuntar controladores de eventos a los eventos para ejecutar el código personalizado.
Documentación de la API:
- .NET MAUI
- WPF
- Windows Forms
Excepciones no controladas en aplicaciones de Windows Forms y WPF
Esta sección solo se aplica a las aplicaciones de Windows Forms y WPF Blazor Hybrid.
Cree una devolución de llamada para UnhandledException en la propiedad System.AppDomain.CurrentDomain. En el ejemplo siguiente se usa una directiva del compilador para mostrar que MessageBox alerta al usuario de que se ha producido un error o muestra la información de error en el desarrollador. Registre la información de error en 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)
};
Globalización y localización
Esta sección solo se aplica a las aplicaciones de .NET MAUIBlazor Hybrid.
.NET MAUI configura CurrentCulture y CurrentUICulture en función de la información de ambiente del dispositivo.
IStringLocalizer y otra API del espacio de nombres Microsoft.Extensions.Localization suelen funcionar según lo previsto, junto con el formato de globalización, el análisis y el enlace que se basa en la referencia cultural del usuario.
Al cambiar dinámicamente la cultura de la aplicación en tiempo de ejecución, la aplicación debe volver a cargarse para reflejar el cambio en la cultura, que se encarga de volver a representar el componente raíz y pasar la nueva cultura a los componentes secundarios que se han vuelto a representar.
El sistema de recursos de .NET admite la inserción de imágenes localizadas (como blobs) en una aplicación, pero Blazor Hybrid no puede mostrar las imágenes insertadas en componentes Razor en este momento. Incluso si un usuario lee los bytes de una imagen en un elemento Stream mediante ResourceManager, el marco no admite actualmente la representación de la imagen recuperada en un componente Razor.
Para obtener más información, consulte los siguientes recursos:
- Localización (.NET MAUI documentación)
- Blazor Componente de imagen para mostrar imágenes que no son accesibles mediante puntos de conexión HTTP (dotnet/aspnetcore #25274)
Acceso a servicios con ámbito desde la interfaz de usuario nativa
BlazorWebView tiene un método TryDispatchAsync que llama a un Action<ServiceProvider> especificado de forma asincrónica y pasa los servicios con ámbito disponibles en los componentes de Razor. Esto permite que el código de la interfaz de usuario nativa acceda a servicios con ámbito como NavigationManager:
private async void MyMauiButtonHandler(object sender, EventArgs e)
{
var wasDispatchCalled = await _blazorWebView.TryDispatchAsync(sp =>
{
var navMan = sp.GetRequiredService<NavigationManager>();
navMan.CallSomeNavigationApi(...);
});
if (!wasDispatchCalled)
{
...
}
}
Cuando wasDispatchCalled es false, considere qué hacer si no se envió la llamada. Por lo general, el envío no debe producir un error. Si falla, es posible que se agoten los recursos del sistema operativo. Si se agotan los recursos, considere la posibilidad de registrar un mensaje, lanzar una excepción y, quizás, alertar al usuario.
Contenido relacionado
- Tutoriales de ASP.NET Core Blazor Hybrid
- .NET Multi-platform App UI (.NET MAUI)
- Windows Presentation Foundation (WPF)
- Windows Forms