Descrever a arquitetura .NET MAUI

Concluído

Um padrão comum usado para o desenvolvimento de aplicativos entre plataformas é fatorar a lógica de negócios da interface do usuário e, em seguida, desenvolver interfaces de usuário e lógica de interface do usuário separadas para cada plataforma. Embora a lógica de negócios permaneça inalterada para cada tipo de dispositivo, o código que conduz o aplicativo e apresenta os dados pode variar. Essa variação é devido aos diferentes recursos, APIs e recursos que os dispositivos fornecem. Criar um aplicativo multiplataforma dessa maneira envolve lidar não apenas com SDKs separados, mas com linguagens e conjuntos de ferramentas completamente diferentes.

O objetivo do .NET MAUI é simplificar o desenvolvimento de aplicativos multiplataforma. Usando a MAUI do .NET, você cria aplicativos multiplataforma usando um único projeto, mas pode adicionar código-fonte e recursos específicos da plataforma, se necessário. O principal objetivo 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.

Nesta unidade, você aprenderá sobre a arquitetura .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 (aproveitando o SDK de aplicativos do Windows). Todas essas estruturas têm acesso à mesma BCL (Base Class Library) do .NET 6. Essa biblioteca fornece a funcionalidade para criar e gerenciar recursos e para abstrair geralmente os detalhes do dispositivo subjacente longe do seu código. A BCL depende do tempo de execução do .NET para fornecer o ambiente de execução para seu código. Para Android, iOS (e iPadOS) e macOS, o ambiente é implementado pelo Mono, uma implementação de código aberto do tempo de execução do .NET. No Windows, o Win32 executa a mesma função, exceto que é otimizado para a plataforma Windows.

Embora a BCL permita que aplicativos executados em diferentes tipos de dispositivos compartilhem 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. As plataformas fornecem modelos variados para especificar como os elementos da 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 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 estrutura única para criar as interfaces do usuário para aplicativos móveis e de desktop. Você cria a interface do usuário usando essa estrutura (indicada pela seta 1 no diagrama a seguir) e o .NET MAUI se encarrega de convertê-la para a plataforma apropriada (seta 2).

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

Diagram of the .NET MAUI technology stack and how to implement a platform-specific feature.

Como funciona o .NET MAUI?

O .NET MAUI abstrai a implementação de um elemento da interface do usuário de sua descrição lógica. Você pode descrever a interface do usuário usando XAML, uma linguagem neutra de plataforma baseada em XML. Por exemplo, o fragmento a seguir XAML mostra a descrição de um controle button:

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

Este exemplo define o rótulo para o botão ("Click me") 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 do botão e do texto; Neste exemplo, o texto está centralizado no botão. As propriedades semânticas fornecem suporte para acessibilidade para usuários com deficiência visual.

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

Diagram of how .NET MAUI maps a XAML control to a native control. It shows the .NET MAUI control implements an interface that each native handler also implements.

Nota

Se preferir, você também pode criar a interface do usuário dinamicamente usando o 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 apropriado.

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 igualmente fáceis. No entanto, os controles individuais não são suficientes para criar uma boa plataforma para criar aplicativos avançados. O .NET MAUI também fornece:

  • Um mecanismo de layout elaborado para projetar 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 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 a APIs nativas diretamente e uma abstração de muitas necessidades comuns de aplicativos móveis ou de desktop que são separados da interface do usuário. A biblioteca de itens essenciais permite que um aplicativo acesse coisas como o GPS, o acelerômetro e os estados da bateria e da rede. Existem dezenas de sensores e serviços comuns ao desenvolvimento móvel também disponíveis através desta biblioteca.

Verificação de conhecimento

1.

Qual ambiente fornece o suporte de tempo de execução para um aplicativo WinUI 3?

2.

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