Conheça a Plataforma Xamarin

  • View
    350

  • Download
    2

  • Category

    Mobile

Preview:

Citation preview

PLATAFORMA XAMARINWilliam S. Rodriguez

Arquiteto de Soluções no Grupo Viceri

wrodriguez@viceri.com.br

Agenda

Desenvolvimento mobile;

Por que criar aplicações nativas;

A Plataforma Xamarin e código compartilhado;

Clico de vida de aplicativos e DevOps;

Xamarin e Microsoft;

Xamarin no Grupo Viceri

DESENVOLVIMENTO MOBILEArquiteturas e modelos de desenvolvimento

2012

2014

http://bit.ly/mobile-social-data

O mesmo aplicativo várias vezes

Abordagem de Silos

Java

Eclipse

Android App

C#

Visual Studio

Windows App

Objective-C

XCoce

iOS App

Três vezes mais problemas

• Perfis diferentes de profissionais;

• Investimento em hardware diferentes;

• Linguagens incompatíveis entre si (JAVA, Objective C, C#);

• Sobrecarga na Gestão;

• Dificuldades para execução de Teste;

• Maior tempo para lançamento de novas funcionalidades.

Então vamos começar pelo mais fácil

• Aplicativos Android custam de 2 a 3 vezes mais para desenvolver do que Aplicativos iOS;

• Fragmentação de ambiente (8 versões do OS e mais de 7mil dispositivos diferentes);

• Produtividade;

• API’s mais complexas (difíceis de utilizar);

Dispositivos Android

* Mesmo se você tiver o mesmo esforço

de desenvolvimento para todas as trêsplataformas ainda terá três meses de projeto

* Utopia

1 Mês iOS + 2 Meses para Android = 1 projeto de 3 meses;

Abordagem da “caixa mágica preta”

• Experiência do usuário pobre

• Não utiliza toda a capacidade de recursos das plataformas de forma homogenia;

• Apresenta problemas de compatibilidade e performance;

• Difícil manutenção e debug;

• Alta taxa de abandono e desperdício de investimento

Black Box

Escreva uma vez e execute em qualquer dispositivo

Interfaces fora

do padrão

Performance

não nativa

Acesso a API’s

limitados

Mas o HTML5 vai nos salvar!?

"The biggest mistake we made as a company was betting too much on HTML5 rather than native"

- Mark Zuckerberg

Mas o HTML5 vai nos salvar!?

HTML5 APP NATIVA

Por que criar App’s Nativas?

“As pessoas esperam uma grande experiência em dispositivos Mobile”- Miguel de Icaza

Aplicações Nativas

Interface de usuário Nativa

High-fidelity API Access

Native Performance

App’s são construídas utilizando interface e ,

controles padrão permitindo interações fáceis e

familiares

App’s têm acesso a toda a gama de funcionalidade

exposta pela plataforma independente de dispositivo

App’s tiram vantagem de aceleração de hardware

e recursos específicos da plataforma, e são

compilados como binários nativos, não

interpretadas em tempo de execução.

A PLATAFORMA XAMARINCódigo NATIVO compartilhado

Xamarin Utiliza uma Abordagem Única

Criar aplicações nativas iOS, Android, Mac e Windows utilizando C#.

Por que Xamarin?

Mobile Enterprise Application Platform

Construa App's Nativas Teste Monitore

Código C#

Compartilhado no Backend

Xamarin

Android C# UI Windows C# UIiOS C# UI

API's Windows

iOS API's 100% de Cobertura

Android API's 100% de Cobertura

Não só Smartphones e Tablets

Nearables

Xamarin.Robotics

Wearables

http://bit.ly/xamarin-nearables

http://bit.ly/xamarin-robotics

http://bit.ly/xamarin-wearables

Por que Xamarin?

Compartilhe o código que faz sentido, tire vantagem da UX nativa de cada plataforma.

Compartilhamento de Código

• Compartilhar apenas o core da aplicação;

• Interface Nativa;• Cria a interface de acordo com as

características de cada plataforma.

• Abuso das características do dispositivo;

• 100% de compatibilidade;C#

Backend70%

C# UI30%

Media de Compartilhamento

Desenvolvimento Acelerado com Compartilhamento de Código

Estatísticas de construção utilizando código compartilhado com Xamarin, para um aplicativo

simulador de circuitos em tempo real utilizado para desenha circuitos analógicos e digitais.

User Interface Code

App Logic

70%

30%

86%

14%

85%

15%

88%

12%

{ iOS } { Android } { Windows RT } { OS X }

http://icircuitapp.com/

50 milhões de linhas de código compartilhado

• Precisavam de uma solução escalável para aplicativos nativos em múltiplas plataformas.

• Aplicativos originais construídos utilizando abordagem de silos. Equipe era incapaz de entregar novos recursos em todas as plataformas simultaneamente.

• Custos elevados para desenvolvimento e manutenção de aplicativos.

50 milhões de linhas de código compartilhado

Utilizando Xamarin

Rdio agora compartilha mais de 50 milhões linhas código de C # através iOS, Android e Windows, permitindo que eles se concentrem em recurso de paridade e experiência do usuário.

“Rdio’s mobile app is also the best looking and best

implemented of the three [music streaming apps reviewed]”

– Wired

Xamarin é Código Nativo

• Interoperabilidade com qualquer linguagem;

• Utilizar bibliotecas Android e iOS de forma nativa;

• Debug de objetos Java e Objective C.

• Executa código Java e Objective C

• Empacota e disponibiliza uma aplicação nativa única;

• Posso utilizar Binding para bibliotecas e objetos Java (JAR);• Não é possível fazer fora de framework nativo.

Performance Nativa

App’s construídas com Xamarin são nativas pois utilizam código nativo.

Xamarin.iOS executa compilação Ahead Of

Time (AOT) produzindo o binário (.app) ARM

para Apple App Store.

Xamarin.Android tira vantage da compilação

Just In Time (JIT) nos dispositivos Android.

Qualquer coisa que você conseguir fazer utilizando Objective-C, Swift, ou Java! Pode ser

feita com C# e Xamarin no Visual Studio

Visual Studio como IDE

• Todas as funcionalidades do Visual Studio disponíveis

• Help, debug, intelisense, refactor, watch, etc...

• Debugar código nativo;

• Integração com TFS.

Visual Studio como IDE

• Desenho de telas integrado (iOS, Android e Windows Phone)

• Gerenciar dependências via NuGet ou NuGet privado;

• Uso de uma única linguagem de desenvolvimento C#;

• Suporte a PCL;• DLL portáveis.

Integração com Mac (build host)

• Licenciamento da Apple requer um Mac para Build e teste de aplicativos iOS.

Xamarin Android Designer

• Integração completa com Visual Studio;

• Drag and drop de componentes;

• Muilti edit.

Xamarin iOS Designer

• Integração completa com Visual Studio;

• Suporte a StoryBoard;

• Suporte a auto-layout;

• Live preview para controles customizados.

Por que C#?C Hash Tag ou dó sustenido?

C# roda em 2.5 Bilhões de dispositivos

De computadores, smarthphones, tablets até consoles de jogos como PS4

C#

• Suporte a Linq e Lambdas;

• Eventos e delegates;

• Paralelismo;

• Programação Assíncrona;

• Generics;

• Métodos anônimos;

var doc = Xdocument.Load(utl);

foreach(var item in doc.Root.Elements()) {var text = item.value;

}

from p in Table<Pessoa>()where p.ID == idselect p;

button.TouchUpInside += (s,o) => {message.Text = “Olá!”;

}

from item in itens.AsParallel()let result = VaiDemorarUmPouco(item)select result;

var client = new HttpClient();

Task<string> getStringTask = client.GetStringAsync(“http://viceri.com.br”);

E por ai vai...

C# é mais produtivoMenos código mais resultado

Objective-C C# com Xamarin

Java C# com Xamarin

C# Linguagem Conhecida

Uso de mão de obra já qualificada;

Sem necessidade de treinamento para utilizar o framework;

Utilizar componentes de mercado ou comunidade;

Reaproveitamento de legado.

Xamarin Scanner (C#)

Verificar compatibilidade do seu .exe ou .dll;

Identifica as dependências;

Verificar o quão o código é compatível para as plataformas iOS, Android e Windows;

Fornece um relatório de compatibilidade. http://scan.xamarin.com

Xamarin Mobile API

API’s comuns a todos os dispositivos, expostas em um namespace único;

Xamarin.Mobile, é a mesma API para as 3 plataformas;

Contatos, camera e geolocalização.

* Roadmap inclui notificações e acelerômetro

70% de compartilhamento de código não é suficiente!?

XAMARINFORMS

Até 99% de compartilhamento de código

Construa interfaces Nativas para iOS, Android e

Windows Phone a partir de uma única base de

código C# compartilhada.

Xamarin + Xamarin Forms

Xamarin.Forms - Interface do usuário compartilhada C#

Código C#

Compartilhado no Backend

Escrever uma vez só a interface que é reutilizada nas 3 plataformas.

Xamarin Forms

• Maximiza o compartilhamento de código entre plataformas;

• Mais de 40 controles, páginas e layouts;

• Construa interfaces usando C# ou XAML;

• Two-way Data Binding;

• Navegação, animação, mensageria.

Xamarin Forms Xaml

• Uso de XAML para especificar as telas;

• Binds automatizados;

• Sem código C# para update de interface;

• DataBind com MVVM;

• Customização por Extensões.

* Breve um Design de telas

Xamarin Forms

Pages

Layouts

Xamarin Forms

Controles

C# XAML

Button btn = new Button {

Text = "Clique aqui!",

Rotation = 180,

IsVisible = true,

HorizontalOptions = LayoutOptions.Center,

VerticalOptions = LayoutOptions.Center,

TextColor = Color.Gray,

BorderColor = Color.FromHex("#000000"),

Font = Font.SystemFontOfSize(NamedSize.Medium,

FontAttributes.Italic)

};

<Button Text="Clique aqui!"

Rotation=“180"

IsVisible=“true"

HorizontalOptions=“Center"

VerticalOptions=“Center"

TextColor=“Gray"

BorderColor=“#000000"

Font=“Italic,Medium" />

Mesmo código, três plataformas

Compatibilidade e Atualizações?

Compatibilidade e Atualizações

• Tudo que está no iOS 8 (no mesmo dia)• 100% suportado pelo Xamarin Designer

• Android L• 100% de suporte

• Única solução Cross-plataforma a suportar Wearables• 100% de suporte ao GoogleGlass e Android Wear

• Única solução Cross-plataforma a suportar Amazon FireTV

Xamarin PlayerEmuladores nativos não são performáticos

Xamarin Player

• Boot mais rápido;

• Windows e iOS;

• Drag and drop para instalar Apps;

• Aceleração gráfica;

• ADB Sync

• Muilt Touch;

O Mais rápido do mercado

1565

1853

65

GOOLE NEXUS 4 XAMARIN ANDROID PLAYER

GOOGLE EMULATOR

GeekBench 3 Mult-core

Xamarin Component Store

• Diretório de componentes pagos e gratuitos.

DevOps e ALMPlataforma corporativa suportando o clico de vida de aplicações mobile

Todo o clico de vida de um Aplicativo

• Reaproveitamento de Código;

• Especificação;

• Gestão;

• Construção da Interface;

• Compilação;

• Automação de testes;

• Teste na Nuvem;

• Deploy Automatizado;

• Rastreamento e Monitoramento de aplicações;

Automação de Testes

• Todo o Ciclo de Automação de testes suportado;• Testes unitários;

• Teste de Integração;

• Teste de Interface.

• Praticas com TDD, Integração Contínua, Refatoração, etc;

• Casos de Testes rodam no emulador ou no próprio dispositivo.

Xamarin Test Cloud

• Testar aplicações de Local (nuvem privada);

• Testar aplicações na nuvem de dispositivos da Xamarin

• Parallel Test.

https://testcloud.xamarin.com/devices

DevOps

• De acordo com o processo definido pela equipe;

• CI, gated, etc..

Integração Continua

• Team City

• TFS

• Jenkins

• Travis

TFS

• Integrado ao Visual Studio

• Integração ao Xamarin TestCloud

Mac Build (iOS)

CI e Monitoramento

Xamarin Insights Analytics

• Rastreamento e Log da App;

• Crash Report;

• Monitoramento das sessões;

• Integração com bugreport;

• Integração com CI;

Xamarin Profiler (beta)

• Call Stack;

• Consumo de memória;

• Tempo de execução;

• Alocação de memória;

• Snapshot da memória;

• Visualização de todos os objetos em memória.

Xamarin e MicrosoftParceria estratégica

Tecnologias Microsoft

async

PCL &

Shared

Projects

Parceria Global com Microsoft

• Suporte ao Visual Studio 2013 e 2015;

• Oferta especial para MSDN Subscribers• Preços especial

• Versão Trial de 90 dias

• .NET Foundation• 27 projetos Open Source Microsoft e Xamarin

• .NET Compiler Plataform “Roslyn”

• Xamarin’s MimeKit and Mailkit

Xamarin no Grupo Viceri

1. Protótipo construído pelo design de UX;

2. Arquiteto define diretivas e organização do projeto;

3. Time de desenvolvimento C# constrói o aplicativo;

4. Arquitetura apoia o processo de DevOps;

OBRIGADO William S. Rodriguez

Arquiteto de Soluções no Grupo Viceri

wrodriguez@viceri.com.br

Recommended