Copyright 2015 da Novatec Editora Ltda.



Documentos relacionados
Google Android para Tablets

Julia Elman e Mark Lavin. Novatec

Wilson Moraes Góes. Novatec

agility made possible

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Jonathan Stark Brian Jepson

Design Centrado no Usuário

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

Aprendendo Programação. ios. Alasdair Allan. Novatec

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Adrian Mejia. Novatec

PowerPoint 2010 para o Office 365 para empresas

Aumente o valor do ciclo de vida de cada cliente

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Sistemas Operacionais. Prof. André Y. Kusumoto

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Crie Seu Próprio Site

Harrison Kinsley Will McGugan

CA Mainframe Chorus for Storage Management Versão 2.0

Introdução ao Android

Backsite Serviços On-line

David Hows Peter Membrey Eelco Plugge

Ricardo Lino Olonca. Novatec

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

Desenvolvendo Websites com PHP

Zend. Framework. Componentes Poderosos para PHP. Flávio Gomes da Silva Lisboa. Novatec

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Brandon Rhodes John Goerzen

UFG - Instituto de Informática

Apostila de. WordPress. Gustavo Teixeira da Cunha Coelho Henrique Gemignani Passos Lima. 13 de maio de Primeira Edição RC2

Do Word 2007 para o Office 365 para empresas

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Motorola Phone Tools. Início Rápido

Capítulo 2 Objetivos e benefícios de um Sistema de Informação

Novatec Editora Ltda. [2014].

JORNADA DE COMPRA. O que é e sua importância para a estratégia de Marketing Digital VECTOR

Perguntas. Que todo usuário deveria fazer antes de comprar um software CAD de baixo custo. Por Robert Green, proprietário da Robert Green Consulting

Luiz Carlos Querino Filho

Internet. Gabriela Trevisan Bacharel em Sistemas de Infomação

Informações importantes

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Conectar diferentes pesquisas na internet por um menu

Cinco restrições de desenvolvimento/teste que afetam a velocidade, o custo e a qualidade dos seus aplicativos

ITIL v3 - Operação de Serviço - Parte 1

Programas de Monitoramento e Inventário.

Forneça a próxima onda de inovações empresariais com o Open Network Environment

Capítulo 2 Usabilidade Definição de usabilidade Resumo Leitura recomendada... 39

UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Requisitos de Sistemas

Copyright 2015 da Novatec Editora Ltda.

A forma como trabalhamos tem mudado drasticamente durante os últimos anos.

Hélio Engholm Jr. Novatec

Configurar e gerenciar comunidades do Salesforce

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

QCON RIO 2015 Desenvolvimento para Windos 10. Alexandre

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

Sistema Datachk. Plano de Projeto. Versão <1.0> Z u s a m m e n a r b e i t I d e i a s C o l a b o r a t i v a s

Processos de gerenciamento de projetos em um projeto

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

Pete Goodliffe. Novatec

7 Mudanças Realizadas

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Cursos livres EAD GUIA BÁSICO PARA USO CORPORATIVO.

Introdução a Banco de Dados Aula 03. Prof. Silvestri

PROCESSOS DE CRIAÇÃO DE APLICATIVOS

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

HD, SSD ou disco híbrido, qual o melhor para sua empresa?

Rational Software White Paper TP 155

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Computação II Orientação a Objetos

Criando Aplicações Gráficas com PHP

ESTUDO DE CASO WINDOWS VISTA

Google Android para Tablets

Design de superfície e arte: processo de criação em estamparia têxtil como lugar de encontro. Miriam Levinbook

Simplificamos e aceleramos sua transformação digital.

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

2ª EDIÇÃO. André Milani. Novatec

Manual de Vendas. Chegou a oportunidade de aumentar os lucros com o Windows Server 2012 R2

O que é o Android? O que é o Android

Google Drive. Passos. Configurando o Google Drive

NUVEM HÍBRIDA: DEIXE AS PREOCUPAÇÕES COM SEGURANÇA NO PASSADO.

Desenvolvimento de Grandes Aplicações Web

Ricardo R. Lecheta. Novatec

O QUE É A CENTRAL DE JOGOS?

O guia completo para uma presença. online IMBATÍVEL!

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

marketing ágil Utilização de Metodologias Ágeis em Projetos de Marketing Michelle Accardi-Petersen Novatec

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

