Na quarta parte deste artigo apresentamos como podemos realizar o tratamento da concorrência com foco no Entity Framework fazendo o tratando a concorrência pela versão de linha.
Neste artigo vamos abordar alguns aspectos da concorrência pessimista.
O controle pessimista da concorrência
O controle pessimista da concorrência exige que você faça o bloqueio de registros no banco de dados antes de usá-los.
Quando você quer atualizar os dados e não quer correr risco algum de que outro usuário possa estar acessando o mesmo registro ao mesmo tempo você faz o bloqueio exclusivo e fisicamente do registro na base de dados.
Dessa forma nenhum outro usuário poderá acessar os dados bloqueados, quer seja para leitura ou atualização, dando assim a segurança de que somente você, que iniciou o bloqueio, tem acesso a eles.
Qualquer outro usuário somente terá acesso aos dados após a liberação do bloqueio.
Essa abordagem é conhecida como concorrência pessimista.
A grande vantagem dessa abordagem é que ela dá acesso exclusivo aos dados ao usuário que os bloqueou.
O problema da abordagem pessimista é que ela traz efeitos colaterais que afetam o desempenho e a usabilidade da aplicação.
A seguir listamos os principais problemas do controle pessimista da concorrência:
Diante deste quadro a abordagem da concorrência pessimista deve ser usada somente quando for realmente necessária, visto que os problemas causados por ela superam seus benefícios.
Geralmente a utilização da abordagem da concorrência otimista resolve a maioria dos problemas dos conflitos e deve ser a indicada para a grande maioria dos casos.
Mesmo assim, se você não tiver outra opção, saiba que mesmo o Entity Framework não suportando a concorrência pessimista diretamente, você ainda tem opções para implementá-la usando código customizado.
A seguir temos as duas técnicas mais comuns para realizar esta tarefa:
Uma outra opção seria a utilização de produtos de terceiros como o ORM Telerik OpenAccess.
No último artigo da série vamos concluir mostrando uma aplicação da concorrência otimista.
Gálatas 6:7 Não vos enganeis; Deus não se deixa escarnecer; pois tudo o que o homem semear, isso também ceifará.
Gálatas 6:8 Porque quem semeia na sua carne, da carne ceifará a corrupção; mas quem semeia no Espírito, do Espírito ceifará a vida eterna.
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB 2005 - Introdução a concorrência de dados - Macoratti.net
ADO .NET - Verificando a violação de concorrência - Macoratti.net
Arquitetura de dados desconectada e a concorrência - Macoratti.net