Sincronización de recursos que se ha movido fuera del rango del filtro de solicitudes

7

Tengo una API RESTful con los clientes correspondientes.

Si la solicitud de un cliente obtiene un conjunto de recursos (Eventos) basados en un filtro, diga los eventos que tienen lugar entre el 2015-04-13 - 2015-04-19. Si un evento que se ha sincronizado previamente con el cliente cambia la hora en el servidor para que se encuentre fuera del rango de tiempo anterior, la siguiente solicitud no incluirá el evento actualizado y el cliente no sabrá del cambio hasta que se realice. Una solicitud que incluye el tiempo actualizado.

Las soluciones en las que estoy pensando son

  1. Agregar una administración de versión simplista mediante la creación de nuevos eventos con el tiempo actualizado que se refiere al evento original cada vez que se actualiza un evento. Cuando se realiza una solicitud, el servidor tendría que devolver la última versión de todos los eventos dentro del rango de tiempo.
  2. Agregar un nuevo recurso (por ejemplo, EventUpdate) que solo rastrea los cambios de tiempo de un evento, dejando una especie de "lápida" donde solía estar el evento. Cada vez que se realiza una solicitud, las Actualizaciones de eventos deben verificarse para ver si hubo un evento en el intervalo de tiempo solicitado; de ser así, estos Eventos también deben incluirse en la respuesta.

En este momento me estoy inclinando hacia la solución 2. ya que parece menos exagerado por lo que necesito en este momento.

¿Hay alguna forma estándar de resolver este tipo de problema de sincronización?

    
pregunta Erik Johansson 16.04.2015 - 09:30

1 respuesta

1
  

¿Hay alguna forma estándar de resolver este tipo de sincronización?   problema?

No lo creo, pero puedo proponer un rediseño del sistema.

Haz dos métodos API en lugar de uno:

  1. Método que devuelve los identificadores de evento para los eventos programados actualmente para el intervalo de fecha especificado
  2. El método devuelve los detalles del evento junto con updated_at timestamp para los ID de un evento dado

Si un cliente desea verificar o volver a verificar el rango de tiempo especificado, utiliza el método # 1. Si quiere obtener detalles del evento, usa el método # 2. El # 2 devolverá un evento por id, incluso si ha cambiado su fecha.

Para minimizar el tráfico para el método # 2, puedes usar el esquema utilizado por el protocolo HTTP (encabezado If-Modified-Since).

Para hacer una sincronización en un cliente, puede hacer una a una llamadas API primero para volver a verificar el intervalo especificado y luego actualizar todos los eventos (aquellos con identificadores de las llamadas anteriores y aquellos que fueron devueltos por el método # 1 como nuevo).

¿Eso resuelve tu caso?

    
respondido por el Vladislav Rastrusny 18.04.2015 - 14:41

Lea otras preguntas en las etiquetas