¿Qué es .NET MAUI?

.NET Multi-platform App UI (.NET MAUI) es un marco multiplataforma para crear aplicaciones móviles y de escritorio nativas con C# y XAML.

Con .NET MAUI, puede desarrollar aplicaciones que se pueden ejecutar en Android, iOS, macOS y Windows desde una sola base de código compartida.

.NET MAUI supported platforms.

.NET MAUI es una evolución de código abierto de Xamarin.Forms, extendida desde escenarios móviles a escritorio, con controles de interfaz de usuario recopilados para mejorar el rendimiento y la extensibilidad. Si ha usado anteriormente Xamarin.Forms para compilar interfaces de usuario multiplataforma, observará muchas similitudes con .NET MAUI. Sin embargo, también hay algunas diferencias. Mediante .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. Uno de los objetivos 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 una única base de código.

Para quién es .NET MAUI

.NET MAUI es para desarrolladores que quieren:

  • Escribir aplicaciones multiplataforma en XAML y C#, desde una base de código compartida única en Visual Studio.
  • Compartir el diseño de la interfaz de usuario entre plataformas.
  • Compartir código, pruebas y lógica de negocios entre plataformas.

Cómo funciona .NET MAUI

.NET MAUI unifica las API de Android, iOS, macOS y Windows en una sola API que permite una experiencia de desarrollador que se ejecuta en cualquier lugar y de solo una escritura, a la vez que proporciona acceso profundo a todos los aspectos de cada plataforma nativa.

.NET 6 o posterior proporciona una serie de marcos específicos de la plataforma para crear aplicaciones: biblioteca .NET Android, .NET iOS, .NET macOS e interfaz de usuario de Windows 3 (WinUI 3). Todos estos marcos de trabajo tienen acceso a la misma biblioteca de clases base de .NET 6 (BCL). Esta biblioteca abstrae los detalles de la plataforma subyacente fuera del código. La BCL depende del tiempo de ejecución de .NET para proporcionar el entorno de ejecución para el código. Para Android, iOS y macOS, el entorno es implementado por Mono, una implementación del tiempo de ejecución de .NET. En Windows, .NET CoreCLR proporciona el entorno de ejecución.

Aunque la BCL permite que las aplicaciones que se ejecutan en diferentes tipos de dispositivos compartan la lógica empresarial común, las distintas plataformas tienen diferentes formas de definir la interfaz de usuario para una aplicación, y proporcionan diferentes modelos para especificar cómo se comunican e interactúan los elementos de una interfaz de usuario. Puede crear la interfaz de usuario para cada plataforma por separado mediante el marco específico de la plataforma adecuado (.NET Android, .NET iOS, .NET macOS o WinUI 3), pero este enfoque requiere mantener una base de código 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. El siguiente diagrama muestra una vista de arquitectura de alto nivel de una aplicación .NET MAUI.

.NET MAUI architecture diagram.

En una aplicación MAUI de .NET, se escribe código que interactúa principalmente con la API de MAUI de .NET (1). Después, .NET MAUI consume directamente las API de la plataforma nativa (3). Además, el código de la aplicación puede ejercer directamente las API de plataforma (2), si es necesario.

Las aplicaciones .NET MAUI se pueden escribir en PC o Mac y compilarse en paquetes de aplicaciones nativas:

  • Las aplicaciones Android se compilan usando .NET MAUI desde C# en lenguaje intermedio (IL) que, después, se compila Just-in-Time (JIT) en un ensamblado nativo cuando se inicia la aplicación.
  • Las aplicaciones iOS que usan .NET MAUI se compilan Ahead-of-Time (AOT) de forma completa desde código de C# en código de ensamblado de ARM nativo.
  • Las aplicaciones macOS creadas con .NET MAUI usan Mac Catalyst, una solución de Apple que lleva la aplicación iOS compilada con UIKit al escritorio y la aumenta con API de plataforma y AppKit adicionales según sea necesario.
  • Las aplicaciones de Windows creadas con .NET MAUI usan la biblioteca de interfaz de usuario de Windows 3 (WinUI 3) para crear aplicaciones nativas destinadas al escritorio de Windows. Para obtener más información sobre WinUI 3, consulte Biblioteca de interfaz de usuario de Windows.

