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.

Plataformas com suporte do .NET MAUI.

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 do usuário multiplataforma, vai observar 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.

Para quem se destina o .NET MAUI

O .NET MAUI se destina a desenvolvedores que desejam:

  • Escreva aplicativos multiplataforma em XAML e C# de uma base de código compartilhada e unificada 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 de plataforma para a criação de aplicativos: .NET para Android, .NET para iOS, .NET para macOS e biblioteca WinUI 3 (Windows UI 3). Todas essas estruturas têm acesso à mesma BCL (biblioteca de classes base) do .NET. Essa biblioteca abstrai os detalhes da plataforma subjacente do código. A BCL depende do runtime do .NET para fornecer o ambiente de execução para o código. No caso do Android, do iOS e do macOS, o ambiente é implementado pelo Mono, uma implementação de runtime do .NET. No Windows, o .NET CoreCLR fornece o ambiente de execução.

Embora a BCL permita que aplicativos em execução em diferentes plataformas tenham uma lógica de negócios comum, as várias plataformas têm maneiras diferentes de definir a interface do usuário de um aplicativo e fornecem modelos variados para especificar como os elementos de uma interface do usuário se comunicam e operam entre si. Você pode criar a interface do usuário para cada plataforma separadamente usando a estrutura específica da plataforma apropriada (.NET para Android, .NET para iOS, .NET para 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 unificada para a criação de interfaces do usuário para aplicativos móveis e de área de trabalho. O seguinte diagrama mostra uma exibição de alto nível da arquitetura de um aplicativo .NET MAUI:

Diagrama de arquitetura do .NET MAUI.

Em um aplicativo .NET MAUI, você escreve um código que interage principalmente com a API do .NET MAUI (1). Em seguida, o .NET MAUI consome diretamente as APIs de 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 gravados no PC ou no Mac e compilados em pacotes de aplicativos nativos:

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

Observação

A criação de aplicativos para iOS e macOS exige 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, entre outros. 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 multiplataforma para acessar recursos de dispositivo nativo. Essas APIs permitem que os aplicativos acessem recursos do dispositivo, como o GPS, o acelerômetro e os estados de bateria e rede. Para obter mais informações, confira APIs multiplataforma para recursos do dispositivo.
  • Funcionalidade de elementos gráficos multiplataforma, que fornece uma tela de desenho que dá suporte a desenho e pintura de formas e imagens, composição de operações e transformações de objeto gráfico.
  • Um sistema de projeto unificado que usa a multiplataforma para o Android, o iOS, o macOS e o Windows. Para obter mais informações, confira Criar um projeto individual do .NET MAUI.
  • Recarga Dinâmica do .NET, para que você possa modificar o XAML e o código-fonte gerenciado enquanto o aplicativo está em execução e observar o resultado das modificações sem recompilar o aplicativo. Para obter mais informações, confira Recarga Dinâmica do .NET.

APIs multiplataforma para recursos de dispositivo

O .NET MAUI fornece APIs multiplataforma para recursos de dispositivo nativo. Entre os exemplos de funcionalidades fornecidas pelo .NET MAUI para acessar os recursos do dispositivo estão:

  • 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.
  • Fornecimento de informações sobre o dispositivo em que o aplicativo está em execução.
  • Recurso “copiar e colar” o texto na área de transferência do sistema, entre aplicativos.
  • Escolha de arquivos individuais ou múltiplos do dispositivo.
  • Armazenamento de dados com segurança como pares chave/valor.
  • Utilização de mecanismos internos de conversão de texto em fala para ler um texto do dispositivo.
  • Inicialização de 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 individual do .NET MAUI usa as experiências de desenvolvimento específicas da plataforma que você normalmente encontra ao desenvolver aplicativos e as abstrai em um só projeto compartilhado que pode ser direcionado para o Android, o iOS, o macOS e o Windows.

O projeto individual do .NET MAUI oferece uma experiência de desenvolvimento multiplataforma simplificada e consistente, sejam quais forem as plataformas para direcionamento. O projeto individual do .NET MAUI fornece os seguintes recursos:

  • Um projeto compartilhado unificado que pode ser direcionado para o Android, o iOS, o macOS e o Windows.
  • Uma seleção de destino de depuração simplificada para executar seus aplicativos .NET MAUI.
  • Arquivos de recursos compartilhados dentro do projeto individual.
  • Um manifesto de aplicativo individual 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 só ponto de entrada do aplicativo multiplataforma.

O projeto individual do .NET MAUI está habilitado com multiplataforma e uso de projetos no estilo SDK. Para obter mais informações sobre o projeto individual do .NET MAUI, confira Projeto individual do .NET MAUI.

Recarga Dinâmica

O .NET MAUI inclui suporte para Recarga Dinâmica 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 Recarga Dinâmica XAML, o que permite salvar seus arquivos XAML e ver as alterações refletidas no aplicativo em execução sem recompilação. Além disso, seu estado de navegação e seus dados serão mantidos, permitindo que você itere rapidamente na interface do usuário sem perder seu lugar no aplicativo.