SlideShare una empresa de Scribd logo
1 de 11
Offline First Apps with MAUI
Robinson Moscoso – rmoscosp /
SENIOR DEVELOPER
Contenido
Aplicaciones desconectadas en un mundo conectado
El usuario siempre debe saber cuando esta conectado
El cielo esta despejado ¿dónde guardo la información?
¿Quién fue primero, El huevo o la gallina?
Pero igual necesito conexión
Ahora lo que todos quieren
Aplicaciones desconectadas en un mundo
conectado
Media global
59.5%
Sudamérica
72.5%
Centroamérica
67%
Penetración de Internet *
* Información tomada de: https://es.statista.com/estadisticas/541451/penetracion-mundial-de-internet-por-region-del-mundo/
El usuario siempre debe saber cuando esta
conectado
Sin conexión
Sincronizo si hay red
Botón de sincronizar
MUAI Network Status
• MAUI usa IConnectivity para:
• Identificar si tiene acceso a internet
• Identificar los tipos de conexión (Bluetooth, móvil o WiFi)
• Evento para supervisar los cambios en el estado de conexión
• El espacio de nombre es: Microsoft.Maui.Networking
Internet Acceso a Internet y local.
ConstrainedInternet Acceso limitado a Internet
Local solo acceso a la red local
None no hay conectividad disponible
Unknown No se puede determinar la
conectividad a Internet
El cielo esta despejado ¿dónde guardo la información?
• Pequeñas piezas de datos
• Key/Value
Preferences.Set(“tableRows", 15);
var savedPreference = Preferences.Get("tableRows", 10);
• Guardar archivos sueltos en diferentes formatos (XML, birary, text files)
• Estructura de directorios – sandbox (en IOS usa Library)
string path = FileSystem.AppDataDirectory;
• Datos relacionales de la aplicación
• Archivo de base de datos SQLite => AppDataDirectory
• Class for models
using SQLite; ...
string filename = ...
SQLiteConnection conn = new SQLiteConnection(filename);
Backend
¿Quién fue primero, el huevo o la gallina?
• Código y data deben estar en el dispositivo
• Código en apps no es problema, va con la app (en web no)
• Data en base de datos
• Resolución de conflictos
Dispositivo 2
BD
Aplicación
Dispositivo 1
Aplicación
Api
BD
BD
Resolución de conflictos
• Inserción
• Si un registro es insertado en D1 y uno en D2, en el Backend habrán dos registros
nuevos (el registro se debe crear con un id y replicarlo luego en D1 y D2 para posibles
actualizaciones)
• Actualización
• Un mismo registro es actualizado en D1 y en D2, para la actualización se debe
registrar una marca timestamp, el último registro actualizado prevalece sobre el
primero, en el backend se guarda la marca del timestamp para determinar cual fue el
ultimo actualizado
• Eliminación
• Un registro es eliminado en D1 y es editado en D2, al actualizar D1 en el backend el
registro no se elimina físicamente, se hace un marcado de eliminación, al sincronizar
D2 se verifica la marca de fecha y se determina si el registro continúa marcado como
eliminado o se revive con la información de D2.
Pero igual necesito conexión
Instalación
Autenticación
Búsqueda
Adjuntar archivos
Sincronizar (segmentar)
LINKS IMPORTANTES
MAUI Documentation
https://docs.microsoft.com/en-us/dotnet/maui/
Store local data with SQLite in a .NET MAUI app
https://docs.microsoft.com/es-es/learn/modules/store-local-data/
MAUI Connectivity
https://docs.microsoft.com/es-es/dotnet/maui/platform-integration/communication/networking
A Design Guide for Building Offline First Apps
https://hasura.io/blog/design-guide-to-offline-first-apps/
Robinson Moscoso
https://twitter.com/rmoscosp
https://www.linkedin.com/in/robinson-moscoso-perez/
Ahora, lo que todos quieren
https://forms.gle/xrCJposRAyo2Ur
Pi8
• Cursos de Udemy a nivel global (3)
• Morral, Audífonos, Curso de Udemy (3)

Más contenido relacionado

La actualidad más candente

Building Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service WeaverBuilding Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service WeaverShiju Varghese
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinMasahiro Nagano
 
OpenStack Tutorial
OpenStack TutorialOpenStack Tutorial
OpenStack TutorialBret Piatt
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐Terry Cho
 
車用通信報告
車用通信報告車用通信報告
車用通信報告冠宇 陳
 
E business suite r12.2 changes for database administrators
E business suite r12.2 changes for database administratorsE business suite r12.2 changes for database administrators
E business suite r12.2 changes for database administratorsSrinivasa Pavan Marti
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesJeff Potts
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)David Gibbons
 
Show100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableShow100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableMitch Cohen
 
Introduction To Liquibase
Introduction To Liquibase Introduction To Liquibase
Introduction To Liquibase Knoldus Inc.
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.jsXie ChengChao
 
