O que é o .NET MAUI?

A interface do usuário de aplicativo multiplataforma do .NET (.NET MAUI) é uma estrutura multiplataforma para criar aplicativos móveis e de área de trabalho nativos com C# e XAML.

Usando o .NET MAUI, você pode desenvolver aplicativos que podem ser executados no Android, iOS, macOS e Windows de uma única base de código compartilhada.

.NET MAUI supported platforms.

O .NET MAUI é de código aberto e é a evolução do Xamarin.Forms, estendido de cenários móveis para desktop, com controles de interface do usuário recriados do zero para desempenho e extensibilidade. Se você já usou o Xamarin.Forms para criar interfaces de usuário entre plataformas, notará muitas semelhanças com o .NET MAUI. No entanto, também há algumas diferenças. Usando o .NET MAUI, você pode criar aplicativos multiplataforma usando um projeto, mas é possível adicionar código-fonte e recursos específicos da plataforma, se necessário. Um dos principais objetivos do .NET MAUI é permitir que você implemente o máximo possível da lógica do aplicativo e do layout da interface do usuário em uma única base de código.

A quem se destina o .NET MAUI

.NET MAUI é para desenvolvedores que desejam:

  • Escreva aplicativos de plataforma cruzada em XAML e C#, a partir de uma única base de código compartilhada no Visual Studio.
  • Compartilhe o layout e o design da interface do usuário entre plataformas.
  • Compartilhe código, testes e lógica de negócios entre plataformas.

Como funciona o .NET MAUI

O .NET MAUI unifica as APIs do Android, iOS, macOS e Windows em uma única API que permite uma experiência de desenvolvedor de gravação única e execução em qualquer lugar, além de fornecer acesso profundo a todos os aspectos de cada plataforma nativa.

O .NET 6 ou superior fornece uma série de estruturas específicas da plataforma para a criação de aplicativos: biblioteca .NET Android, .NET iOS, .NET macOS e Windows UI 3 (WinUI 3). Todas essas estruturas têm acesso à mesma BCL (Biblioteca de Classes Base) do .NET. Essa biblioteca abstrai os detalhes da plataforma subjacente longe do seu código. A BCL depende do runtime do .NET para fornecer o ambiente de execução para o código. Para Android, iOS e macOS, o ambiente é implementado pelo Mono, uma implementação do tempo de execução do .NET. No Windows, o .NET CoreCLR fornece o ambiente de execução.

Embora a BCL permita que aplicativos executados em diferentes plataformas compartilhem lógica de negócios comum, as várias plataformas têm maneiras diferentes de definir a interface do usuário para um aplicativo e fornecem modelos variados para especificar como os elementos de uma interface do usuário se comunicam e interoperam. Você pode criar a interface do usuário para cada plataforma separadamente usando a estrutura específica da plataforma apropriada (.NET Android, .NET iOS, .NET macOS ou WinUI 3), mas essa abordagem exige que você mantenha uma base de código para cada família individual de dispositivos.

O .NET MAUI fornece uma estrutura única para criar as interfaces do usuário para aplicativos móveis e de desktop. O diagrama a seguir mostra uma exibição de alto nível da arquitetura de um aplicativo .NET MAUI:

.NET MAUI architecture diagram.

Em um aplicativo .NET MAUI, você escreve código que interage principalmente com a API do .NET MAUI (1). Em seguida, o .NET MAUI consome diretamente as APIs da plataforma nativa (3). Além disso, o código do aplicativo pode exercer diretamente as APIs da plataforma (2), se necessário.

Os aplicativos .NET MAUI podem ser escritos no PC ou Mac e compilados em pacotes de aplicativos nativos:

  • Os aplicativos Android criados usando o .NET MAUI são compilados a partir do C# em uma linguagem intermediária (IL) que é então just-in-time (JIT) compilada em um assembly nativo quando o aplicativo é iniciado.
  • Os aplicativos iOS criados usando o .NET MAUI são totalmente antecipados (AOT) compilados do C# em código de assembly ARM nativo.
  • Os aplicativos macOS criados usando o .NET MAUI usam o Mac Catalyst, uma solução da Apple que traz seu aplicativo iOS criado com UIKit para a área de trabalho e o aumenta com AppKit adicional e APIs de plataforma, conforme necessário.
  • Os aplicativos do Windows criados usando o .NET MAUI usam a biblioteca da interface do usuário do Windows 3 (WinUI 3) para criar aplicativos nativos destinados à área de trabalho do Windows. Para obter mais informações sobre o WinUI 3, consulte Biblioteca de interface do usuário do Windows.

