Visão geral da criação de aplicativos multiplataforma

Este guia apresenta primeiro a plataforma Xamarin. Ele discutirá como arquitetar um aplicativo multiplataforma para maximizar a reutilização de código. Por fim, como fornecer uma experiência nativa de alta qualidade em plataformas móveis iOS e Android.

A abordagem usada neste documento pode ser usada para aplicativos de produtividade e aplicativos de jogos, no entanto, o foco está na produtividade e no utilitário (aplicativos que não são de jogos). Consulte Ferramentas do Visual Studio para Unity para obter diretrizes de desenvolvimento de jogos multiplataforma.

A frase "write-once, run everywhere" geralmente é usada para exaltar as virtudes de uma única base de código que é executada sem modificação em várias plataformas. Embora tenha o benefício da reutilização de código, essa abordagem tem desvantagens. Duas desvantagens comuns são aplicativos que têm um conjunto de recursos de denominador comum mais baixo e uma interface do usuário de aparência genérica que não se encaixa bem em nenhuma das plataformas de destino.

O Xamarin não é apenas uma plataforma "write-once, run everywhere", porque um de seus pontos fortes é a capacidade de implementar interfaces de usuário nativas especificamente para cada plataforma. No entanto, com um design pensativo, ainda é possível compartilhar a maior parte do código de interface do usuário e obter o melhor dos dois mundos. Escreva seu armazenamento de dados e o código lógico de negócios uma vez e apresente interfaces do usuário nativas em cada plataforma. Este documento discute uma abordagem de arquitetura geral para atingir essa meta.

Aqui está um resumo dos principais pontos para criar aplicativos multiplataforma do Xamarin:

  • Usar C# – Escreva seus aplicativos em C#. O código existente escrito em C# pode ser portado para iOS e Android usando o Xamarin facilmente e usado em aplicativos do Windows.
  • Utilizar padrões de design MVC ou MVVM – desenvolva a Interface do Usuário do aplicativo usando o padrão Model/View/Controller. Arquitete seu aplicativo usando uma abordagem de Modelo/Exibição/Controlador ou uma abordagem Model/View/ViewModel em que há uma separação clara entre o "Modelo" e o restante. Determine quais partes do aplicativo usarão elementos nativos da interface do usuário de cada plataforma (iOS, Android, Windows, Mac) e use isso como diretriz para dividir seu aplicativo em dois componentes: "Core" e "User-Interface".
  • Criar interfaces do usuário nativas – cada aplicativo específico do sistema operacional fornece uma camada de interface do usuário diferente (implementada em C# com a assistência de ferramentas de design de interface do usuário nativas):
  1. No iOS, use as APIs do UIKit para criar aplicativos de aparência nativa, usando Storyboards para a camada de apresentação, criadas no Xcode.
  2. No Android, use Android.Views para criar aplicativos de aparência nativa, aproveitando o designer de interface do usuário do Xamarin.
  3. No Windows, você usará XAML para a camada de apresentação, criada no Visual Studio ou no designer de interface do usuário do Blend.
  4. No Mac, você usará Storyboards para a camada de apresentação, criada no Xcode.

Os projetos do Xamarin.Forms têm suporte em todas as plataformas e permitem que você crie interfaces do usuário que podem ser compartilhadas entre plataformas usando XAML do Xamarin.Forms.

A quantidade de reutilização de código dependerá em grande parte da quantidade de código mantida no núcleo compartilhado e da quantidade de código específica da interface do usuário. O código principal é qualquer coisa que não interaja diretamente com o usuário, mas fornece serviços para partes do aplicativo que coletarão e exibirão essas informações.

Para aumentar a quantidade de reutilização de código, você pode adotar componentes multiplataforma que fornecem serviços comuns em todos esses sistemas, como:

  1. SQLite-net para armazenamento SQL local,
  2. Plug-ins do Xamarin para acessar recursos específicos do dispositivo, incluindo a câmera, contatos e geolocalização,
  3. Pacotes NuGet compatíveis com projetos Xamarin, como Json.NET,
  4. Usando recursos do .NET Framework para rede, serviços Web, E/S e muito mais.

Alguns desses componentes são implementados no estudo de caso Tasky .

Separar código reutilizável em uma biblioteca principal

Seguindo o princípio da separação de responsabilidade colocando em camadas a arquitetura do aplicativo e movendo a funcionalidade principal independente da plataforma para uma biblioteca principal reutilizável, você pode maximizar o compartilhamento de código entre plataformas, como ilustra a figura abaixo:

Seguindo o princípio da separação de responsabilidade colocando em camadas a arquitetura do aplicativo e movendo a funcionalidade principal independente da plataforma para uma biblioteca principal reutilizável, você pode maximizar o compartilhamento de código entre plataformas

Estudos de Caso

Há um estudo de caso que acompanha este documento – Tasky Pro. Cada estudo de caso discute a implementação dos conceitos descritos neste documento em um exemplo do mundo real. O código é código aberto e está disponível no github.