Descrever a arquitetura do .NET MAUI

Concluído

Um padrão comum usado para o desenvolvimento de aplicativos multiplataforma é separar a lógica de negócios da interface do usuário e desenvolver interfaces do usuário e lógicas de interface do usuário separadas para cada plataforma. Enquanto a lógica de negócios permanece inalterada para cada tipo de dispositivo, o código que orienta o aplicativo e apresenta os dados pode variar. Essa variância ocorre devido às diferentes funcionalidades, APIs e recursos fornecidos pelos dispositivos. A criação de um aplicativo multiplataforma dessa maneira envolve lidar não apenas com SDKs (Software Development Kits) separados, mas com linguagens e conjuntos de ferramentas totalmente diferentes.

A finalidade do .NET MAUI (Multi-Platform App UI) é simplificar o desenvolvimento de aplicativos multiplataforma. Usando o .NET MAUI, você cria aplicativos multiplataforma usando um só projeto, mas pode adicionar recursos e código-fonte específicos da plataforma, se necessário. O objetivo principal 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 só base de código.

Nesta unidade, você aprenderá sobre a arquitetura do .NET MAUI e as ferramentas necessárias para criar aplicativos .NET MAUI.

O que é a pilha de tecnologia .NET MAUI?

O .NET fornece uma série de estruturas específicas de plataforma para a criação de aplicativos: .NET para Android, .NET para iOS (e iPadOS), .NET para Mac e WinUI 3 (por meio do SDK do Aplicativo Windows). Todas essas estruturas têm acesso à mesma BCL (Biblioteca de Classes Base) do .NET 6. Essa biblioteca fornece a funcionalidade para criar e gerenciar recursos e para abstrair, de modo geral, os detalhes do dispositivo subjacente de seu código. A BCL depende do runtime do .NET para fornecer o ambiente de execução para o código. O Mono, uma implementação de código aberto do runtime do .NET, implementa os ambientes Android, iOS (e iPadOS) e macOS. No Windows, o Win32 executa a mesma função, mas é otimizado para a plataforma Windows.

Embora o BCL permita que aplicativos em execução em diferentes tipos de dispositivos compartilhem a lógica de negócios comum, as várias plataformas têm diferentes maneiras de definir a interface do usuário de um aplicativo. As plataformas 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 Mac 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 só estrutura para a criação de UIs para aplicativos móveis e de área de trabalho. Você cria a interface do usuário usando essa estrutura (indicada pela seta 1 no diagrama a seguir) e o .NET MAUI trata de convertê-la na plataforma apropriada (seta 2).

Pode haver ocasiões em que você precisa implementar um recurso específico da plataforma. Nessas situações, você pode invocar métodos na estrutura específica da plataforma, conforme realçado pela seta 3 no diagrama a seguir.

Diagrama da pilha de tecnologia do .NET MAUI e como implementar um recurso específico à plataforma.

Como o .NET MAUI funciona?

O .NET MAUI abstrai a implementação de um elemento de interface do usuário de sua descrição lógica. Você pode descrever a interface do usuário usando o XAML (Extensible Application Markup Language), uma linguagem neutra em plataforma baseada em XML. Por exemplo, o seguinte fragmento XAML mostra a descrição de um controle de botão:

<Button Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Clicked="OnCounterClicked"
        HorizontalOptions="Center" />

Este exemplo define o rótulo do botão ("Clique em mim") e especifica que um método chamado OnCounterClicked deve ser executado quando o usuário seleciona o botão. Outras propriedades podem modificar o layout e o texto do botão. Neste exemplo, o texto está centralizado no botão. As propriedades semânticas dão suporte à acessibilidade para usuários com deficiência visual.

O .NET MAUI sempre gera código nativo para o dispositivo de destino para que você tenha o desempenho ideal. O .NET MAUI usa manipuladores específicos para cada plataforma e elemento da interface do usuário para executar uma operação. Por exemplo, se você tiver como destino o iOS para o aplicativo, um manipulador do .NET MAUI mapeará esse código para um UIButton do iOS. Se você executar no Android, obterá um AppCompatButton do Android. Esses manipuladores são acessados indiretamente por meio de uma interface específica do controle fornecida pelo .NET MAUI, como IButton para um botão.

Diagrama de como o .NET MAUI mapeia um controle XAML para um controle nativo. Ele mostra que o controle do .NET MAUI implementa uma interface que cada manipulador nativo também implementa.

Observação

Se preferir, você também poderá criar a interface do usuário dinamicamente usando código C#. Essa abordagem permite modificar o layout de acordo com o ambiente. Por exemplo, talvez você não queira que determinados controles apareçam se o usuário não tiver um nível de autorização adequado.

O .NET MAUI facilita o acesso a controles comuns, como botões. Outros controles comuns – como campos de entrada de texto, rótulos e seletores de data – são tão fáceis de usar quanto eles. No entanto, os controles individuais não são suficientes para criar uma boa plataforma para a criação de aplicativos avançados. 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 criar manipuladores personalizados para aprimorar a maneira como os elementos da interface do usuário são apresentados.
  • Acesso direto a APIs nativas e uma abstração de muitas necessidades comuns de aplicativos da área de trabalho e móveis que são separados da interface do usuário. A biblioteca de elementos essenciais permite que um aplicativo acesse itens como GPS, acelerômetro e estados de bateria e de rede. Dezenas de sensores e serviços comuns ao desenvolvimento móvel também estão disponíveis por meio dessa biblioteca.

Verificação de conhecimentos

1.

Qual ambiente dá suporte de runtime para um aplicativo WinUI 3?

2.

Qual linguagem de marcação você pode usar para dispor a interface do usuário de um aplicativo .NET MAUI?