.NET MAUI — qué es, arquitectura y desarrollo multiplataforma

Autor: IT Sectr Publicado: 2026-05-01 Tiempo de lectura: 8 min

.NET MAUI es un framework multiplataforma de Microsoft para crear aplicaciones nativas en C# y XAML, lanzado en 2022 junto con .NET 6. Según la Microsoft .NET MAUI Documentation, 2024, MAUI admite iOS, Android, Windows, macOS y Tizen, uniéndolos en un solo proyecto con una base de código compartida. El framework es el sucesor directo de Xamarin.Forms.

Puntos clave

  • .NET MAUI — sucesor de Xamarin.Forms, integrado en .NET 6+ sin un SDK separado
  • Un Single Project unificado reemplaza tres proyectos de plataforma separados
  • XAML y C# se utilizan para la construcción declarativa de UI y la lógica de negocio
  • Handlers reemplazaron los obsoletos renderizadores de Xamarin.Forms para la abstracción de plataforma
  • Soporte para 5 plataformas: iOS, Android, Windows, macOS, Tizen

Qué es .NET MAUI

.NET MAUI (Multi-platform App UI) es una evolución de Xamarin.Forms, reconstruida desde cero para .NET 6+. A diferencia de Xamarin.Forms, que requería proyectos separados para cada plataforma, MAUI utiliza una estructura única con un archivo .csproj compartido y carpetas de plataforma Platforms/iOS, Platforms/Android, Platforms/Windows y Platforms/MacCatalyst. La primera versión estable de MAUI fue en mayo de 2022.

La diferencia clave entre .NET MAUI y su predecesor es la integración completa con .NET 8 BCL (Base Class Library). Los desarrolladores obtienen acceso a System.Text.Json, System.Net.Http, System.Linq, System.IO y otras API directamente sin un SDK adicional. Xamarin.Forms usaba .NET Standard 2.0 para la lógica compartida, lo que limitaba el acceso a las nuevas capacidades de la plataforma .NET.

Según Microsoft Build 2024, .NET MAUI se utiliza en más de 40 000 aplicaciones en App Store y Google Play. Entre los proyectos destacados se incluyen UPS Mobile, The Weather Channel y Siemens Teamcenter. Microsoft está desarrollando activamente MAUI como parte de .NET 9, previsto para noviembre de 2024.

Historia y origen de .NET MAUI

El anuncio de .NET MAUI se realizó en Microsoft Build 2020 como parte de la estrategia de unión de .NET. Microsoft fusionó .NET Core, Mono y .NET Framework en una única plataforma .NET 5+. Xamarin.Forms se convirtió en la base de MAUI, pero la base de código se reescribió por completo: las API obsoletas se eliminaron, los renderizadores se reemplazaron con Handlers, DependencyService se reemplazó con un contenedor DI.

.NET MAUI 8 (noviembre de 2023) agregó soporte para Native AOT, rendimiento mejorado de CollectionView, Blazor Hybrid (integración de componentes Blazor en una aplicación MAUI) y nuevo mapeo de fuentes. .NET MAUI 9 (2024) incluye soporte para C# 12, integración mejorada con WinUI 3 y macOS Sonoma, y una nueva API de arrastrar y soltar para todas las plataformas.

Diferencia entre .NET MAUI y Xamarin.Forms

La primera diferencia es una aplicación única. En Xamarin.Forms, iOS y Android requerían dos proyectos separados en una solución. En .NET MAUI, un solo proyecto con carpetas de plataforma. Esto simplifica la navegación del código, la gestión de dependencias y los pipelines de CI/CD. El archivo .csproj utiliza el formato SDK-style con TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

La segunda diferencia es la arquitectura de renderizado mediante Handlers en lugar de renderizadores. En Xamarin.Forms, cada elemento (Button, Label) tenía su propia clase Renderer que creaba un control nativo. La personalización requería un Custom Renderer. En MAUI, un Handler es un objeto ligero que asigna un elemento abstracto a un control nativo y admite Property Mappers para actualizar propiedades sin recrear el control.

La tercera diferencia es un contenedor DI unificado Microsoft.Extensions.DependencyInjection. Xamarin.Forms usaba DependencyService para registrar implementaciones de plataforma. MAUI integra DI en el núcleo del framework: los servicios se registran en MauiAppBuilder, los controladores reciben dependencias a través del constructor. Esto simplifica las pruebas y sigue las prácticas modernas de .NET.

Arquitectura de .NET MAUI

La arquitectura de .NET MAUI se basa en un modelo de múltiples capas. La capa inferior es .NET BCL y Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). La capa media es Microsoft.Maui.dll con el núcleo del framework: Handlers, Layout, Graphics, Controls. La capa superior es la aplicación del desarrollador con páginas XAML, ViewModel y servicios.

