.NET MAUI — o que é, arquitetura e desenvolvimento multiplataforma

Autor: IT Sectr Publicado: 2026-05-01 Tempo de leitura: 8 min

.NET MAUI é um framework multiplataforma da Microsoft para criar aplicações nativas em C# e XAML, lançado em 2022 junto com o .NET 6. De acordo com a Microsoft .NET MAUI Documentation, 2024, o MAUI suporta iOS, Android, Windows, macOS e Tizen, unificando-os em um único projeto com uma base de código compartilhada. O framework é o sucessor direto do Xamarin.Forms.

Principais pontos

  • .NET MAUI — sucessor do Xamarin.Forms, integrado ao .NET 6+ sem um SDK separado
  • Um Single Project unificado substitui três projetos de plataforma separados
  • XAML e C# são usados para construção declarativa de UI e lógica de negócios
  • Handlers substituíram os obsoletos renderizadores do Xamarin.Forms para abstração de plataforma
  • Suporte para 5 plataformas: iOS, Android, Windows, macOS, Tizen

O que é .NET MAUI

.NET MAUI (Multi-platform App UI) é uma evolução do Xamarin.Forms, reconstruída do zero para o .NET 6+. Ao contrário do Xamarin.Forms, que exigia projetos separados para cada plataforma, o MAUI usa uma estrutura única com um arquivo .csproj compartilhado e pastas de plataforma Platforms/iOS, Platforms/Android, Platforms/Windows e Platforms/MacCatalyst. O primeiro lançamento estável do MAUI foi em maio de 2022.

A principal diferença entre o .NET MAUI e seu antecessor é a integração completa com o .NET 8 BCL (Base Class Library). Os desenvolvedores obtêm acesso a System.Text.Json, System.Net.Http, System.Linq, System.IO e outras APIs diretamente sem um SDK adicional. O Xamarin.Forms usava .NET Standard 2.0 para lógica compartilhada, o que limitava o acesso a novos recursos da plataforma .NET.

De acordo com o Microsoft Build 2024, o .NET MAUI é usado em mais de 40.000 aplicações na App Store e no Google Play. Entre os projetos notáveis estão UPS Mobile, The Weather Channel e Siemens Teamcenter. A Microsoft está desenvolvendo ativamente o MAUI como parte do .NET 9, previsto para novembro de 2024.

História e origem do .NET MAUI

O anúncio do .NET MAUI foi feito no Microsoft Build 2020 como parte da estratégia de unificação do .NET. A Microsoft fundiu .NET Core, Mono e .NET Framework em uma única plataforma .NET 5+. O Xamarin.Forms tornou-se a base para o MAUI, mas a base de código foi completamente reescrita: APIs obsoletas foram removidas, os renderizadores foram substituídos por Handlers, o DependencyService foi substituído por um contêiner DI.

.NET MAUI 8 (novembro de 2023) adicionou suporte para Native AOT, desempenho melhorado do CollectionView, Blazor Hybrid (incorporação de componentes Blazor em uma aplicação MAUI) e novo mapeamento de fontes. O .NET MAUI 9 (2024) inclui suporte para C# 12, integração melhorada com WinUI 3 e macOS Sonoma, e uma nova API de arrastar e soltar para todas as plataformas.

Diferença entre .NET MAUI e Xamarin.Forms

A primeira diferença é uma aplicação única. No Xamarin.Forms, iOS e Android exigiam dois projetos separados em uma solução. No .NET MAUI, um único projeto com pastas de plataforma. Isso simplifica a navegação no código, o gerenciamento de dependências e os pipelines de CI/CD. O arquivo .csproj usa o formato SDK-style com TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

A segunda diferença é a arquitetura de renderização usando Handlers em vez de renderizadores. No Xamarin.Forms, cada elemento (Button, Label) tinha sua própria classe Renderer que criava um controle nativo. A personalização exigia um Custom Renderer. No MAUI, um Handler é um objeto leve que mapeia um elemento abstrato para um controle nativo e suporta Property Mappers para atualizar propriedades sem recriar o controle.

A terceira diferença é um contêiner DI unificado Microsoft.Extensions.DependencyInjection. O Xamarin.Forms usava DependencyService para registrar implementações de plataforma. O MAUI incorpora DI no núcleo do framework: os serviços são registrados no MauiAppBuilder, os controladores recebem dependências através do construtor. Isso simplifica os testes e segue as práticas modernas do .NET.

Arquitetura do .NET MAUI