Observação

Criar aplicativos para iOS e macOS requer um Mac.

O que o .NET MAUI fornece

O .NET MAUI fornece uma coleção de controles que podem ser usados para exibir dados, iniciar ações, indicar atividades, exibir coleções, selecionar dados e muito mais. Além de uma coleção de controles, o .NET MAUI também fornece:

  • Um mecanismo de layout elaborado para a criação de páginas.
  • Vários tipos de página para criar tipos de navegação avançados, como gavetas.
  • Suporte para associação de dados para padrões de desenvolvimento mais elegantes e fáceis de manter.
  • A capacidade de personalizar manipuladores para aprimorar a maneira como os elementos da interface do usuário são apresentados.
  • APIs de plataforma cruzada para acessar recursos nativos do dispositivo. Essas APIs permitem que os aplicativos acessem recursos do dispositivo, como o GPS, o acelerômetro e os estados da bateria e da rede. Para obter mais informações, consulte APIs de plataforma cruzada para recursos de dispositivo.
  • Funcionalidade de gráficos de plataforma cruzada, que fornece uma tela de desenho que oferece suporte a formas e imagens de desenho e pintura, operações de composição e transformações de objetos gráficos.
  • Um único sistema de projeto que usa multidirecionamento para Android, iOS, macOS e Windows. Para obter mais informações, consulte .NET MAUI Single project.
  • .NET hot reload, para que você possa modificar seu XAML e seu código-fonte gerenciado enquanto o aplicativo está em execução, observe o resultado de suas modificações sem recriar o aplicativo. Para obter mais informações, consulte .NET hot reload.

APIs de plataforma cruzada para recursos de dispositivo

O .NET MAUI fornece APIs de plataforma cruzada para recursos de dispositivo nativo. Exemplos de funcionalidade fornecida pelo .NET MAUI para acessar recursos do dispositivo incluem:

  • Acesso a sensores, como acelerômetro, bússola e giroscópio em dispositivos.
  • Capacidade de verificar o estado de conectividade de rede do dispositivo e detectar alterações.
  • Forneça informações sobre o dispositivo em que o aplicativo está sendo executado.
  • Copie e cole texto na área de transferência do sistema, entre aplicativos.
  • Escolha um ou vários arquivos do dispositivo.
  • Armazene dados com segurança como pares chave/valor.
  • Utilize mecanismos integrados de conversão de texto em fala para ler texto do dispositivo.
  • Inicie fluxos de autenticação baseados em navegador que escutam um retorno de chamada para uma URL registrada de aplicativo específico.

Projeto único

O projeto único .NET MAUI pega as experiências de desenvolvimento específicas da plataforma que você normalmente encontra ao desenvolver aplicativos e as abstrai em um único projeto compartilhado que pode ter como alvo Android, iOS, macOS e Windows.

O projeto único do .NET MAUI fornece uma experiência de desenvolvimento multiplataforma simplificada e consistente, independentemente das plataformas que estão sendo direcionadas. O projeto único do .NET MAUI fornece os seguintes recursos:

  • Um único projeto compartilhado que pode ter como alvo Android, iOS, macOS e Windows.
  • Uma seleção de destino de depuração simplificada para executar seus aplicativos .NET MAUI.
  • Arquivos de recursos compartilhados dentro de um único projeto.
  • Um único manifesto de aplicativo que especifica o título, a id e a versão do aplicativo.
  • Acesso a APIs e ferramentas específicas da plataforma quando necessário.
  • Um único ponto de entrada de aplicativo multiplataforma.

O projeto único do .NET MAUI é habilitado usando multidirecionamento e o uso de projetos no estilo SDK. Para obter mais informações sobre o projeto único do .NET MAUI, consulte Projeto único do .NET MAUI.

Recarga Dinâmica

O .NET MAUI inclui suporte para recarga a quente do .NET, que permite modificar o código-fonte gerenciado enquanto o aplicativo está em execução, sem a necessidade de pausar manualmente ou atingir um ponto de interrupção. Em seguida, as edições de código podem ser aplicadas ao aplicativo em execução sem recompilação.

O .NET MAUI também inclui suporte para recarregamento a quente XAML, que permite salvar seus arquivos XAML e ver as alterações refletidas em seu aplicativo em execução sem recompilação. Além disso, seu estado de navegação e dados serão mantidos, permitindo que você itere rapidamente em sua interface do usuário sem perder seu lugar no aplicativo.