Descripción de la arquitectura .NET MAUI
Un patrón común que se usa para el desarrollo de aplicaciones multiplataforma es descomponer en factores la lógica de negocio de la interfaz de usuario y, después, desarrollar interfaces de usuario y lógica de interfaz de usuario independientes para cada plataforma. Aunque la lógica de negocios permanece intacta para cada tipo de dispositivo, el código que controla la aplicación y presenta los datos puede variar. Esta varianza se debe a las diferentes capacidades, API y características proporcionadas por los dispositivos. La compilación de una aplicación multiplataforma de esta forma implica tratar no solo con Kits de desarrollo de software (SDK) independientes, sino también con lenguajes y conjuntos de herramientas totalmente diferentes.
El propósito de .NET MAUI (interfaz de usuario de aplicaciones multiplataforma) es simplificar el desarrollo de aplicaciones multiplataforma. Con .NET MAUI, puede crear aplicaciones multiplataforma con un solo proyecto, pero puede agregar recursos y código fuente específicos de la plataforma si es necesario. El objetivo clave de .NET MAUI es permitirle implementar la mayor parte de la lógica de la aplicación y el diseño de la interfaz de usuario en un único código base.
En esta unidad, obtendrá información sobre la arquitectura de .NET MAUI y las herramientas necesarias para compilar aplicaciones de .NET MAUI.
¿Qué es la pila de tecnología de .NET MAUI?
.NET proporciona una serie de marcos específicos de la plataforma para la creación de aplicaciones: .NET para Android, .NET para iOS (y iPadOS), .NET para Mac y WinUI 3 (usando el SDK de aplicaciones para Windows). Todos estos marcos de trabajo tienen acceso a la misma biblioteca de clases base de .NET 6 (BCL). Esta biblioteca proporciona la funcionalidad para crear y administrar recursos, y para abstraer generalmente los detalles del dispositivo subyacente lejos del código. La BCL depende del tiempo de ejecución de .NET para proporcionar el entorno de ejecución para el código. Mono, una implementación de código abierto del runtime de .NET, implementa los entornos Android, iOS (e iPadOS) y macOS. En Windows, Win32 realiza el mismo rol, excepto que está optimizado para la plataforma Windows.
Aunque la BCL permite que las aplicaciones que se ejecutan en distintos tipos de dispositivos compartan una lógica de negocios común, las diversas plataformas tienen diferentes formas de definir la interfaz de usuario de una aplicación. Las plataformas proporcionan distintos modelos para especificar cómo se comunican e interoperan los elementos de la interfaz de usuario. Puede crear la interfaz de usuario para cada plataforma por separado mediante el marco específico de la plataforma adecuado (.NET para Android, .NET para iOS, .NET para Mac o WinUI 3). Pero este enfoque requiere que mantenga un código base para cada familia de dispositivos individual. .NET MAUI proporciona un marco único para crear las interfaces de usuario para aplicaciones móviles y de escritorio. Puede crear la interfaz de usuario mediante este marco (indicado por la flecha 1 del diagrama siguiente) y .NET MAUI se encarga de convertirla en la plataforma adecuada (flecha 2).
Puede haber ocasiones en las que necesite implementar una característica específica de la plataforma. En estos casos, puede invocar métodos en el marco específico de la plataforma, como se resalta en la flecha 3 del siguiente diagrama.
¿Cómo funciona .NET MAUI?
.NET MAUI abstrae la implementación de un elemento de interfaz de usuario de su descripción lógica. Puedes describir la interfaz de usuario mediante XAML (lenguaje de marcado de aplicaciones extensible), un lenguaje neutro de plataforma basado en XML. Por ejemplo, el fragmento XAML siguiente muestra la descripción de un control de botón:
<Button Text="Click me"
SemanticProperties.Hint="Counts the number of times you click"
Clicked="OnCounterClicked"
HorizontalOptions="Center" />
En este ejemplo se define la etiqueta del botón ("Hacer clic aquí") y se especifica que se debe ejecutar un método denominado OnCounterClicked
cuando el usuario seleccione el botón. Otras propiedades pueden modificar el diseño del botón y el texto; en este ejemplo, el texto está centrado en el botón. Las propiedades semánticas son compatibles con la accesibilidad para los usuarios con deficiencias visuales.
.NET MAUI siempre genera código nativo para el dispositivo de destino, por lo que obtiene un rendimiento óptimo. .NET MAUI usa controladores específicos de cada plataforma y elemento de UI para llevar a cabo una operación. Por ejemplo, si se dirige iOS para la aplicación, un controlador .NET MAUI asigna este código a un UIButton
iOS. Si se ejecuta en Android, obtendrá un Android AppCompatButton. Se accede a estos controladores indirectamente a través de una interfaz específica del control proporcionada por .NET MAUI, como IButton
para un botón.
Nota
Si lo prefiere, también puede crear la interfaz de usuario dinámicamente con código C#. Este enfoque le permite modificar el diseño según el entorno. Por ejemplo, es posible que no quiera que aparezcan determinados controles si el usuario no tiene un nivel de autorización adecuado.
.NET MAUI facilita el acceso a controles comunes, como botones. Otros controles comunes, como los campos de entrada de texto, las etiquetas y los selectores de fecha, son igual de sencillos. Sin embargo, no basta con controles individuales para crear una buena plataforma en la que crear aplicaciones completas. .NET MAUI también proporciona:
- Un motor de diseño elaborado para diseñar las páginas.
- Varios tipos de páginas para crear tipos de navegación enriquecidos, como los cajones.
- Compatibilidad con el enlace de datos, para obtener patrones de desarrollo más elegantes y fáciles de mantener.
- La capacidad de crear controladores personalizados para mejorar la forma en que se presentan los elementos de la interfaz de usuario.
- Acceso directamente a las API nativas y la abstracción de muchas necesidades comunes de aplicaciones de escritorio y móviles que son independientes de la interfaz de usuario. La biblioteca de conceptos básicos permite a una aplicación acceder a cosas como el GPS, el acelerómetro y los estados de batería y red. Hay docenas de sensores y servicios comunes al desarrollo móvil también disponibles a través de esta biblioteca.