Tengo una página web que muestra una gran cantidad de datos del servidor. La comunicación se realiza a través de ajax.
Cada vez que el usuario interactúa y cambia estos datos (digamos que el usuario A cambia el nombre de algo), le dice al servidor que realice la acción y el servidor devuelve los nuevos datos modificados.
Si el usuario B accede a la página al mismo tiempo y crea un nuevo objeto de datos, se lo dirá nuevamente al servidor a través de ajax y el servidor regresará con el nuevo objeto para el usuario.
En la página de A tenemos los datos con un objeto renombrado. Y en la página de B tenemos los datos con un nuevo objeto. En el servidor, los datos tienen un objeto renombrado y un objeto nuevo.
¿Cuáles son mis opciones para mantener la página sincronizada con el servidor cuando varios usuarios la usan al mismo tiempo?
Más bien se evitan opciones como bloquear toda la página o volcar el estado completo al usuario en cada cambio.
Si ayuda, en este ejemplo específico la página web llama a un método web estático que ejecuta un procedimiento almacenado en la base de datos. El procedimiento almacenado devolverá cualquier dato que haya cambiado y no más. Luego, el método web estático reenvía la devolución del procedimiento almacenado al cliente.
Edición de recompensa:
¿Cómo se diseña una aplicación web multiusuario que usa Ajax para comunicarse con el servidor pero evita problemas de concurrencia?
Es decir, acceso simultáneo a la funcionalidad y a los datos de una base de datos sin riesgo de corrupción de datos o estado