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

Taller de apps conectadas con Xamarin y C# - Co...

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

Avatar for Esteban Solano Granados

Esteban Solano Granados

September 03, 2016
Tweet

More Decks by Esteban Solano Granados

Other Decks in Programming

Transcript

  1. 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
  2. • 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
  3. 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
  4. 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
  5. 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
  6. 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?
  7. 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
  8. 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)
  9. 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
  10. 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
  11. 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
  12. ¿Por qué utilizar REST? (II) > Meetup: Mobile CR Developers

    http://stvansolano.github.io/blog Twitter: @stvansolano
  13. ¿Qué es JSON? • JavaScript Object Notation es un formato

    de serialización muy conocido que utiliza pares de nombre/valor en forma jerárquica
  14. 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.
  15. 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
  16. 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
  17. 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)
  18. 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
  19. 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
  20. 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
  21. ¿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