Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taller de apps conectadas con Xamarin y C# - Costa Rica

Taller de apps conectadas con Xamarin y C# - Costa Rica

Presentación del taller "Creando apps móviles conectadas" con Xamarin y C# - @stvansolano de Mobile CR Developers

Esteban Solano Granados

September 03, 2016
Tweet

More Decks by Esteban Solano Granados

Other Decks in Programming

Transcript

  1. Creando apps
    móviles
    conectadas

    View Slide

  2. Avisos de
    interés
    Mobile CR Developers
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • ¡Xamarin Dev DaysCosta Rica! – Octubre 2016
    • Día completos de entrenamiento
    • Expertos y profesionales Xamarin
    • Principiante – Intermedio – Avanzados
    • Sesiones de código y aprendizaje

    View Slide

  3. • Microsoft Certified Professional
    • Xamarin MVP, MCSD: Web Apps
    • .Net, NodeJS, Angular, Mobile, entre otros.
    • Xamarin, Mono, Open Source.
    Sobre mí
    Esteban Solano Granados
    Senior Software Engineer
    http://stvansolano.github.io/blog
    [email protected]
    Meetup: http://bit.ly/1PpBGRo

    View Slide

  4. Agenda
    • Desarrollo de apps para Android, iOS y UWP
    • Estrategias de código compartido
    • Xamarin.Forms vrs. Desarrollo tradicional
    • Apps en el mundo real.
    • Arquitectura REST y servicios web
    • Apps conectadas y desconectadas.
    • Rifa.
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  5. Avantica
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  6. Enfoques del
    desarrollo
    móvil
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Desarrollo tradicional o en Silo (diferentes totalmente)
    • Desarrollo híbrido (WebView + código web)
    • Desarrollo multi-plataforma (Xamarin)
    • Mixtos (JavaScript + Nativo)
    Enfoques actuales

    View Slide

  7. Xamarin Forms
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Framework multi-plataforma para la creación de
    aplicaciones móviles con .Net
    • Navigation
    • Data Binding
    • Styles, Triggers
    • Standard Controls
    Desarrollomulti-plataforma

    View Slide

  8. Xamarin Forms
    (II)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  9. Xamarin Forms
    (III)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Casos de máxima re-utilización requerida entre Android,
    iOS y Windows.
    • Apps rápidas enfocadas en entradas de datos o bien
    pruebas de concepto.
    • Apps que requieren poca personalización de UI en cada
    plataforma (> pixel-perfect).
    • Poco o mínimo uso de Renderers y personalizaciones
    ¿Cuándo utilizar Xamarin.Forms?

    View Slide

  10. Estrategias de
    código
    compartido
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Ventajas
    • Permite tener código de diferentes plataformas en una
    misma sección de código
    • Permite utilizar directivas de compilación
    • Menos código que mantener en una misma ubicación
    Desventajas
    o Bifurcación de código entre plataformas (#ifANDROID)
    o No genera DLLs para compartir
    Shared Projects

    View Slide

  11. Estrategias de
    código
    compartido
    (II)B
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Ventajas
    • Permite compartir código enre multiples proyectos y
    plataformas.
    • Refactorings afectan los proyectos referenciados.
    • Permite referenciar otros proyectos como DLLs.
    Desventajas
    • No es posible usar directivas de compilación
    (#if ANDROID)
    • Deja por fuera sub-conjuntos del framework de .Net que
    no son comunes (FileSystem)
    PCLs (Portable Class Library)

    View Slide

  12. Aplicaciones
    Conectadas
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  13. Antes -
    Conectado
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  14. Hoy día -
    Conectado
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  15. Hoy día
    -Afuera
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  16. Hoy día
    -Afuera
    (II)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Conectividad
    • Poca – nula
    • Intermitencia
    • Velocidades: 3G – 4G - LTE
    • Usuarios impacientes y transitantes
    • HTTP everywhere

    View Slide

  17. REST
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    REST
    Representational State Transfer
    Arquitectura para crear aplicaciones
    distribuidas y modeladas alrededor de la
    especificación HTTP

    View Slide

  18. REST 101
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    REST está diseñado para tomar ventaja de la
    arquitectura de la WWW
    • Operaciones implementadas por verbos HTTP
    • Utiliza URLs que representan recursos accesibles
    C = Create
    R = Read
    U = Update
    D = Delete

    View Slide

  19. ¿Por qué utilizar
    REST?
    (II)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano

    View Slide

  20. REST = URLs +
    Operaciones
    GET https://www.some_address.com/customers/12345
    GET https://www.some_address.com/customers?id=12345
    XML / JSON

    View Slide

  21. ¿Qué es JSON?
    • JavaScript Object Notation es
    un formato de serialización muy
    conocido que utiliza pares de
    nombre/valor en forma
    jerárquica

    View Slide

  22. La clase
    HttpClient
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Clase propia .Net para comunicación HTTP
    • Namespace System.Net.Http.HttpClient
    • Compilable y extendible entre las aplicaciones Android,
    iOS y WinPhone.
    • Un único código puede manejar las solicitudes en cada
    plataforma.

    View Slide

  23. JSON
    .NET
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Librería especializada para la
    serialización/deserialización de JSON
    • Se utiliza mayormente para deserializar contenidos
    (string->Objecto)
    • Provee código re-utilizable para el manejo de JSON en
    aplicaciones .Net de todo tipo (DRY – Don’t Repeat
    Yourself)
    • Y por supuesto, disponible para Xamarin

    View Slide

  24. Consideraciones
    & Tips
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Desarrollandocon Xamarin
    • Habilitar permisos de internet para la aplicación.
    • http://json2csharp.com: Generar C# desde Json
    • Precaución: HttpClient implementa IDisposable, por lo
    que requiere liberar recursos de forma responsable
    • Utilizar IsBusy/ActivityIndicador para interacciones con
    el usuario
    • Utilizar ConfigureAwait(false) para llamadas en segundo
    plano

    View Slide

  25. Consideraciones
    & Tips
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Tips para tu aplicación
    • Prevenir el estado de la conexión
    (CrossConnectivity.Current.IsConnected)
    • Caching para reducir llamadas y agilizar respuestas.
    • Offline data & sync-up
    • Mantener la seguridad en mente (tokens)
    • Segmentar llamadas según las necesidades (Carga,
    Segundo plano y solicitud de usuario)

    View Slide

  26. DRY
    (Don’t Repeat
    Yourself)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Permiten re-utilizar elementos y aspectos importantes
    mediante código multi-plataforma existente.
    • Disponibles open-source y mayormente desarrollados
    por Xamarin / Microsoft
    • Recomendados: Connectivity, FileSystem, Geolocator,
    Share y muchos más.
    Xamarin Plugins

    View Slide

  27. DRY
    (Don’t Repeat
    Yourself)
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    • Akavache / Realm – Key-value store caching
    • Refit –Type safe REST library for .Net
    • ModernHttpClient– Platform-specific network
    stack
    • Polly – Retry logic for network calls
    • Azure Mobile Apps (SDK)
    Librerías complementarias

    View Slide

  28. Polly
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    Polly – Retry logic for network calls

    View Slide

  29. Fusillade
    > Meetup: Mobile CR Developers http://stvansolano.github.io/blog Twitter: @stvansolano
    HttpMessageHandlers (i.e. "drivers"
    for HttpClient)

    View Slide

  30. Recursos adicionales
    REST Countries
    https://restcountries.eu/
    - Código fuente:
    https://github.com/stvansolano/RestfulCountriesApp/
    - json2csharp
    https://github.com/stvansolano
    - Xamarin Plugins
    https://components.xamarin.com/?category=plugins
    - Need a backend? http://stvansolano.github.io/2016/08/15/Getting-
    your-next-app--with-azure-mobile-apps/
    http://stvansolano.github.io/blog
    [email protected]
    Meetup: http://bit.ly/1PpBGRo

    View Slide

  31. ¿Tienes preguntas? / Q&A
    Contacto
    Twitter: @stvansolano
    [email protected]
    Special thanks to:
    @aspenwalder
    @RobGibbens
    http://stvansolano.github.io/blog
    [email protected]
    Meetup: http://bit.ly/1PpBGRo

    View Slide