VPAT (Voluntary Product Accessibility Template, Modelo de Acessibilidade de Produto) do eportfolio da Desire2Learn Maio de 2013 Conteúdo

Transcrição:

Dan Hermes Novatec

Original English language edition published by Apress, Copyright 2015 by Apress, Inc.. Portugueselanguage edition for Brazil copyright 2015 by Novatec Editora. All rights reserved. Edição original em inglês publicada pela Apress, Copyright 2015 by Apress, Inc. Edição em português para o Brasil copyright 2015 pela Novatec Editora. Todos os direitos reservados. Copyright 2015 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates MP20151117 Tradução: Aldir José Coelho Corrêa da Silva Assistente editorial: Priscila A. Yoshimatsu Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-466-3 Histórico de impressões: Novembro/2015 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

capítulo 1 Desenvolvimento móvel com o uso do Xamarin O desenvolvimento móvel em C# é diferente de qualquer coisa que a maioria de nós fez com a linguagem. Estamos usando-a para desenvolver aplicativos para plataformas não Windows, ou seja, para o Android e o ios. É ao mesmo tempo uma oportunidade e um desafio. A oportunidade surge quando nos expomos à rica variedade de tecnologias que faz parte do novo ecossistema de aplicativos empresariais composto de telefones e tablets de diferentes plataformas e tamanhos. O desafio é o fato de vários desses dispositivos e dessas plataformas serem novos para muitos de nós, portanto há muito que aprender. É claro que também podemos construir aplicativos para Windows Phone e para tablets em C#. A essência do desenvolvimento multiplataforma é a construção de aplicativos que funcionem em mais de um sistema operacional móvel: por exemplo, no Android e no ios, no ios e no Windows Phone ou no ios, no Android e no Windows Phone. Usando as técnicas multiplataforma abordadas neste livro, você estará equipado para desenvolver para todas as principais plataformas móveis! A parte mais empolgante/temerosa dessa jornada é conhecer as vantagens e desvantagens de vários sistemas operacionais. Ainda bem que o Xamarin nos isenta de conhecer muitos dos detalhes, encapsulando as APIs específicas de plataformas e expondo código.net familiar usando C#. Inversamente, o que nos é exposto em detalhes são as APIs de interface de usuário (UI, user interface) de cada plataforma encapsuladas em C#, o que nos proporciona um controle preciso sobre o design visual de nosso aplicativo. O truque é entender quais aspectos de cada sistema operacional são importantes durante o desenvolvimento e quais podem ser deixados a cargo do Xamarin. Embora valha a pena aumentar nosso conhecimento, não há horas suficientes em um dia, e no fim das contas precisamos ter um software funcional. Essas são perguntas-chave: como lidar com o desenvolvimento de um aplicativo móvel multiplataforma? Dado o histórico e a experiência que já temos desenvolvendo em C#, como pegar esse conhecimento e aproveitá-lo no espaço móvel? Para concluir, dada a miríade de coisas que têm de ser aprendidas sobre esses 33

34 Desenvolvimento de aplicativos móveis com Xamarin sistemas operacionais, o que precisamos para seguir em frente e que nos ajude a resolver os importantes desafios? Na criação de aplicativos para mais de uma plataforma, uma meta importante é a reutilização de código. Quanto mais reutilizarmos, mais rápidos e baratos serão nossos projetos e menos custos teremos com manutenção. A Xamarin chama isso de unicórnio do desenvolvimento móvel: escrever uma vez, executar em qualquer lugar. A busca pelo unicórnio começa com uma donzela formosa que o incite a aparecer. Nossa donzela formosa é o design multiplataforma. Vejamos como o Xamarin pode nos ajudar a resolver nossos enigmas móveis na busca pelo design multiplataforma. O que é Xamarin? Xamarin é uma plataforma de desenvolvimento que nos permite codificar aplicativos nativos multiplataforma para ios, Android e Windows Phone em C#. Como ele faz isso? Continue a ler. APIs nativas encapsuladas Descendente da iniciativa open source Mono Project que trouxe o.net para o Linux, a plataforma Xamarin é uma porta.net para os sistemas operacionais ios e Android com suporte para Windows Phone (Figura 1.1). Sob o Xamarin. Android temos o Mono for Android e abaixo do Xamarin.iOS fica o MonoTouch. Essas são vinculações C# que conduzem às APIs nativas do Android e ios para o desenvolvimento em tablets e outros dispositivos móveis. Logo, é um esquema que nos proporciona o poder da interface de usuário, notificações, elementos gráficos, animação e recursos telefônicos como localização e câmera do Android e ios tudo com o uso de C#. Cada novo lançamento dos sistemas operacionais Android e ios é acompanhado por uma nova versão do Xamarin que inclui vinculações às novas APIs. A porta.net do Xamarin inclui recursos como tipos de dados, tipos genéricos, coleta de lixo, Language-Integrated Query (LINQ), padrões de programação assíncrona, delegates e um subconjunto da Windows Communication Foundation (WCF). As bibliotecas são gerenciadas com um vinculador para incluir só os componentes referenciados. O Xamarin.Forms é uma camada que fica acima das outras vinculações de UI e da API do Windows Phone e fornece uma biblioteca de UI totalmente multiplataforma.

