¿Cuál es la arquitectura correcta para sincronizar Q y A en una aplicación de Android desde un servidor remoto? ¿Cuáles son las mejores prácticas a su alrededor?

Estoy hablando de “sincronización” aquí. Puedes descubrir la lógica correcta para ti.

Cuando necesite mantener dos extremos sincronizados, debe mantener una “última marca de tiempo modificada” con cada registro en ambos extremos. También debe mantener una “última marca de tiempo sincronizada” en el lado del cliente.

Cuando está sincronizando, verifica todos los cambios que ocurrieron después de su valor de “última marca de tiempo sincronizada”. Cuando obtiene un conjunto de registros modificados, debe comparar cada uno de ellos con sus copias locales y aceptar el último. Si tiene el último registro, debe intimar el servidor y permitir que el servidor actualice sus datos.

(Y vea, esto es sobrescribir ciegamente una información existente con una nueva. Si desea manejar los conflictos, debe hacerlo manualmente, aún así la lógica sigue siendo la misma).

Por ejemplo, veamos este flujo:

– Antes de sincronizar –

El servidor tiene:
“Apple” (última modificación a las 10:00 a.m.)
“Naranja” (última modificación a las 10:20 am)
El cliente tiene:
“Albaricoque” (última modificación a las 10:15 am)
“Orangután” (última modificación a las 9:55 am)
[última sincronización: 9:45 am]

– La próxima sincronización comienza a las 10:30 a.m. –

El cliente le pregunta al servidor: “Dame todas las modificaciones que tuvieron lugar después de las 9:45 am

El servidor responde:
“Apple” modificado a las 10:00 a.m.
Además, “Orange” modificado a las 10:20 am.

El cliente piensa:
“Apricot” es lo último, significa que el servidor debe aceptar mi modificación.
“Orangután” es el más antiguo, significa que debería aceptar la modificación del servidor.

El cliente le dice al servidor: “¡Actualice ese registro de” Apple “con” Apricot “, que es el último valor!”.

El servidor responde: “Sí, lo actualizaré”.

– La sincronización terminó a las 10:31 am –

El servidor tiene:
“Albaricoque” (última modificación el 10:31 am)
“Naranja” (última modificación a las 10:20 am)
El cliente tiene:
“Albaricoque” (última modificación a las 10:15 am)
“Naranja” (última modificación a las 10:31 am)
[última sincronización: 10:31 am]

– En la próxima sincronización, –

El cliente le pregunta al servidor: “Dame todas las modificaciones que tuvieron lugar después de las 10:30 a.m.”

Eso es todo.