Setting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your TestingSetting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your TestingJet Liu
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & IntroductionLee Trout
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
ELK and FileBeat on OCI
ELK and FileBeat on OCIELK and FileBeat on OCI
ELK and FileBeat on OCIDonghuKIM2
 
Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup IntroductionGregory Boissinot
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability LibraryTonny Adhi Sabastian
 
Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2FIWARE
 
How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17Johan Janssen
 

La actualidad más candente (20)

Building Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service WeaverBuilding Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service Weaver
 
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/MinAdvanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
Advanced nginx in mercari - How to handle over 1,200,000 HTTPS Reqs/Min
 
OpenStack Tutorial
OpenStack TutorialOpenStack Tutorial
OpenStack Tutorial
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
 
車用通信報告
車用通信報告車用通信報告
車用通信報告
 
E business suite r12.2 changes for database administrators
E business suite r12.2 changes for database administratorsE business suite r12.2 changes for database administrators
E business suite r12.2 changes for database administrators
 
Moving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to MicroservicesMoving From Actions & Behaviors to Microservices
Moving From Actions & Behaviors to Microservices
 
The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)The Role of Python in SPAs (Single-Page Applications)
The Role of Python in SPAs (Single-Page Applications)
 
Efficient Indexes in MySQL
Efficient Indexes in MySQLEfficient Indexes in MySQL
Efficient Indexes in MySQL
 
Show100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly AvailableShow100: Making IBM Notes Traveler Highly Available
Show100: Making IBM Notes Traveler Highly Available
 
Introduction To Liquibase
Introduction To Liquibase Introduction To Liquibase
Introduction To Liquibase
 
Building fast,scalable game server in node.js
Building fast,scalable game server in node.jsBuilding fast,scalable game server in node.js
Building fast,scalable game server in node.js
 
Setting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your TestingSetting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your Testing
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
 
Systemtap
SystemtapSystemtap
Systemtap
 
ELK and FileBeat on OCI
ELK and FileBeat on OCIELK and FileBeat on OCI
ELK and FileBeat on OCI
 
Paris Redis Meetup Introduction
Paris Redis Meetup IntroductionParis Redis Meetup Introduction
Paris Redis Meetup Introduction
 
Introduction to Open Telemetry as Observability Library
Introduction to Open  Telemetry as Observability LibraryIntroduction to Open  Telemetry as Observability Library
Introduction to Open Telemetry as Observability Library
 
Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2Fiware IoT_IDAS_intro_ul20_v2
Fiware IoT_IDAS_intro_ul20_v2
 
How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17How and why to upgrade to java 16 or 17
How and why to upgrade to java 16 or 17
 

Similar a Offline First Apps with MAUI - Building disconnected apps in a connected world

Análisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridadAnálisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridadArgentesting
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticaJuan Osorio
 
Ppt la técnología llama a tu puerta ii
Ppt la técnología llama a tu puerta iiPpt la técnología llama a tu puerta ii
Ppt la técnología llama a tu puerta iiHans Diederichs
 
Caudro comparativo actulizado
Caudro comparativo actulizadoCaudro comparativo actulizado
Caudro comparativo actulizadomarshmelloangel
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticaAlejandro Holguin
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticasantiramirez17
 
Caracteristicas de un programa
Caracteristicas de un programaCaracteristicas de un programa
Caracteristicas de un programaCkarina Gallardo
 
Exchange online troubleshooting
Exchange online troubleshootingExchange online troubleshooting
Exchange online troubleshootingAlberto Pascual
 
Taller de seguridad informatica
Taller de seguridad informatica Taller de seguridad informatica
Taller de seguridad informatica juanpaoso
 
Taller Realidad Aumentada pamplona 29 mayo 2015
Taller Realidad Aumentada pamplona 29 mayo 2015Taller Realidad Aumentada pamplona 29 mayo 2015
Taller Realidad Aumentada pamplona 29 mayo 2015Manuel Alonso Rosa
 
Waldy taller de computacion
Waldy taller de computacionWaldy taller de computacion
Waldy taller de computacionwaldypineda
 
Presentacion De Uxity - 05/2009
Presentacion De Uxity - 05/2009Presentacion De Uxity - 05/2009
Presentacion De Uxity - 05/2009sleguiza
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticavalenposada36
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticavalenposada36
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informaticajfuy
 

Similar a Offline First Apps with MAUI - Building disconnected apps in a connected world (20)

2020 enero Argentesting
2020 enero Argentesting2020 enero Argentesting
2020 enero Argentesting
 
Análisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridadAnálisis de Aplicaciones móviles - aspectos de seguridad
Análisis de Aplicaciones móviles - aspectos de seguridad
 