Capítulo 1 Desenvolvimento móvel com o uso do Xamarin 35 Figura 1.1 As bibliotecas C#do Xamarin se vinculam aos SDKs de sistemas operacionais nativos e ao.net. Portanto temos um ambiente.net com bibliotecas ios e Android vinculadas a C# e com suporte a Windows Phone sendo executado no sistema operacional móvel de sua escolha. Excelente. Mas como construir UIs e escrever código usando essas bibliotecas para criar aplicativos móveis? Claro que usando ambientes de desenvolvimento e designers de UI. Ambientes de desenvolvimento O Xamarin fornece ambientes de desenvolvimento e designers para nos ajudar a construir aplicativos móveis no Windows ou no Mac. As duas principais opções de ambientes de desenvolvimento são o Xamarin Studio no Mac ou no Windows, ou o Visual Studio no Windows com o plug-in do Xamarin para Windows. Um Mac é sempre necessário para a compilação de aplicativos ios, mesmo se o Visual Studio for usado como ambiente de desenvolvimento. Designers de UI As ferramentas que usamos para criar interfaces de usuário móveis são chamadas de designers. Elas geram arquivos Extensible Markup Language (XML) em seus respectivos formatos proprietários. Dois designers estão disponíveis no Xamarin: Xamarin Designer for Android Xamarin Designer for ios

36 Desenvolvimento de aplicativos móveis com Xamarin Com a disponibilidade desses designers, a necessidade de usar os editores de XML nativos originais diminuiu. O que quer que seja necessário para a construção de UIs no Android ou no ios você encontrará nas ferramentas do Xamarin. No entanto os desenvolvedores ios com frequência ainda usam o Xcode Interface Builder e os desenvolvedores Android usam (com menos frequência) editores XML como o plug-in Android Development Tools (ADT) para Eclipse. Um layout XML é um layout XML, e a ferramenta é em grande parte uma questão de gosto e preferência pessoal, decisão que inclui até mesmo se alguma ferramenta de design será usada. Alguns desenvolvedores Xamarin estão optando por codificar UIs manualmente em C# para todas as plataformas sem usar designers. Recomendo o uso de designers porque eles ajudam a conhecer os formatos de arquivo, os elementos de UI e suas propriedades. Use uma ferramenta de design pelo menos para ajudá-lo até se sentir pronto para seguir por conta própria. Nota: Este livro dá ênfase ao código e não a ferramentas. Consulte os documentos online do Xamarin para obter mais informações sobre os designers e os ambientes de desenvolvimento em http://developer.xamarin.com. O que é antigo: técnicas C# e.net conhecidas O desenvolvimento em Xamarin nos permite aproveitar muito do que já sabemos sobre o desenvolvimento em C#. Podemos usar nosso conhecimento de alto nível do seguinte: Páginas baseadas em HTML Extensible Application Markup Language (XAML) Controles de UI Lógica conduzida por eventos Ciclos de vida das views Gerenciamento de estado Vinculação de dados Serviços web Também podemos usar direta e imediatamente várias técnicas específicas do ambiente.net, entre elas:

