Tenho uma página da web que mostra uma grande quantidade de dados do servidor. A comunicação é feita via ajax.
Cada vez que o usuário interage e altera esses dados (digamos que o usuário A renomeie algo), ele instrui o servidor a fazer a ação e o servidor retorna os novos dados alterados.
Se o usuário B acessar a página ao mesmo tempo e criar um novo objeto de dados, ele informará novamente ao servidor via ajax e o servidor retornará com o novo objeto para o usuário.
Na página de A, temos os dados com um objeto renomeado. E na página de B temos os dados com um novo objeto. No servidor, os dados têm um objeto renomeado e um novo objeto.
Quais são minhas opções para manter a página em sincronia com o servidor quando vários usuários a estão usando ao mesmo tempo?
Opções como bloquear a página inteira ou despejar todo o estado para o usuário a cada alteração são evitadas.
Se ajudar, neste exemplo específico, a página da web chama um método da web estático que executa um procedimento armazenado no banco de dados. O procedimento armazenado retornará todos os dados alterados e nada mais. O webmethod estático então encaminha o retorno do procedimento armazenado para o cliente.
Edição Bounty:
Como você projeta um aplicativo da web multiusuário que usa Ajax para se comunicar com o servidor, mas evita problemas de simultaneidade?
Ou seja, acesso simultâneo à funcionalidade e aos dados em um banco de dados sem nenhum risco de corrupção de dados ou estado