A arquitetura do .NET MAUI é baseada em um modelo de múltiplas camadas. A camada inferior é .NET BCL e Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). A camada intermediária é Microsoft.Maui.dll com o núcleo do framework: Handlers, Layout, Graphics, Controls. A camada superior é a aplicação do desenvolvedor com páginas XAML, ViewModel e serviços.

Single Project e Multi-Targeting

Single Project é uma característica arquitetônica chave do .NET MAUI. Todos os arquivos são divididos em três categorias: código compartilhado (Shared), código de plataforma (Platforms) e recursos (Resources). O multi-targeting no .csproj especifica para quais plataformas a aplicação é compilada. Cada plataforma compila apenas sua própria pasta Platforms e o código compartilhado.

O código de plataforma é colocado em pastas condicionais. Platforms/Android contém MainActivity.cs, MainApplication.cs e AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist e Entitlements.plist. Platforms/Windows — Package.appxmanifest e App.xaml. Para compilação condicional, o código usa as diretivas #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.

XAML e MVVM no .NET MAUI

XAML é uma linguagem de marcação declarativa herdada do Xamarin.Forms e WPF. No .NET MAUI, o XAML é usado para descrever páginas (ContentPage), layouts (VerticalStackLayout, Grid, FlexLayout), elementos (Label, Entry, Button, Image) e controles (CollectionView, CarouselView). O XAML é compilado no formato BAML no momento da compilação.

O padrão MVVM é implementado através do CommunityToolkit.Mvvm — uma biblioteca de código aberto da Microsoft. O atributo [ObservableProperty] gera propriedades INotifyPropertyChanged, [RelayCommand] cria comandos a partir de métodos. O CommunityToolkit.Mvvm 8.2 Source Generator transforma a classe parcial ViewModel, gerando ObservableObject sem Reflection. Isso acelera o Binding em 30% em comparação com a implementação manual.

Exemplo de aplicação .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 = "Clique em mim",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Olá", "Mundo", "OK"))
                }
            }
        };
    }
}

Plataformas e suporte

.NET MAUI suporta 5 plataformas: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) e Tizen 6.5+. Cada plataforma usa seu próprio conjunto de controles e APIs. O iOS usa UIKit via Mac Catalyst, Android — AndroidX via Xamarin.Android, Windows — WinUI 3, macOS — AppKit via Mac Catalyst.

No iOS e Android, o MAUI usa os mesmos mecanismos de renderização que o Xamarin.Forms — controles de UI nativos. No entanto, os Handlers fornecem personalização mais flexível. Para configuração de Button específica da plataforma no iOS, usa-se OnPlatform<Button> com PlatformConfiguration.iOS. Para Windows, o MAUI usa WinUI 3 — um framework de UI moderno da Microsoft com suporte ao Fluent Design System.

O suporte para macOS foi adicionado via Mac Catalyst — a tecnologia da Apple que executa aplicações UIKit no Mac. Isso permite reutilizar 100% do código iOS do MAUI para a versão macOS da aplicação. Para recursos específicos do Mac (Menu Bar, Touch Bar), o MAUI fornece APIs de plataforma através do Mac Catalyst e wrappers NSView.

Tizen é a plataforma da Samsung para Smart TV, smartphones e smart watches. O suporte ao Tizen no .NET MAUI é implementado através do Samsung Tizen .NET. As aplicações MAUI são compiladas para Tizen através dos bindings Samsung TizenFX. No entanto, o Tizen não é uma plataforma prioritária para a Microsoft — as atualizações para ela são lançadas com um atraso de 1 a 2 meses.

PlataformaVersão mínimaFramework UIStatus
iOSiOS 15.0UIKit (Mac Catalyst)Estável
AndroidAPI 21 (5.0)AndroidX / Material 3Estável
WindowsWin 10 1809WinUI 3 / Fluent DesignEstável
macOSmacOS 12.0AppKit (Mac Catalyst)Estável
TizenTizen 6.5TizenFX / SamsungAdicional

Vantagens do .NET MAUI

Base de código unificada — o .NET MAUI reduz a duplicação de código. Um único projeto em C# e XAML compila para 5 plataformas, fornecendo até 95% de código compartilhado para aplicações com UI simples. A lógica de negócios, serviços, modelos de dados e clientes HTTP estão no código compartilhado. Apenas recursos específicos da plataforma (câmera, geolocalização, biometria) exigem implementações separadas via DI.