Capítulo 1 Desenvolvimento móvel com o uso do Xamarin 37 Tipos de dados.net Classes, métodos e propriedades C# Expressões lambda WCF (um subconjunto) Tipos genéricos (um subconjunto) Acesso a arquivo local Fluxos Async/Await ADO.NET (um subconjunto) Citei apenas um resumo para você ver que há muitos elementos conhecidos do desenvolvedor C# para nos ajudar a migrar para esse novo território. O que é novo: técnicas de desenvolvimento móvel No decorrer deste livro, você examinará técnicas e padrões C# comuns no desenvolvimento móvel. Alguns deles são exatamente iguais às abordagens com as quais estamos acostumados no desenvolvimento.net tradicional, outros mudaram um pouco e ainda outros mudaram muito. Aqui estão os tópicos-chave: A UI móvel é a área mais ampla do novo aprendizado para o desenvolvimento móvel em C#. O Xamarin.Forms fornece um kit de ferramentas de UI multiplataforma contendo formulários, páginas, layouts, views e controles prontos para uso. O Xamarin.iOS e o Xamarin.Android fornecem vinculações às suas respectivas UIs nativas (Capítulos 2 a 6 e Capítulo 8). Normalmente a camada de acesso a dados de um aplicativo móvel vincula controles e páginas a modelos de dados preenchidos a partir de um banco de dados local que é sincronizado com um servidor de dados remoto usando serviços web (Capítulo 7). O acesso a banco de dados local via SQLite é uma mudança feita pelos fornecedores de bancos de dados comuns, embora o acesso ADO.NET forneça uma abordagem conhecida e o componente SQLite.NET seja uma opção rica em recursos (Capítulo 7).

38 Desenvolvimento de aplicativos móveis com Xamarin A vinculação de dados é fundamental no desenvolvimento com o Xamarin. Forms e com frequência é realizada com o uso do padrão Model-View- -ViewModel (MVVM) (Capítulo 7). A arquitetura multiplataforma é um conjunto de estratégias de compartilhamento de código que ajudarão em nosso objetivo de escrever uma vez, executar em qualquer lugar. Elas incluem as Portable Class Libraries (PCLs) com injeção de dependência, os arquivos e projetos compartilhados e a compilação condicional (Capítulo 9). Vejamos rapidamente cada um desses tópicos. UI móvel Há muito material novo para ser aprendido quando migramos do desenvolvimento web para o desenvolvimento móvel multiplataforma, principalmente na área da interface de usuário. Primeiro há o problema das novas APIs de UI do sistema operacional. O Xamarin ajuda nesse ponto, fornecendo vinculações C# específicas para os principais sistemas operacionais por meio do Xamarin.Android e do Xamarin.iOS, enquanto o Xamarin.Forms fornece vinculações multiplataforma para os dois sistemas e para o Windows Phone. O outro conjunto de desafios envolve as diferenças de design entre aplicativos web e aplicativos móveis. A tela compacta, a sensibilidade ao toque e o formato de palma da mão se associam para oferecer uma experiência de usuário (UX, user experience) fundamentalmente nova. Isso requer uma abordagem também totalmente nova para o design e o desenvolvimento, o que nos leva ao design de UI móvel. O Xamarin.Forms e a UI específica de plataforma Há duas abordagens para o desenvolvimento de UI móvel com C# que podemos usar de maneira separada, intercambiável ou paralela: O Xamarin.Forms é um kit de ferramentas de UI multiplataforma para Android, ios e Windows Phone. A UI específica de plataforma usa o SDK do Xamarin.Android, Xamarin.iOS e Windows Phone. O Xamarin.Forms contém um kit de ferramentas totalmente multiplataforma que fornece um único conjunto de controles, layouts e páginas de UI que são mapeados inteligentemente para vinculações das UIs nativas do ios, do Android