Softwares de-monitoreo-y-auditoria-de-redes
Softwares de-monitoreo-y-auditoria-de-redesSoftwares de-monitoreo-y-auditoria-de-redes
Softwares de-monitoreo-y-auditoria-de-redes
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 
Ppt la técnología llama a tu puerta ii
Ppt la técnología llama a tu puerta iiPpt la técnología llama a tu puerta ii
Ppt la técnología llama a tu puerta ii
 
Caudro comparativo actulizado
Caudro comparativo actulizadoCaudro comparativo actulizado
Caudro comparativo actulizado
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 
Ing. de software
Ing. de softwareIng. de software
Ing. de software
 
Caracteristicas de un programa
Caracteristicas de un programaCaracteristicas de un programa
Caracteristicas de un programa
 
Presentación10 tamayo bn
Presentación10 tamayo bnPresentación10 tamayo bn
Presentación10 tamayo bn
 
Exchange online troubleshooting
Exchange online troubleshootingExchange online troubleshooting
Exchange online troubleshooting
 
Taller de seguridad informatica
Taller de seguridad informatica Taller de seguridad informatica
Taller de seguridad informatica
 
Taller Realidad Aumentada pamplona 29 mayo 2015
Taller Realidad Aumentada pamplona 29 mayo 2015Taller Realidad Aumentada pamplona 29 mayo 2015
Taller Realidad Aumentada pamplona 29 mayo 2015
 
Waldy taller de computacion
Waldy taller de computacionWaldy taller de computacion
Waldy taller de computacion
 
Presentacion De Uxity - 05/2009
Presentacion De Uxity - 05/2009Presentacion De Uxity - 05/2009
Presentacion De Uxity - 05/2009
 
Posada
PosadaPosada
Posada
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 
Taller de seguridad informatica
Taller de seguridad informaticaTaller de seguridad informatica
Taller de seguridad informatica
 

Más de Miguel Angel Teheran Garcia

Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsPruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsMiguel Angel Teheran Garcia
 
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...Miguel Angel Teheran Garcia
 
DevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxDevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxMiguel Angel Teheran Garcia
 
RoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerRoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerMiguel Angel Teheran Garcia
 
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMiguel Angel Teheran Garcia
 
Building Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorBuilding Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorMiguel Angel Teheran Garcia
 

Más de Miguel Angel Teheran Garcia (20)

Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud FunctionsPruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
Pruebas Automatizadas con PlayWright sobre nuestras Google Cloud Functions
 
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
PlayWright, Cypress, Selenium Cual es la mejor opción para desarrolladores Ja...
 
Introduction to Blazor Hybrid
Introduction to Blazor HybridIntroduction to Blazor Hybrid
Introduction to Blazor Hybrid
 
La historia de api-colombia
La historia de api-colombiaLa historia de api-colombia
La historia de api-colombia
 
DevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptxDevFest 2022 - El Arte de escribir sobre programacion.pptx
DevFest 2022 - El Arte de escribir sobre programacion.pptx
 
RoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocerRoadMap y herramientas de Azure DevOps que debes conocer
RoadMap y herramientas de Azure DevOps que debes conocer
 
Taller de TDD con .NET y xUnit
Taller de TDD con .NET y xUnitTaller de TDD con .NET y xUnit
Taller de TDD con .NET y xUnit
 
Introduction to OpenTelemetry in .NET
Introduction to OpenTelemetry in .NETIntroduction to OpenTelemetry in .NET
Introduction to OpenTelemetry in .NET
 
PRISM con MAUI
PRISM con MAUIPRISM con MAUI
PRISM con MAUI
 
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de PlataformaMAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
MAUIConf - Adios Net Maui Essentials Bienvenida Integración de Plataforma
 
Servicios Nativos MAUI
Servicios Nativos MAUIServicios Nativos MAUI
Servicios Nativos MAUI
 
Aplicaciones para MacOS con .NET MAUI
Aplicaciones para MacOS con .NET MAUIAplicaciones para MacOS con .NET MAUI
Aplicaciones para MacOS con .NET MAUI
 
Primero pasos con Visual Studio for MAC
Primero pasos con Visual Studio for MACPrimero pasos con Visual Studio for MAC
Primero pasos con Visual Studio for MAC
 
Aplicaciones con web con Blazor + MudBlazor
Aplicaciones con web con Blazor + MudBlazorAplicaciones con web con Blazor + MudBlazor
Aplicaciones con web con Blazor + MudBlazor
 
Building Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazorBuilding Web Applications with Blazor and MudBlazor
Building Web Applications with Blazor and MudBlazor
 
Tips para una entrevista Tech Exitosa
Tips para una entrevista Tech ExitosaTips para una entrevista Tech Exitosa
Tips para una entrevista Tech Exitosa
 
Metaverso y Microsoft Mesh
Metaverso y Microsoft MeshMetaverso y Microsoft Mesh
Metaverso y Microsoft Mesh
 