O desempenho do .NET MAUI é superior ao do Xamarin.Forms. Os Handlers reduzem a sobrecarga de renderização: os testes da Microsoft mostram uma redução de 20 a 30% no tempo de renderização de tela em comparação com o Xamarin.Forms 5.0. O Native AOT no iOS compila o código C# diretamente em instruções ARM64, eliminando a compilação JIT e reduzindo o tempo de inicialização em 40%.

Blazor Hybrid é uma capacidade única do .NET MAUI. O BlazorWebView incorpora componentes Blazor diretamente em uma aplicação MAUI. Desenvolvedores de interfaces web podem reutilizar componentes Blazor (páginas Razor, interop JS, estilos CSS) na aplicação móvel. O Blazor Hybrid funciona em todas as 5 plataformas MAUI sem alterar o código dos componentes Blazor.

Ecossistema .NET — acesso a milhares de pacotes NuGet: Entity Framework Core para operações de banco de dados, Serilog para registro, Polly para repetição de solicitações HTTP, FluentValidation para validação. O CommunityToolkit.Maui fornece elementos de UI prontos: Popup, Toast, Snackbar, SemanticScreenReader para acessibilidade. O .NET MAUI integra-se com Azure, SignalR e Microsoft Graph SDK.

Ferramentas de desenvolvimento — Visual Studio 2022 e Rider da JetBrains. O XAML Hot Reload atualiza a UI sem reiniciar a aplicação em 1 a 2 segundos. O C# Hot Reload (a partir do .NET 6+) recompila uma alteração de método sem reiniciar o processo. O Visual Studio Debugger, Profiler e IntelliCode complementam o conjunto de ferramentas para diagnóstico de desempenho e qualidade de código.

Perguntas frequentes

O que é .NET MAUI?

.NET MAUI é um framework multiplataforma da Microsoft para criar aplicações nativas em C# e XAML para iOS, Android, Windows, macOS e Tizen. É o sucessor do Xamarin.Forms, integrado ao .NET 6+ e usa um único projeto (Single Project) em vez de projetos separados para cada plataforma.

Como o .NET MAUI difere do Xamarin.Forms?

.NET MAUI usa um único projeto, Handlers em vez de renderizadores, um contêiner DI integrado, Native AOT para iOS e Blazor Hybrid. O Xamarin.Forms exige projetos separados para cada plataforma, usa Custom Renderer para personalização de UI, DependencyService para DI e não suporta Blazor. .NET MAUI é parte do .NET, Xamarin.Forms é um SDK separado.

O .NET MAUI suporta macOS?

Sim, o .NET MAUI suporta macOS via Mac Catalyst (versão mínima macOS 12.0). As aplicações iOS no MAUI são automaticamente compiladas para Mac sem alterações de código. Para recursos nativos do Mac (Menu Bar, Dock, Touch ID), são usadas chamadas de plataforma através do Mac Catalyst e wrappers NSView na pasta Platforms/MacCatalyst.

Pode-se usar pacotes Flutter no .NET MAUI?

Não, o .NET MAUI não é compatível com pacotes Dart/Flutter. O MAUI usa o ecossistema .NET e pacotes NuGet. Para recursos específicos da plataforma (câmera, Bluetooth, biometria), são usadas bibliotecas nativas através de Android Bindings (Kotlin/Java) e iOS Bindings (Objective-C/Swift). O CommunityToolkit.Maui fornece wrappers prontos para cenários comuns.

O .NET MAUI é mais lento que uma aplicação nativa?

A diferença no desempenho é mínima. O .NET MAUI com Handlers e Native AOT no iOS atinge 95–98% do desempenho de uma aplicação nativa SwiftUI. No Android, a diferença com uma aplicação Kotlin é de 3–7% em testes de renderização de UI (Microsoft Benchmarks, 2024). Para a maioria das aplicações empresariais, a diferença é imperceptível para o usuário.

Resumo

  • .NET MAUI — framework multiplataforma da Microsoft em C# e XAML, sucessor do Xamarin.Forms
  • Single Project com multi-targeting substitui 3 projetos separados por uma configuração
  • Handlers fornecem renderização mais rápida que os renderizadores do Xamarin.Forms
  • Blazor Hybrid permite incorporar componentes web diretamente em uma aplicação móvel
  • 5 plataformas — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT no iOS reduz o tempo de inicialização em 40% e o tamanho do binário
  • Escolha .NET MAUI para projetos .NET que exigem capacidades multiplataforma e acesso a APIs nativas

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também