Mobile

27 nov, 2021

O que é o .NET MAUI?

Publicidade

O .NET Multi-platform App UI (.NET MAUI) é um framework multiplataforma para a criação de aplicativos móveis e desktop nativos com C# e XAML (https://docs.microsoft.com/en-us/dotnet/maui/what-is-maui).

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

O .NET MAUI é de código aberto, e, é a evolução do Xamarin.Forms, estendido de cenários móveis a desktops, com controles de IU reconstruídos do zero para desempenho e extensibilidade.

Se você já usou o Xamarin.Forms para construir interfaces de usuário multiplataforma, você notará muitas semelhanças com o .NET MAUI. No entanto, também existem algumas diferenças. Usando o .NET MAUI, você pode criar aplicativos multiplataforma usando um único projeto, mas pode 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.

O .NET MAUI é voltado para desenvolvedores que querem:

  • Escrever aplicativos multiplataforma em XAML e C#, a partir de uma única base de código compartilhada no Visual Studio;
  • Compartilhar o layout e o design da IU entre plataformas;
  • Compartilhar código, teste e lógica de negócios entre plataformas;

Como o .NET MAUI funciona ?

O .NET MAUI unifica Android, iOS, macOS e as APIs do Windows em uma única API que permite uma experiência de desenvolvedor “escreva uma vez, execute em qualquer lugar“, enquanto fornece acesso a todos os aspectos de cada plataforma nativa.

O .NET 6 fornece uma série de frameworks específicos de plataforma para a criação de aplicativos:  .NET para Android, .NET para iOS, .NET para macOS e  uma biblioteca de IU do Windows (WinUI). Todos esses frameworks têm acesso à mesma Base Class Library  (BCL) do .NET 6, e, esta biblioteca abstrai os detalhes da plataforma subjacente de seu código.

BCL depende do runtime .NET para fornecer o ambiente de execução para seu código. Para Android, iOS e macOS, o ambiente é implementado pelo Mono, uma implementação do runtime .NET. No Windows, o WinRT desempenha a mesma função, exceto que é otimizado para a plataforma Windows.

Enquanto a BCL permite que aplicativos executados em plataformas diferentes 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 IU para cada plataforma separadamente usando o framework específico 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 de dispositivos.

Desta forma, o  .NET MAUI fornece um framework único para construir 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 de um aplicativo .NET MAUI:

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

O .NET MAUI então consome diretamente as APIs da plataforma nativa(3). Além disso, o código do aplicativo pode acessar diretamente as APIs da plataforma(2), se necessário.

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

  • Os aplicativos Android são compilados do C# para a linguagem intermediária (IL), que é então compilada just-in-time (JIT) para um assembly nativo quando o aplicativo for iniciado;
  • Os aplicativos iOS são compilados usando a compilação Ahead of time(AOT) de C# para o código de assembly ARM nativo;
  • Os aplicativos macOS desenvolvidos com .NET MAUI usam Mac Catalyst, uma solução da Apple que traz seu aplicativo iOS desenvolvido com UIKit para a área de trabalho e o aumenta com AppKit adicionais e APIs de plataforma, conforme necessário.
  • Os aplicativos do Windows usam a Biblioteca de IU do Windows (WinUI) 3 para criar aplicativos nativos que podem ser direcionados à área de trabalho do Windows e à Plataforma Universal do Windows (UWP).

O que o .NET MAU 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 oferece:

  • Um elaborado mecanismo de layout para criar páginas;
  • Vários tipos de página para criar tipos de navegação avançados, como gavetas;
  • Suporte para vinculação de dados, para padrões de desenvolvimento mais elegantes e sustentáveis;
  • A capacidade de personalizar manipuladores para aprimorar a maneira como os elementos da IU são apresentados;
  • APIs multiplataforma essenciais para acessar recursos nativos do dispositivo. Essas APIs permitem que os aplicativos acessem coisas como o GPS, o acelerômetro e os estados da bateria e da rede. Para obter mais informações, consulte Princípios básicos do .NET MAUI;
  • Uma biblioteca de gráficos de plataforma cruzada, que fornece uma API comum para várias plataformas, que permite compartilhar seu código de desenho 2D entre plataformas ou combinar e combinar implementações de gráficos com um único aplicativo;
  • Um sistema de projeto único que usa segmentação múltipla para direcionar Android, iOS, macOS e Windows.
  • .NET Hot reload, para que você possa modificar seu XAML e seu código-fonte gerenciado enquanto o aplicativo está em execução e, em seguida, observe o resultado de suas modificações sem reconstruir o aplicativo. Para obter mais informações, consulte .NET hot reload.

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

  • 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;
  • Fornece informações sobre o dispositivo em que o aplicativo está sendo executado;
  • Copiar e colar texto na área de transferência do sistema, entre os aplicativos;
  • Escolher um ou vários arquivos do dispositivo;
  • Armazenar dados com segurança como pares chave / valor;
  • Utilizar motores de conversão de texto em voz integrados para ler o texto do dispositivo;
  • Iniciar fluxos de autenticação baseados em navegador que escutam um retorno de chamada para um URL registrado de aplicativo específico.

Os aplicativos .NET 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 que visa várias plataformas e dispositivos;
  • Um local para gerenciar recursos como fontes e imagens;
  • A Multi-segmentação para organizar o código específico da plataforma;

O NET MAUI inclui suporte para .NET hot reload, que permite que você modifique seu 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, suas edições de código podem ser aplicadas ao aplicativo em execução sem recompilação.

.NET MAUI inclui suporte para recarregamento a quente XAML, o que permite que você salve seus arquivos XAML e veja 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 IU sem perder seu lugar no aplicativo.

O lançamento do .NET MAUI foi postergado para o primeiro semestre de 2022 mas você pode acompanhar o desenvolvimento e fazer o testes usando o .NET MAUI Preview 10 que foi integrado a versão preview 17.1 do Visual Studio 2022.

Se quiser conferir e acompanhar o desenvolvimento do .NET MAUI acesse : https://github.com/dotnet/maui.