Capítulo 1 Desenvolvimento móvel com o uso do Xamarin 39 e do Windows Phone. Já que ele é mais novo do que as bibliotecas específicas de plataformas, também é menos completo. Cada versão nos aproxima mais do conjunto completo de benefícios do ambiente multiplataforma, mas às vezes precisamos de algo que vá além do que suas classes prontas têm a oferecer. Nesses casos, devemos usar as bibliotecas específicas da plataforma, para a página inteira ou apenas para as partes de uma página que usem os renderizadores personalizados do Xamarin.Forms chamados PageRenderers. A abordagem específica de plataforma é mais antiga e estabelecida, portanto é mais detalhada e completa. Ela envolve bibliotecas que se vinculam diretamente às APIs de UI específicas da plataforma: Xamarin.Android para o Android e Xamarin.iOS para o ios. Para o Windows Phone, usamos o Windows Phone SDK, uma API nativa que não requer vinculações do Xamarin. Essas bibliotecas específicas de plataforma nos dão acesso total às UIs nativas para o fornecimento de uma experiência de usuário visualmente surpreendente e interativamente rica. Isso tem seu preço: o código específico de plataforma precisa de um projeto de UI separado para cada plataforma com pouca reutilização de código. Nota: O Xamarin.Forms é o assunto principal deste livro, acrescido dos renderizadores personalizados, que usam UIs específicas de plataformas. No entanto desenvolvedores que estiverem criando projetos de UI específica de plataforma usando o Xamarin.iOS e o Xamarin.Android sem o Xamarin.Forms podem se beneficiar muito das seções sobre ios e Android dos capítulos 2 a 7. Se estiver usando a abordagem específica de plataforma, não deixe de consultar outras fontes (como a documentação online do Xamarin) para ver a criação e os fundamentos de soluções com o Xamarin.Android e o Xamarin.iOS. Design de UI móvel As técnicas de criação de UIs compõem o ingrediente principal de grande parte da área de desenvolvimento de softwares móveis. As limitações atuais de hardware de dispositivos menores nos encorajam a deixar o trabalho pesado para os PCs e servidores na outra extremidade de nossos serviços web. A maioria dos componentes que é executada em um aplicativo empresarial móvel existe para dar suporte à interface de usuário exibida. As camadas móveis de negócios e de acesso a dados são com frequência versões abreviadas de suas equivalentes no lado do servidor. Ou seja, geralmente o necessário são componentes de UI que

40 Desenvolvimento de aplicativos móveis com Xamarin nos ajudem a projetar telas usando layouts, implementar controles para entrada e seleção de dados, construir listas e tabelas para a exibição e edição de dados, criar a navegação do usuário e usar imagens para planos de fundo e ícones. Os tópicos de UI deste livro abordam as funções mais usadas no desenvolvimento de aplicativos móveis. Em cada capítulo, começamos com as abordagens mais simples e multiplataforma disponíveis e então nos aprofundamos em particularidades específicas das plataformas em busca de granularidade e detalhes. Esses são os tópicos de UI móvel abordados no livro: As telas, views ou páginas são semelhantes aos equivalentes em C# na Web e em desktops, através do uso de controles com métodos e propriedades e do acionamento de eventos que manipulamos em nossos controladores (Capítulo 2). Os layouts ajudam a organizar o posicionamento e a formatação dos controles, nos permitindo estruturar e projetar as telas de nosso aplicativo móvel (Capítulo 3). Os controles facilitam a interação do usuário e a entrada de dados que têm seu próprio esquema na interface de usuário móvel e diferem significativamente dos controles da interface de PC/mouse, em grande parte devido ao uso de gestos (Capítulo 4). As listas são um dos métodos mais poderosos de exibição e seleção de dados em aplicativos móveis (Capítulo 5). A navegação permite que o usuário examine o aplicativo, passe de uma tela à outra e acesse recursos. A navegação hierárquica, as telas modais, as gavetas de navegação, os alertas, as listas com detalhamento em drill-down e outros padrões-chave compõem a base da navegação na UI móvel (Capítulo 6). O gerenciamento de estado é a manipulação de dados passados entre telas à medida que o usuário navega no aplicativo (Capítulo 6). As imagens são fundamentais na experiência móvel, em menus, listas, grades, carrosséis e em outros layouts (Capítulos 2, 4 e 6). Renderizadores personalizados do Xamarin.Forms Os renderizadores personalizados nos permitem usar mais funções do que as já fornecidas pelos controles de UI do Xamarin.Forms e nos beneficiar de conjuntos de recursos de UI específicos de plataforma mantendo ao mesmo tempo uma

