Quando usar Xamarin.Forms vs Xamarin Native?

Eu estou em necessidade de fazer uma escolha entre aplicativos nativos Xamarin.Forms vs Xamarin.

Eu quero ir com Xamarin.Forms como código de interface do usuário será compartilhado também.

Então, quais são as desvantagens de Xamarin.Forms, em comparação com o nativo.

Além dos pontos mostrados no site Xamarin, você também deve considerar:

O histórico da sua equipe

Alguém na sua equipe tem uma experiência anterior codificando nativamente para Android ou iOS (usando Java ou Obj-C / Swift)? Essa experiência é reutilizada no Xamarin nativo, mas eles precisarão aprender outra plataforma para codificar no Forms.

O mesmo acontece se eles não souberem nada sobre iOS / Android, mas conhecerem algum xaml. Claro Xamarin.Forms é diferente do WPF / Silverlight, mas sabendo xaml certamente me ajudou usando Forms.

atuação

O Xamarin Forms ainda apresenta alguns problemas, como o tempo de boot. Você deve considerar se isso será ou não um problema para seu usuário final. Eu não me incomodaria em esperar um pouco por um aplicativo de painel que eu uso de vez em quando para abrir, mas ficaria com raiva se o mesmo acontecesse com um aplicativo de mensagens.

Tempo até a entrega

Como o compartilhamento de código é maior ao usar o Formulários, você pode esperar um tempo de entrega mais rápido.

Complexidade do seu aplicativo

Considerando o ponto anterior, usando o Forms você pode tropeçar em algum bug show stopper (afinal, é uma tecnologia muito nova) que anulará os ganhos de tempo. Considere a complexidade do seu aplicativo antes de escolher.

Xamarin.Forms

Prós

  • Crie uma interface do usuário para todas as plataformas
  • Use componentes básicos que estão disponíveis em todas as plataformas (como botões, campos de texto, spinners etc.)
  • Não há necessidade de aprender todos os frameworks de UI nativos
  • Processo de desenvolvimento rápido de plataforma cruzada
  • Os renderizadores nativos personalizados oferecem a capacidade de ajustar a aparência e a sensação dos controles

Contras

  • Ainda é um novo framework e ainda contém bugs
  • Especialmente o Windows RT ainda não está estável
  • Às vezes é mais lento do que acessar os controles nativos diretamente
  • Representantes nativos personalizados têm limites e são mal documentados

Xamarin.Android, Xamarin.iOS, Windows Phone, Windows RT

Prós

  • Crie uma interface do usuário por plataforma
  • Capacidade fácil de ajustar os resources e componentes específicos da interface do usuário da plataforma
  • Tire o máximo proveito da sua interface do usuário

Contras

  • O processo de desenvolvimento entre plataformas é muito mais lento
  • Você precisa aprender todos os frameworks de UI nativos
  • Você pode resultar em ter código duplicado (como você descreve quase a mesma interface do usuário em três maneiras diferentes de plataforma específica)

Além disso, Xamarin diz em https://xamarin.com/forms :

Qual abordagem Xamarin é melhor para seu aplicativo?

Xamarin.Forms é melhor para:

  • Aplicativos de input de dados
  • Protótipos e provas de conceito
  • Aplicativos que exigem pouca funcionalidade específica da plataforma
  • Aplicativos em que o compartilhamento de código é mais importante do que a interface do usuário personalizada

Xamarin.iOS e Xamarin.Android são melhores para:

  • Apps que exigem interações especializadas
  • Apps com design altamente polido
  • Aplicativos que usam muitas APIs específicas da plataforma
  • Aplicativos em que a interface do usuário personalizada é mais importante do que o compartilhamento de código

Do site Xamarin

Xamarin.Forms é melhor para:

  • Aplicativos de input de dados
  • Protótipos e provas de conceito
  • Aplicativos que exigem pouca funcionalidade específica da plataforma
  • Aplicativos em que o compartilhamento de código é mais importante do que a interface do usuário personalizada

Xamarin.iOS e Xamarin.Android são melhores para:

  • Apps que exigem interações especializadas

  • Apps com design altamente polido

  • Aplicativos que usam muitas APIs específicas da plataforma

  • Aplicativos em que a interface do usuário personalizada é mais importante do que o compartilhamento de código