Nota:

La creación de aplicaciones para iOS y macOS requiere un equipo Mac.

Qué proporciona .NET MAUI

.NET MAUI proporciona una colección de controles que se pueden usar para mostrar datos, iniciar acciones, indicar actividad, mostrar colecciones, seleccionar datos, etc. Además de una colección de controles, .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 XAML y 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.
  • API multiplataforma para acceder a las características de dispositivos nativos. Estas API permiten que las aplicaciones accedan a características del dispositivo, como el GPS, el acelerómetro y los estados de la batería y la red. Para obtener más información, consulte API multiplataforma para las características del dispositivo.
  • Funcionalidad de gráficos multiplataforma, que proporciona un lienzo de dibujo que admite formas e imágenes de dibujo y pintura, operaciones de redacción y transformaciones de objetos gráficos.
  • Un único sistema de proyecto que usa varios destinos para tener como destino Android, iOS, macOS y Windows. Para más información, consulta Proyecto único de .NET MAUI.
  • Recarga activa de .NET, para que puedas modificar tanto tu XAML como el código fuente administrado mientras se ejecuta la aplicación y luego observar el resultado de las modificaciones sin volver a generar la aplicación. Para más información, consulta Recarga activa de .NET.

API multiplataforma para características de dispositivo

.NET MAUI proporciona API multiplataforma para características de dispositivos nativos. Algunos ejemplos de funcionalidades que proporciona .NET MAUI para acceder a las características del dispositivo incluyen:

  • Acceso a sensores, como el acelerómetro, la brújula y el giroscopio en dispositivos.
  • Capacidad de comprobar el estado de conectividad de red del dispositivo y detectar cambios.
  • Proporciona información sobre el dispositivo en el que se ejecuta la aplicación.
  • Copia y pegado texto en el Portapapeles del sistema, entre aplicaciones.
  • Elección de uno o varios archivos del dispositivo.
  • Almacenamiento de datos de forma segura como pares clave-valor.
  • Uso de motores de texto a voz integrados para leer texto del dispositivo.
  • Inicio de flujos de autenticación basados en el explorador que escuchan una devolución de llamada a una URL específica registrada en la aplicación.

Proyecto único

El único proyecto .NET MAUI toma las experiencias de desarrollo específicas de la plataforma que normalmente se encuentran al desarrollar aplicaciones y las abstrae en un solo proyecto compartido que pueda tener como destino Android, iOS, macOS y Windows.

El proyecto único de .NET MAUI proporciona una experiencia de desarrollo multiplataforma simplificada y coherente, independientemente de las plataformas a las que vaya dirigido. El proyecto único de .NET MAUI proporciona las siguientes características:

  • Un único proyecto compartido que pueda dirigirse a Android, iOS, macOS y Windows.
  • Una selección de destino de depuración simplificada para ejecutar las aplicaciones .NET MAUI.
  • Archivos de recursos compartidos dentro del único proyecto.
  • Un único manifiesto de aplicación que especifica el título, el identificador y la versión de la aplicación.
  • Acceso a las API y herramientas específicas de la plataforma cuando sea necesario.
  • Un único punto de entrada de aplicación multiplataforma.

El proyecto único de .NET MAUI está habilitado con varios destinos y el uso de proyectos de estilo SDK. Para más información sobre el proyecto único de .NET MAUI, consulta Proyecto único de .NET MAUI.

Recarga activa

.NET MAUI incluye compatibilidad con la recarga activa de .NET, lo que permite modificar el código fuente administrado mientras se ejecuta la aplicación, sin necesidad de pausar o alcanzar manualmente un punto de interrupción. Después, las modificaciones de código se pueden aplicar a la aplicación en ejecución sin recompilación.

.NET MAUI también incluye compatibilidad con la recarga activa de XAML, lo que permite guardar los archivos XAML y ver los cambios reflejados en la aplicación en ejecución sin recompilación. Además, el estado de navegación y los datos se mantendrán, lo que te permite iterar rápidamente en la interfaz de usuario sin perder tu lugar en la aplicación.