Capítulo 1 Desenvolvimento móvel com o uso do Xamarin 41 abordagem multiplataforma. Os aplicativos Xamarin.Forms são inerentemente multiplataforma, sendo executados nas três principais plataformas com a mesma base de código. Esse método funciona bem para designs básicos e com o uso de certos controles. No entanto muitos projetos acabam precisando de mais recursos na UI, como nuances de design em um único controle, caixas de diálogo modais nativas, elementos gráficos ou animações adicionais em uma página ou qualquer requisito que vá além do escopo do que o Xamarin.Forms fornece na versão atual. Isso pode ser obtido com subclasses de controles nativos e com a implementação de PageRenderers para a criação de controles personalizados que deem acesso total à funcionalidade de UI específica da plataforma por meio do Xamarin.iOS e do Xamarin.Android. Esses controles específicos de plataforma podem ser empregados dentro de páginas do Xamarin.Forms para que a arquitetura continue sendo multiplataforma. Camada de acesso a dados A camada móvel de acesso a dados se afasta dos designs com os quais estamos acostumados em aplicativos web e lembra mais os encontrados em aplicativos desktop. As abordagens variam em sofisticação do popular padrão MVVM ao Model-View-Controller (MVC) e ao básico CRUD (Create/Insert/Update/Delete). Normalmente, páginas vinculadas a dados se alimentam em um banco de dados local existente no dispositivo, que está sincronizado com um servidor remoto usando serviços web. Os serviços web do desenvolvimento móvel em C# são um aspecto fundamental da reutilização de código. Muitos desses padrões de serviço dos aplicativos móveis permanecem iguais àqueles com os quais estamos acostumados ao construir aplicativos web. Porém os serviços web móveis lembram mais os serviços encontrados em aplicativos desktop, diferindo dos serviços dos aplicativos web principalmente na importância da sincronização de dados e do uso offline. Interfaces de criação, atualização e exclusão são expostas online para chamadas RESTful provenientes de várias plataformas e dispositivos. A mais formosa entre as donzelas reside aqui nos padrões móveis de serviços web, um local perfeito para código escrito uma vez e executado em várias plataformas. O componente dos serviços web que fica no lado do servidor permanece o mesmo nos aplicativos móveis, se compararmos com o esquema com os quais estamos acostumados nos aplicativos web exceto pela inclusão da sincronização com armazenamentos de dados móveis locais para uso online e offline. O uso offline requer que um conjunto de dados básico esteja disponível no banco de dados

42 Desenvolvimento de aplicativos móveis com Xamarin local e seja sincronizado quando uma conexão for estabelecida. Nem todos os aplicativos dão suporte ao uso offline. Relatando nossas experiências com camadas de acesso a dados em tecnologias relacionadas mais antigas, examinaremos as opções de arquitetura para essa camada em aplicativos móveis C#. Acesso de dados local com o uso do SQLite O SQLite tem a reputação de ser o produto de banco de dados multiplataforma mais estável e confiável para o desenvolvimento móvel, um projeto open source que funciona em dispositivos ios, Android e Windows. A Xamarin recomenda seu uso em detrimento de outros projetos de terceiros, e é ele que nós abordaremos neste livro. O projeto Xamarin dá acesso e permite a criação de bancos de dados SQLite dentro do ambiente de desenvolvimento, o que permite que o ADO. NET dê suporte a ele. Também há um componente SQLite.NET no Xamarin, um encapsulador C# que envolve a camada de dados baseada em C do SQLite oferecendo acesso de baixo nível a um banco de dados que inclui transações assíncronas. Tudo isso torna fácil conectar-se com o banco de dados, criar e indexar tabelas e ler e gravar linhas. Vinculação de dados A vinculação de dados é consistente e multiplataforma quando o Xamarin.Forms é usado. Modelada a partir da vinculação da Windows Presentation Foundation (WPF), sua implementação requer o padrão MVVM. Os campos dos controles são vinculados ao modelo de dados em código, e o mecanismo de vinculação é automático. A implementação manual de um evento PropertyChanged permite que o código permaneça sincronizado com a fonte de dados. A vinculação é feita em código ou em Extensible Application Markup Language (XAML) e pode ser unidirecional ou bidirecional. Os controles, as listas e os textos são ligados a uma fonte de dados ou às propriedades uns dos outros. Um número crescente de fornecedores está oferecendo conjuntos de controles do Xamarin.Forms que incluem gráficos e grades vinculados a dados, como a Telerik, Infragistics, Syncfusion e DevExpress. A vinculação de dados não vem embutida no Xamarin.Android e no Xamarin. ios. Normalmente, implementações de vinculação específicas de plataforma são obtidas com o uso de bibliotecas open source de terceiros, como o MvvmCross e o MVVM Light.

