Introducción al desarrollo MóvilChris Jimenez
AgendaEl código estara disponible en Github.com
despues de las charlas
Algunos “Hechos”“El 90% de los adultos en USA tienen un
Smartphone“En promedio desde los 12 años los niños
tienen un SmartphoneSon usado para todo, desde juegos,
transferencias bancarias, mensajería,clases online, etc
Algunas Hechos "Mobile to overtake fixed Internet access by 2014
Market Share Mundial
Market Share Continente Americano
Apple vs Android(Google)
AppleTiene estéticas de diseno muy definidasUn sistema operativo Close Source (OS X,
UNIX)iPod Touch, iPhone, iPad, Apple TV Apple app store – 1,000,000+ appLos sistemas operativos tienen una adopción
de usuario mucho mayor
Apple
700 millones de dispositivos vendidos
iOS
Fragmentación
AndroidTiene estéticas de diseno más flexibleUn sistema operativo Open source
(Flexibilidad y adopción)LG, HTC, Samsung, Sony, Motorola, Nexus,
otrosGoogle Play – 1,000,000+ apps. y otros como
Amazon
Android Fragmentación
Sobre DesarrolloEs utilizado OOD en el 99% de los casosSe utilizan extensamente los patrones de
disenoEl acceso a datos externos es realizado por
medio de servicios REST
MVC
Controller
View Model
MVC
Model = Lo que su aplicacion es (No como se muestra)
Controller
View Model
MVC
Controller = Como su modelo es mostrado a el usuario
Controller
View Model
MVC
View= Componentes y UI controlado por el Controller
Controller
View Model
Respetar al comunicación Respetar la comunicación entre las capas
Controller
View Model
Respetar la comunicación entre las capas
MVC
Controller
View Model
Puede la vista hablar con el Controlador?
MVC
Controller
View Model
El controlador puede crear “targets” y la vista puede enviar acciones a esos targets cuando algo pasa en el UI
Target
Action
MVC
Controller
View Model
Pero que pasa cuando el controlador quiere actualizar algo en la vista?
MVC
Controller
View Model
El controlador se asigna como un Delegate a la vista
Target
Action
Delegate
MVC
Controller
View Model
Las vistas no contienen datos.Estos son dados por el controlador o obtenidos por medio de delegates
Target
Action
Delegate
MVC
Controller
View Model
El controller es la mayoría de las veces la fuente de datos No el Modelo!
Target
Action
Delegate
MVC
Controller
View Model
El Controlador interpreta/da formato a los datos del modelo para la Vista
Target
Action
Delegate
MVC
Controller
View Model
Puede el modelo hablar directamente con el controlador???
Action
Delegate
MVC
Controller
View Model
No. El modelo debería de ser independiente!
Action
Delegate
MVC
Controller
View Model
Entonces que si el modelo tiene información por actualizar?
Action
Delegate
MVC
Controller
View Model
Usa una “estación de radio” o un mecanismo de difusión
Target
Action
Delegate
Notification , KVO
MVC
Controller
View Model
Controllers (O otros modelos) “observan” esa estación
Target
Action
Delegate
Notification , KVO
MVC
Acceso a DatosEn el 99% de los casos el acceso a datos
externos es realizado por medio de servicios REST
Short of Representation State Transfer(Roy Thomas)
Arquitectura (Client-Server)
REST
It’s the way the Web already works, just formalized a bit and with some do’s and don’ts.
Que es un Web Service?
Un servicio web es sólo una página web destinada para una computadora para obtener y procesar
Más precisamente , un servicio Web es una página Web que está destinado a ser consumido por un programa autónomo en lugar de un navegador web
Principios REST clavesDar a todo un IDConecta URLs juntasUtiliza métodos estándaresPuede tener recursos con varias
representacionesComunicación sin mantener un estado
“statelessly”
Dar todo un IDTodo recurso debería de tener un IDURLs tambien pueden tener IDURLs deberian de ser “human-readable”
Dar todo un IDhttp://example.com/customers/1234
http://example.com/orders/2007/10/776654
http://example.com/products/4554
Colecciones de Recursoshttp://example.com/customers/
http://example.com/orders/2007/11
http://example.com/products?color=green
Conecta cosas JuntasEn su core, es el concepto de Hypermedia o
la idea de los links
Links son algo que todos estamos familiarizados, pero tal vez los vemos como que son solo destinados a ser consumidos por usuarios.
Conectar cosas juntas
<order self='http://example.com/customers/1234' > <amount>23</amount> <product ref='http://example.com/products/4554' /> <customer ref='http://example.com/customers/1234' /> </order>
Lo interesante de este enfoque
Es que los enlaces pueden apuntar a los recursos que son proporcionados por una aplicación diferente, un servidor diferente, o incluso una empresa diferente en otro continente
Metodos EstandaresEn HTTP estos métodos son llamados
“verbos”Los dos que todo mundo conoce son GET y
POSTPero hay varias mas: PUT, DELETE, HEAD
and OPTIONS
Metodos EstandaresPOST - CREATE GET - RETRIEVE PUT - UPDATE DELETE- DELETE
Otras CualidadesSeguro - Safe?
No tiene otra acción más que obtener datos
Cacheable GET puede implementar un caché muy eficienteEn muchos casos el request al servidor no es ni
necesario
Ejemplo NO RESTOrders & Customers
Ejemplo REST
Multiples representacionesEl estandar que 100% JSON. Pero esto no quiere decir que puedan proveer otros estándares
XMLV-CARDRSS
XMLhttp://www.pixel16.com/callmenot/phones/20.xml<?xml version="1.0" encoding="UTF-8"?><response><phone><Phone><id>18</id><phone>3434343</phone><description>asf</description><created>2013-07-10 17:04:23</created><modified>2013-07-10 17:04:23</modified></Phone></phone></response>
Jsonwww.pixel16.com/callmenot/phones/18.json{
"phone":{"Phone":{
"id":"18","phone":"3434343","description":"asf","created":"2013-07-10 17:04:23","modified":"2013-07-10 17:04:23"
}}}
How To Design A Good API and Why it Matters
Gracias
Gracias!