Pergunta

Eu tenho uma pergunta sobre o bloqueio. Isso não tem que ser apenas cerca de bloqueio de registro, mas de qualquer maneira.

Vamos dizer que eu estou escrevendo um web CMS acessíveis. Eu estou lutando com algumas idéias.

Eu poderia, no momento em que um usuário abre um artigo para a edição, bandeira do artigo como sendo 'em uso'. até aí tudo bem.

mas quando eu removo a bandeira? quando o usuário salva o artigo? mas o que se o usuário não se sente como escrever mais e decide fechar seu navegador e ir para a cama?

um mecanismo time-out vem à mente, mas quanto tempo leva para escrever um artigo? 10 minutos muito curto, 30 minutos por muito tempo ..

Talvez eu estou over-complicando isso. Eu gostaria de ouvir seus pensamentos sobre este assunto.

Foi útil?

Solução

Por que não usar timestamps? Na verdade, não se preocupar com bloqueio nada, apenas reagir ao evento onde o registro (artigo) mudou.

Basicamente, antes de salvar o artigo, verifique se a sua versão (timestamp) é o mesmo que o que está no disco. Se mesmo, então você ainda tem mais recente copiar assim escrevê-lo, se não, então ... oferta para merge, oferecer para salvar como novo, descartá-lo -. A sua aplicação específica

Outras dicas

O meu voto é para otimista bloqueio sempre que possível.

Em um lugar, onde eu ter implementado fechaduras real, eu tinha uma página de administração para remover bloqueios. Houve também um serviço em execução no servidor para desbloquear qualquer bloqueio que não têm uma sessão activa correspondente ..

Use rowversion para MSSQL 2005 e para cima, timestamp para MSSQL 2000 e abaixo. Use o campo xmin escondida para o PostgreSQL.

Que todos os outros usuários abrir o registro. Junto com salvar o registro, tag que salvou-lo, e com a ajuda de rowversion, em catch (DBConcurrencyException) re-lançar um erro que indicam a outros usuários que salvaram o registro antes que eles fazem, e pedir-lhes para re-abrir o registro para ver as alterações feitas pelo usuário que salvou o primeiro registro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top