Capítulo 1 Desenvolvimento móvel com o uso do Xamarin 43 Desenvolvimento multiplataforma Assim como o ambiente.net forneceu uma infraestrutura unificada incluindo vários sistemas operacionais e linguagens, o Xamarin preenche as lacunas existentes entre os sistemas operacionais móveis e suas respectivas linguagens de desenvolvimento: ios e Objective-C, Android e Java, e o Windows Phone e os tablets e C#. Dessa forma, ele estende o ambiente.net para o espaço móvel, bem distante dos sistemas operacionais Windows. Isso é muito bom, mas o valor real aqui está na oportunidade de compartilhar e reusar código entre projetos e plataformas. Os maiores benefícios das ferramentas Xamarin se encontram no código multiplataforma; logo, uma abordagem multiplataforma para os padrões móveis produzirá o melhor resultado. As ferramentas Xamarin vêm fornecendo os meios de termos um vislumbre do unicórnio do paradigma escrever uma vez, executar em qualquer lugar. O maior problema enfrentado na busca por uma implementação multiplataforma é o código específico de plataforma. Esse código deve ser implementado de forma diferente, dependendo da plataforma, seja ela o ios, o Android ou o Windows Phone. Os padrões multiplataforma são os mesmos, não importando o sistema operacional. Às vezes, o código multiplataforma é chamado de código compartilhado ou código básico, já que ele é compartilhado entre projetos de diferentes sistemas operacionais móveis. O Xamarin.Forms resolve o desafio mais complicado do ambiente multiplataforma: a interface de usuário. Desenvolvedores que usam o Xamarin têm uma solução de dados totalmente multiplataforma, que é o acesso a dados locais por meio do ADO.NET ou do SQLite.NET com o SQLite e os serviços web. Mesmo assim, sempre haverá código específico de plataforma, como descrito a seguir: Na UI. Em funcionalidades específicas do dispositivo, como em uma câmera ou em recursos de localização. Em elementos gráficos e animações. Em permissões de segurança, de arquivos e do dispositivo. Uma vez identificados o código específico de plataforma e o código multiplataforma, o problema será organizá-los em uma arquitetura multiplataforma. Temos algumas opções, que variam entre PCLs, projetos compartilhados, arquivos vinculados, interfaces, abstração e compilação condicional. As PCLs fornecem o meio de um componente C# ser construído com um subconjunto específico de

44 Desenvolvimento de aplicativos móveis com Xamarin plataforma e limitado da biblioteca.net a ser convertido em uma biblioteca de vinculação dinâmica (DLL, Dynamic Link Library) que possa ser usada em um projeto Xamarin de qualquer plataforma especificada pelo perfil da PCL. Camadas de acesso a dados, serviços web do lado do cliente e lógica de negócio independente da plataforma podem coexistir sem problemas nesse esquema. A funcionalidade específica da plataforma ainda pode ser introduzida nessas bibliotecas com o uso da injeção de dependência com interfaces. Uma abordagem mais livre e flexível é usar arquivos ou projetos compartilhados que contenham arquivos básicos recompilados para cada plataforma. A compilação condicional, uma técnica antiga adequada a pequenas personalizações específicas de plataforma, permite que blocos de código de um arquivo compartilhado sejam incluídos em uma compilação específica da plataforma. Veremos essas técnicas e seus padrões com detalhes em situações em que eles exibam a marca do unicórnio, ajudando-nos a maximixar o footprint multiplataforma de nosso código. Resumo Os aplicativos comerciais estão passando por uma mudança de transformação de hardware; não há uma mudança dessa magnitude desde a comercialização do computador pessoal. O momentum dos dispositivos móveis para consumidores alcançou um ápice, afetando os dispositivos em que agora os aplicativos comerciais devem funcionar. Com a batalha entre sistemas operacionais móveis ainda em andamento, não é mais suficiente fazer um aplicativo móvel funcionar em uma única plataforma. Devemos ter uma atitude multiplataforma desde o início. Dentro do universo.net, o Xamarin nos fornece as ferramentas que tornam o desenvolvimento multiplataforma a norma em vez de um caso especial; logo, não há desculpas. Se a abordagem apropriada for adotada, a lógica de negócio, a camada de acesso a dados e, cada vez mais, a UI serão em grande parte independentes de plataforma. Portanto, esteja você construindo um aplicativo do Android, do Windows Phone ou do ios, a abordagem pode ser basicamente a mesma para muitos de seus componentes. Passemos então ao código!