Eventos
Únase a nosotros en FabCon Vegas
31 mar, 23 - 2 abr, 23
El último evento dirigido por la comunidad de Microsoft Fabric, Power BI, SQL y AI. 31 de marzo al 2 de abril de 2025.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
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 9 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 compatibilidad de .NET y .NET Core. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión de .NET 9 de este artículo.
En este artículo se explica cómo crear y organizar componentes Razor para la web y Web Views en aplicaciones Blazor Hybrid.
Los componentes Razor funcionan en todos los modelos de hospedaje (Blazor WebAssembly, Blazor Server y en el Web View de Blazor Hybrid) y en todas las plataformas (Android, iOS y Windows). Los modelos y plataformas de hospedaje tienen funcionalidades únicas que los componentes pueden aprovechar, pero los componentes que se ejecutan en modelos y plataformas de hospedaje deben aprovechar las funcionalidades únicas por separado, lo que demuestran los siguientes ejemplos:
BlazorWebView
pueden acceder directamente a las características nativas de escritorio y dispositivos móviles, como los servicios de geolocalización. Las aplicaciones Blazor Server y Blazor WebAssembly deben basarse en interfaces de API web de aplicaciones en servidores externos para proporcionar características similares.Para crear componentes Razor que puedan funcionar sin problemas en modelos y plataformas de hospedaje, siga los siguientes principios de diseño:
DynamicComponent
. También se puede proporcionar una interfaz de usuario adicional a los componentes a través de instancias RenderFragment. Para obtener más información sobre RenderFragment, consulte Fragmentos de representación de contenido secundario y Representar fragmentos para la lógica de representación reutilizable.Tanto como sea posible, coloque el código y el contenido estático en las bibliotecas de clases de Razor (RCL). Cada modelo o plataforma de hospedaje hace referencia a la RCL y registra implementaciones individuales en la colección de servicios de la aplicación que podría requerir un componente Razor.
Cada ensamblado de destino debe contener solo el código específico de ese modelo o plataforma de hospedaje junto con el código que ayuda a iniciar la aplicación.
En el ejemplo siguiente se muestra cómo usar una abstracción para un servicio de geolocalización por modelo y plataforma de hospedaje.
MapComponent
Razor inserta una abstracción de servicio ILocationService
.App.Web
para proyectos Blazor WebAssembly y Blazor Server implementa ILocationService
como WebLocationService
, que utiliza llamadas a la API web para obtener datos de geolocalización.App.Desktop
para .NET MAUI, WPF y Windows Forms, implementa ILocationService
como DesktopLocationService
. DesktopLocationService
usa características de dispositivo específicas de la plataforma para obtener datos de geolocalización.Un patrón común en .NET MAUI es crear implementaciones independientes para distintas plataformas, como definir clases parciales con implementaciones específicas de la plataforma. Por ejemplo, vea el diagrama siguiente, donde se implementan clases parciales para CameraService
en cada una de las clases CameraService.Windows.cs
, CameraService.iOS.cs
, CameraService.Android.cs
y CameraService.cs
:
Cuando quiera empaquetar características específicas de la plataforma en una biblioteca de clases que puedan consumir otras aplicaciones, se recomienda seguir un enfoque similar al descrito en el ejemplo anterior y crear una abstracción para el componente Razor:
En el ejemplo siguiente se muestran los conceptos de las imágenes de una aplicación que organiza fotografías:
InputPhoto
de una RCL a la que hace referencia.InputPhoto
en la RCL inserta una interfaz ICameraService
, que se define en la RCL.CameraService
para ICameraService
se encuentran en la biblioteca de clases .NET MAUI (CameraService.Windows.cs
, CameraService.iOS.cs
, CameraService.Android.cs
), que hace referencia a la RCL.Para obtener un ejemplo, consulta Compilación de una aplicación .NET MAUIBlazor Hybrid con un objeto Blazor Web App.
src/HybridApp
.
Azure-Samples/eShopOnAzure
repositorio de GitHubdotnet/eShop
repositorio de GitHub.Comentarios de ASP.NET Core
ASP.NET Core es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Eventos
Únase a nosotros en FabCon Vegas
31 mar, 23 - 2 abr, 23
El último evento dirigido por la comunidad de Microsoft Fabric, Power BI, SQL y AI. 31 de marzo al 2 de abril de 2025.
Regístrate hoyCursos
Módulo
Creación de una aplicación móvil y de escritorio con Blazor Hybrid y .NET MAUI - Training
Aprenda a configurar el entorno de desarrollo y a crear la primera aplicación híbrida entre plataformas con Blazor, .NET MAUI y C#.