Single Project y Multi-Targeting

Single Project es una característica arquitectónica clave de .NET MAUI. Todos los archivos se dividen en tres categorías: código compartido (Shared), código de plataforma (Platforms) y recursos (Resources). Multi-targeting en .csproj especifica para qué plataformas se compila la aplicación. Cada plataforma compila solo su propia carpeta Platforms y el código compartido.

El código de plataforma se coloca en carpetas condicionales. Platforms/Android contiene MainActivity.cs, MainApplication.cs y AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist y Entitlements.plist. Platforms/Windows — Package.appxmanifest y App.xaml. Para la compilación condicional, el código utiliza las directivas #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.

XAML y MVVM en .NET MAUI

XAML es un lenguaje de marcado declarativo heredado de Xamarin.Forms y WPF. En .NET MAUI, XAML se utiliza para describir páginas (ContentPage), diseños (VerticalStackLayout, Grid, FlexLayout), elementos (Label, Entry, Button, Image) y controles (CollectionView, CarouselView). XAML se compila en formato BAML en tiempo de compilación.

El patrón MVVM se implementa a través de CommunityToolkit.Mvvm — una biblioteca de código abierto de Microsoft. El atributo [ObservableProperty] genera propiedades INotifyPropertyChanged, [RelayCommand] crea comandos a partir de métodos. CommunityToolkit.Mvvm 8.2 Source Generator transforma la clase parcial ViewModel, generando ObservableObject sin Reflection. Esto acelera el Binding en un 30% en comparación con la implementación manual.

Ejemplo de aplicación en .NET MAUI

csharp
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace MauiApp;

public class MainPage : ContentPage
{
    public MainPage()
    {
        Title = "MAUI App";
        
        Content = new VerticalStackLayout
        {
            Spacing = 12,
            Padding = new Thickness(16),
            Children =
            {
                new Label
                {
                    Text = "Hello, .NET MAUI!",
                    FontSize = 24,
                    FontAttributes = FontAttributes.Bold
                },
                new Button
                {
                    Text = "Haz clic en mí",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Hola", "Mundo", "OK"))
                }
            }
        };
    }
}

Plataformas y soporte

.NET MAUI admite 5 plataformas: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) y Tizen 6.5+. Cada plataforma utiliza su propio conjunto de controles y API. iOS usa UIKit a través de Mac Catalyst, Android — AndroidX a través de Xamarin.Android, Windows — WinUI 3, macOS — AppKit a través de Mac Catalyst.

En iOS y Android, MAUI utiliza los mismos mecanismos de renderizado que Xamarin.Forms — controles UI nativos. Sin embargo, los Handlers proporcionan una personalización más flexible. Para la configuración de Button específica de la plataforma en iOS, se utiliza OnPlatform<Button> con PlatformConfiguration.iOS. Para Windows, MAUI usa WinUI 3 — un framework UI moderno de Microsoft con soporte para Fluent Design System.

El soporte para macOS se agregó a través de Mac Catalyst — la tecnología de Apple que ejecuta aplicaciones UIKit en Mac. Esto permite reutilizar el 100% del código iOS de MAUI para la versión macOS de la aplicación. Para funciones específicas de Mac (Menu Bar, Touch Bar), MAUI proporciona API de plataforma a través de Mac Catalyst y envoltorios NSView.

Tizen es la plataforma de Samsung para Smart TV, teléfonos inteligentes y relojes inteligentes. El soporte de Tizen en .NET MAUI se implementa a través de Samsung Tizen .NET. Las aplicaciones MAUI se compilan para Tizen a través de los enlaces Samsung TizenFX. Sin embargo, Tizen no es una plataforma prioritaria para Microsoft — las actualizaciones para ella se publican con un retraso de 1 a 2 meses.

PlataformaVersión mínimaFramework UIEstado
iOSiOS 15.0UIKit (Mac Catalyst)Estable
AndroidAPI 21 (5.0)AndroidX / Material 3Estable
WindowsWin 10 1809WinUI 3 / Fluent DesignEstable
macOSmacOS 12.0AppKit (Mac Catalyst)Estable
TizenTizen 6.5TizenFX / SamsungAdicional

Ventajas de .NET MAUI

Base de código unificada — .NET MAUI reduce la duplicación de código. Un solo proyecto en C# y XAML se compila para 5 plataformas, proporcionando hasta un 95% de código compartido para aplicaciones con UI simple. La lógica de negocio, los servicios, los modelos de datos y los clientes HTTP se encuentran en el código compartido. Solo las funciones específicas de la plataforma (cámara, geolocalización, biometría) requieren implementaciones separadas a través de DI.

