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. 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