William S. Rodriguez
williamsrz@outlook.com
@WilliamSRodz
2012
2014
dos brasileiros possuem dois
ou mais Smartphones.
Fontes: Insights Globais Sobre Smartphones da Nielsen, primeiro semestre de 2012; Insights Sobre Telefonia Móvel da Nielsen, 2012
48% dos colaboradores de uma
organização dependem de
tecnologia e dispositivos
móveis para realizar o seu
trabalho.
25%
Desafio
Construir um módulo mobile
de um sistema em produção.
Novas Ideias
Vamos construir um aplicativo que ...
Java
Eclipse
Android App
C#
Visual Studio
Windows App
Objective-C
XCoce
iOS App
Maior tempo para
lançamento de novas
funcionalidades e
dificuldades para
execução de teste
Sobrecarga na gestão Investimento em
hardware diferentes
Perfis diferentes de
profissionais e
linguagens
incompatíveis entre si
(JAVA, Objective C, C#)
“Mesmo se você tiver o mesmo esforço
de desenvolvimento para todas as três
plataformas ainda terá três meses de
projeto”
+ =
“Comece pelo Android é mais fácil”
Aprender com os
erros dos outros
"The biggest mistake we
made as a company was
betting too much on
HTML5 rather than native"
Image source huffingtonpost.in
Mas HTML5 é o futuro!?
APP NATIVAHTML5
Image Source huffingtonpost.in
Abordagens
mágicas!?
“Escreva uma vez e
rode em qualquer
lugar”
Abordagem da “caixa mágica
preta”
Black Box
Altas taxas de abandono e desperdício de
investimento
Apresenta problemas de
compatibilidade e
performance (não
nativa)
Experiência do usuário
pobre e Interfaces fora
do padrão;
Difícil manutenção e
debug
Não utiliza toda a
capacidade de recursos
das plataformas de
forma homogenia e tem
acesso limitados a API’s
Aplicações
Nativas
“People expect great experiences from their
mobile devices…”
- 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.
Por que?
Slides para
os “chefes”
Construa App's Nativas Teste Monitore
Experiências nativas
acesso a GPU, Stylus,
GPS, Acelerômetro e
ficar aberto a
tendências e novas
tecnologias.
Produtividade e
reaproveitar o código
Suporte ALM e TFS,
evolução continua e
interação com
componentes e
bibliotecas de terceiros
Aproveitar intelecto
(programadores C#)
Developers,
Developers,
Developers,
Developers!
Como funciona?
Xamarin utiliza uma Abordagem Única
C#
Xamarin Abordagem Tradicional
Shared C# codebase • 100% native API access • High performance
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Shared C# Client/Server
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Por que Xamarin?
Compartilhe o código que faz sentido, tire
vantagem da UX nativa de cada plataforma.
Debug de objetos Java
e Objective C
Interoperabilidade com
qualquer linguagem
Utilizar bibliotecas
Android e iOS de forma
nativa
Empacotar e
disponibilizar uma
aplicação nativa única
Nearables
Xamarin.Robotics
Wearables
http://bit.ly/xamarin-nearables
http://bit.ly/xamarin-robotics
http://bit.ly/xamarin-wearables
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.
Por que?
C#
var doc = Xdocument.Load(utl);
foreach(var item in doc.Root.Elements()) {
var text = item.value;
}
from p in Table<Pessoa>()
where p.ID == id
select 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://williamsrz.com.br”);
E por ai vai...
Menos código mais resultado
C#
Objective-C C# com Xamarin
Java C# com Xamarin
Xamarin & Visual Studio
Qualquer coisa que você conseguir fazer utilizando
Objective-C, Swift, ou Java! Pode ser feita com
C# e Xamarin no Visual Studio
Portable Class Libray
› Código reutilizável;
› 1 Assembly = Multiplas Plataformas;
› Core, LINQ, HTTPClient
› NuGet
› Refactoring
File > New > Portable Class Library
Portable Class Libray
want most of our code here
Portable Class Libray
PCL é “amarrado” a um profile específico que define APIs específicas que podem ser
usadas em cada plataforma.
* Media de Compartilhamento
http://icircuitapp.com/
Única solução Cross-
plataforma a suportar
Amazon Fire
Única solução Cross-
plataforma a suportar
Wearables e Nearables
100% de suporte
Android M
100% de suporte ao iOS
8 (no mesmo dia)
Como conectar os dados e dispositivos?
Azure
Azure Mobile Apps
Sincronização de dados
offline para criar
aplicativos dinâmicos
Conexões Híbridas e
VPN para conectar
aplicativos aos dados
locais
Notificações
personalizadas por push
Dimensionamento
automático interno de
acordo com as
necessidades dos
aplicativos
Backend para aplicações móveis
Conectar-se a recursos
locais como SAP, Oracle
e SQL Server e
SharePoint
Autenticação e
Autorização com
integrado ao Active
Directory
SSO utilizando conta
Microsoft ou de redes
sociais
(Twitter, Facebook, Google)
Conectar-se a
aplicações SaaS
(Sales Force, Office 365)
Data & Synchronizing Data
Sincronização baseada
em nuvem para criar
aplicativos que
funcionam off-line
Sincronização entre
múltiplos dispositivos
Armazenamento de
dados em SQL,
Armazenamento de
Tabela e MongoDB
Capacidade Cross
platforma
DEMO
A melhor experiência para usuários aliada a
qualidade e produtividade para desenvolvedores
Qualquer plataforma e qualquer tipo de aplicativo.
William S. Rodriguez
williamsrz@outlook.com
@WilliamSRodz
???Obrigado
Extras
Camiseta Xamarin (de graça)
https://xamarin.com/c-sharp-shirt
Azure Free Trial
http://azure.microsoft.com/pt-br/pricing/free-trial/
Visual Studio Community
https://www.visualstudio.com/en-us/products/visual-studio-
community-vs.aspx
HBO Silicon Valley
http://imdb.com/title/tt2575988/
The Sopranos
http://imdb.com/title/tt0141842/
Cartons by fb.com/cartoonistforhire

Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference Porto Alegre

Notas do Editor

  • #9 - 96% dos lares tem celular. Fonte: Kantar Wolrdpanel - 55.000.000de smartphones Fonte: Kantar Wolrdpanel - 98% smartphones são vendidos por MINUTOno Brasil - 4 em cada 10 brasileiros já possuem acesso a internet móvel We are social Fonte: We are social - 95% das novas conexões de banda larga são MOBILE Fonte: Telebrasil
  • #38 Criar aplicações nativas iOS, Android, Mac e Windows utilizando C#.
  • #39 Construa interfaces Nativas para iOS, Android e Windows Phone a partir de uma única base de código C# compartilhada.
  • #43 Tradicionalmente, interfaces por plataforma
  • #52 24 linhas vs 11 linhas
  • #53 24 linhas vs 11 linhas
  • #56 Portable Class Libraries are assemblies that can be used by different flavors of .NET without recompiling
  • #57 Permite criar código reutilizável em uma variedade de diferentes dispositivos e plataformas Smartphones (Windows Phone) Tablets (Windows RT) Computadores desktop, notebooks, netbooks e ultrabooks (Windows 8 e Silverlight) Consoles de entreterimento (Xbox 360) Novo projeto no Visual Studio 
  • #60 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.
  • #61 iOS 8 mais de 300 novidades ou alterações em APIS
  • #63 Hospedar uma API Web de .NET ou Node.js com monitoramento e gerenciamento 24 horas por dia, 7 dias por semana
  • #65 Armazenamento de dados em SQL, Armazenamento de Tabela e MongoDB
  • #67 Criar aplicações nativas iOS, Android, Mac e Windows utilizando C#.
  • #68 Criar aplicações nativas iOS, Android, Mac e Windows utilizando C#.