O que é o .NET MAUI?

.NET Multiplatform Application UI (.NET MAUI) é uma estrutura multiplataforma para criar aplicativos móveis e desktop nativos usando C# e XAML (https://docs.microsoft.com/en-us/dotnet/maui/what-is – Maui ).

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

O  MAUI é de código aberto e uma evolução do Xamarin.Forms, estendendo-se da cena móvel à cena desktop, reconstruindo os controles de interface do usuário desde o início para melhorar o desempenho e a escalabilidade.

Se você usar o Xamarin.Forms para criar interfaces de usuário multiplataforma, notará muitas semelhanças com o T MAUI. No entanto, também existem algumas diferenças. Com o  MAUI, você pode criar aplicativos de plataforma cruzada com um único projeto, mas pode adicionar código-fonte e funcionalidade específicos da plataforma, se necessário. Um dos principais objetivos do  MAUI é permitir que você implemente o máximo possível de lógica de aplicativo e layout de interface do usuário em uma única base de código.

O .NET MAUI é voltado para desenvolvedores que querem:

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

Como o .NET MAUI funciona ?

O .NET MAUI unifica as APIs do Android, iOS, macOS e Windows em uma API, permitindo uma experiência de desenvolvedor “gravar uma vez, executar em qualquer lugar”, ao mesmo tempo em que fornece acesso a todos os aspectos de cada plataforma nativa.

O .NET 6 fornece várias estruturas específicas de plataforma para criar aplicativos: .NET para Android, .NET para iOS, .NET para macOS e uma biblioteca de interface do usuário do Windows (WinUI). Todas essas estruturas têm acesso à mesma biblioteca de classes base (BCL) que o .NET 6, e essa biblioteca abstrai os detalhes da plataforma subjacente do seu código.

A BCL depende do tempo de execução do .NET para fornecer um ambiente de execução para seu código. Para Android, iOS e macOS, o ambiente é implementado pelo Mono, que é a implementação do runtime .NET. No Windows, o WinRT executa a mesma função, só que otimizado para a plataforma Windows.Embora a BCL permita que aplicativos executados em diferentes plataformas compartilhem uma lógica de negócios comum, várias plataformas têm maneiras diferentes de definir a interface do usuário de um aplicativo e fornecem modelos diferentes para especificar como os elementos da interface do usuário se comunicam e interoperam.

Você pode criar a interface do usuário separadamente para cada plataforma usando a estrutura específica da plataforma apropriada (.NET para Android, .NET para iOS, .NET para macOS ou WinUI), mas essa abordagem exige que você mantenha uma base de código para cada família individual.

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

Em um aplicativo .NET MAUI, o código que você escreve interage principalmente com a API .NET MAUI (1).

O .NET MAUI usa a API(3) da plataforma nativa diretamente. Além disso, o código do aplicativo pode acessar diretamente a API da plataforma(2), se desejado.

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

Os aplicativos Android são compilados de C# para linguagem intermediária (IL) e, em seguida, just-in-time (JIT) para assembly nativo na inicialização do aplicativo;
Os aplicativos iOS são compilados para código de montagem ARM nativo usando C# Ahead of time (AOT);
Os aplicativos macOS criados com .NET MAUI usam o Mac Catalyst, uma solução da Apple que traz aplicativos iOS criados com UIKit para a área de trabalho e os amplia conforme necessário com AppKit adicionais e APIs de plataforma.
Os aplicativos do Windows usam a biblioteca de interface do usuário do Windows (WinUI) 3 para criar aplicativos nativos direcionados à área de trabalho do Windows e à plataforma universal do Windows (UWP).

O que o .NET MAU fornece ?

  • O .NET MAUI fornece um conjunto de controles que você pode usar para exibir dados, iniciar ações, indicar atividades, exibir coleções, selecionar dados e muito mais. Além da coleção de controle, o .NET MAUI fornece:
  • Elaborar mecanismo de layout para criação de páginas;
  • Vários tipos de página para criar tipos de navegação avançados, como gavetas;
  • Suporte a vinculação de dados, um modo de desenvolvimento mais elegante e sustentável;
  • Capacidade de personalizar manipuladores para aprimorar como os elementos da interface do usuário são renderizados;
  • API básica de plataforma cruzada para acessar recursos de dispositivos nativos. Essas APIs permitem que os aplicativos acessem coisas como GPS, acelerômetro, bateria e status da rede. Para obter mais informações, consulte . NET MAUI Essentials;
  • Uma biblioteca gráfica multiplataforma que fornece uma API multiplataforma comum que permite compartilhar código de desenho 2D entre plataformas ou misturar e combinar implementações gráficas em um único aplicativo;
  • Use um sistema de projeto único multithread para Android, iOS, macOS e Windows.

. NET Hot Reload, para que você possa modificar seu XAML e código-fonte gerenciado enquanto o aplicativo estiver em execução e, em seguida, observar os resultados das modificações sem recompilar o aplicativo. Para obter mais informações, consulte Hot Reload.

Além disso o MAUI fornece APIs multiplataforma para recursos de dispositivos nativos que incluem as seguintes funcionalidades :

  • Acesso a sensores no dispositivo, como acelerômetro, bússola e giroscópio;
  • Capacidade de verificar o status da conexão de rede do dispositivo e detectar alterações;
  • Fornecer informações sobre o dispositivo no qual o aplicativo está sendo executado;
  • Copie e cole texto da área de transferência do sistema entre aplicativos;
    selecione um ou mais arquivos do dispositivo;
  • Armazene dados de forma segura como pares chave/valor;
  • Leia o texto do dispositivo usando o mecanismo integrado de conversão de texto em fala;
    Inicia um fluxo de autenticação baseado em navegador que escuta retornos de chamada para uma URL de registro de aplicativo específica.

Os aplicativos MAUI normalmente consistem em um único projeto que pode ser direcionado ao Android, iOS, macOS e Windows. Isso oferece os seguintes benefícios:

  • Um projeto direcionado a múltiplas plataformas e dispositivos;
  • Um local para gerenciar recursos como fontes e imagens;
  • Multithreading para organizar o código específico da plataforma;
  • NET MAUI inclui suporte para . NET Hot Reload, que permite modificar o código-fonte gerenciado enquanto seu aplicativo está em execução sem ter que pausar manualmente ou atingir pontos de interrupção. Suas edições de código podem ser aplicadas ao aplicativo em execução sem recompilar.

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

O lançamento do  MAUI foi adiado até o primeiro semestre de 2022, mas você pode desenvolver e testar com o . NET MAUI Preview 10, que está integrado ao Visual Studio 2022 Preview 17.1.