Mejoras en Blazor con .NET 6
Mejoras en Blazor con .NET 6Mejoras en Blazor con .NET 6
Mejoras en Blazor con .NET 6
 
Apis with dotnet postgreSQL and Apsaradb
Apis with dotnet postgreSQL and ApsaradbApis with dotnet postgreSQL and Apsaradb
Apis with dotnet postgreSQL and Apsaradb
 
Microservices with Minimal APi and .NET 6
Microservices with Minimal APi and .NET 6Microservices with Minimal APi and .NET 6
Microservices with Minimal APi and .NET 6
 

Último

Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 

Último (7)

Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 

Offline First Apps with MAUI - Building disconnected apps in a connected world

  • 1. Offline First Apps with MAUI Robinson Moscoso – rmoscosp / SENIOR DEVELOPER
  • 2. Contenido Aplicaciones desconectadas en un mundo conectado El usuario siempre debe saber cuando esta conectado El cielo esta despejado ¿dónde guardo la información? ¿Quién fue primero, El huevo o la gallina? Pero igual necesito conexión Ahora lo que todos quieren
  • 3. Aplicaciones desconectadas en un mundo conectado Media global 59.5% Sudamérica 72.5% Centroamérica 67% Penetración de Internet * * Información tomada de: https://es.statista.com/estadisticas/541451/penetracion-mundial-de-internet-por-region-del-mundo/
  • 4. El usuario siempre debe saber cuando esta conectado Sin conexión Sincronizo si hay red Botón de sincronizar
  • 5. MUAI Network Status • MAUI usa IConnectivity para: • Identificar si tiene acceso a internet • Identificar los tipos de conexión (Bluetooth, móvil o WiFi) • Evento para supervisar los cambios en el estado de conexión • El espacio de nombre es: Microsoft.Maui.Networking Internet Acceso a Internet y local. ConstrainedInternet Acceso limitado a Internet Local solo acceso a la red local None no hay conectividad disponible Unknown No se puede determinar la conectividad a Internet
  • 6. El cielo esta despejado ¿dónde guardo la información? • Pequeñas piezas de datos • Key/Value Preferences.Set(“tableRows", 15); var savedPreference = Preferences.Get("tableRows", 10); • Guardar archivos sueltos en diferentes formatos (XML, birary, text files) • Estructura de directorios – sandbox (en IOS usa Library) string path = FileSystem.AppDataDirectory; • Datos relacionales de la aplicación • Archivo de base de datos SQLite => AppDataDirectory • Class for models using SQLite; ... string filename = ... SQLiteConnection conn = new SQLiteConnection(filename);
  • 7. Backend ¿Quién fue primero, el huevo o la gallina? • Código y data deben estar en el dispositivo • Código en apps no es problema, va con la app (en web no) • Data en base de datos • Resolución de conflictos Dispositivo 2 BD Aplicación Dispositivo 1 Aplicación Api BD BD
  • 8. Resolución de conflictos • Inserción • Si un registro es insertado en D1 y uno en D2, en el Backend habrán dos registros nuevos (el registro se debe crear con un id y replicarlo luego en D1 y D2 para posibles actualizaciones) • Actualización • Un mismo registro es actualizado en D1 y en D2, para la actualización se debe registrar una marca timestamp, el último registro actualizado prevalece sobre el primero, en el backend se guarda la marca del timestamp para determinar cual fue el ultimo actualizado • Eliminación • Un registro es eliminado en D1 y es editado en D2, al actualizar D1 en el backend el registro no se elimina físicamente, se hace un marcado de eliminación, al sincronizar D2 se verifica la marca de fecha y se determina si el registro continúa marcado como eliminado o se revive con la información de D2.
  • 9. Pero igual necesito conexión Instalación Autenticación Búsqueda Adjuntar archivos Sincronizar (segmentar)
  • 10. LINKS IMPORTANTES MAUI Documentation https://docs.microsoft.com/en-us/dotnet/maui/ Store local data with SQLite in a .NET MAUI app https://docs.microsoft.com/es-es/learn/modules/store-local-data/ MAUI Connectivity https://docs.microsoft.com/es-es/dotnet/maui/platform-integration/communication/networking A Design Guide for Building Offline First Apps https://hasura.io/blog/design-guide-to-offline-first-apps/ Robinson Moscoso https://twitter.com/rmoscosp https://www.linkedin.com/in/robinson-moscoso-perez/
  • 11. Ahora, lo que todos quieren https://forms.gle/xrCJposRAyo2Ur Pi8 • Cursos de Udemy a nivel global (3) • Morral, Audífonos, Curso de Udemy (3)

Notas del editor

  1. Penetración de internet enero 2021
  2. https://docs.microsoft.com/es-es/dotnet/maui/platform-integration/communication/networking?tabs=ios