El rendimiento de .NET MAUI es superior al de Xamarin.Forms. Los Handlers reducen la sobrecarga de renderizado: las pruebas de Microsoft muestran una reducción del 20–30% en el tiempo de renderizado de pantalla en comparación con Xamarin.Forms 5.0. Native AOT en iOS compila el código C# directamente en instrucciones ARM64, eliminando la compilación JIT y reduciendo el tiempo de inicio en un 40%.

Blazor Hybrid es una capacidad única de .NET MAUI. BlazorWebView integra componentes Blazor directamente en una aplicación MAUI. Los desarrolladores de interfaces web pueden reutilizar componentes Blazor (páginas Razor, interoperabilidad JS, estilos CSS) en la aplicación móvil. Blazor Hybrid funciona en las 5 plataformas MAUI sin cambiar el código de los componentes Blazor.

Ecosistema .NET — acceso a miles de paquetes NuGet: Entity Framework Core para operaciones de bases de datos, Serilog para registro, Polly para reintentos de solicitudes HTTP, FluentValidation para validación. CommunityToolkit.Maui proporciona elementos UI listos para usar: Popup, Toast, Snackbar, SemanticScreenReader para accesibilidad. .NET MAUI se integra con Azure, SignalR y Microsoft Graph SDK.

Herramientas de desarrollo — Visual Studio 2022 y Rider de JetBrains. XAML Hot Reload actualiza la UI sin reiniciar la aplicación en 1–2 segundos. C# Hot Reload (desde .NET 6+) recompila el cambio de un método sin reiniciar el proceso. Visual Studio Debugger, Profiler e IntelliCode complementan el conjunto de herramientas para diagnóstico de rendimiento y calidad de código.

Preguntas frecuentes

¿Qué es .NET MAUI?

.NET MAUI es un framework multiplataforma de Microsoft para crear aplicaciones nativas en C# y XAML para iOS, Android, Windows, macOS y Tizen. Es el sucesor de Xamarin.Forms, integrado en .NET 6+ y utiliza un proyecto único (Single Project) en lugar de proyectos separados para cada plataforma.

¿En qué se diferencia .NET MAUI de Xamarin.Forms?

.NET MAUI utiliza un proyecto único, Handlers en lugar de renderizadores, un contenedor DI integrado, Native AOT para iOS y Blazor Hybrid. Xamarin.Forms requiere proyectos separados para cada plataforma, usa Custom Renderer para la personalización de UI, DependencyService para DI y no admite Blazor. .NET MAUI es parte de .NET, Xamarin.Forms es un SDK separado.

¿Admite .NET MAUI macOS?

Sí, .NET MAUI admite macOS a través de Mac Catalyst (versión mínima macOS 12.0). Las aplicaciones iOS en MAUI se compilan automáticamente para Mac sin cambios de código. Para funciones nativas de Mac (Menu Bar, Dock, Touch ID), se utilizan llamadas de plataforma a través de Mac Catalyst y envoltorios NSView en la carpeta Platforms/MacCatalyst.

¿Se pueden usar paquetes de Flutter en .NET MAUI?

No, .NET MAUI no es compatible con paquetes Dart/Flutter. MAUI utiliza el ecosistema .NET y paquetes NuGet. Para funciones específicas de plataforma (cámara, Bluetooth, biometría), se utilizan bibliotecas nativas a través de Android Bindings (Kotlin/Java) e iOS Bindings (Objective-C/Swift). CommunityToolkit.Maui proporciona envoltorios listos para escenarios comunes.

¿Es .NET MAUI más lento que una aplicación nativa?

La diferencia en el rendimiento es mínima. .NET MAUI con Handlers y Native AOT en iOS alcanza el 95–98% del rendimiento de una aplicación nativa SwiftUI. En Android, la diferencia con una aplicación Kotlin es del 3–7% en pruebas de renderizado UI (Microsoft Benchmarks, 2024). Para la mayoría de las aplicaciones empresariales, la diferencia es imperceptible para el usuario.

Resumen

  • .NET MAUI — framework multiplataforma de Microsoft en C# y XAML, sucesor de Xamarin.Forms
  • Single Project con multi-targeting reemplaza 3 proyectos separados por una configuración
  • Handlers proporcionan un renderizado más rápido que los renderizadores de Xamarin.Forms
  • Blazor Hybrid permite integrar componentes web directamente en una aplicación móvil
  • 5 plataformas — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT en iOS reduce el tiempo de inicio en un 40% y el tamaño del binario
  • Elija .NET MAUI para proyectos .NET que requieran capacidades multiplataforma y acceso a API nativas

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también