Métodos de simultaneidade

Os recursos de Microsoft AppFabric 1.1 para Cache do Windows Server permitem o uso de modelos de simultaneidade otimistas e pessimistas. As seções a seguir discutem como os métodos do cliente de cache se alinham a esses modelos. Para obter mais informações sobre simultaneidade, consulte Modelos de simultaneidade (Cache do AppFabric 1.1).

Modelo de simultaneidade otimista

No modelo de simultaneidade otimista, faça a atualização para que os objetos de cache não usem bloqueios. Em vez disso, o cliente de cache primeiro lê a versão do objeto para que ela seja atualizada e envia a informação da versão junto com o objeto atualizado. O sistema somente atualizará o objeto se a versão enviada corresponder à versão atual do objeto. Todas as atualizações de um objeto alteram o número da sua versão. Isso evita que uma atualização substitua as alterações de outra pessoa.

Método Descrição

Get

Não usa bloqueios por design; o Obter sempre terá êxito se o item existir. Se o objeto estiver sendo atualizado, o método Obter não esperará e somente a versão atual do objeto retornará.

GetCacheItem

Retorna todos os objetos de DataCacheItem. Além dos objetos armazenados em cache e das outras informações, como marcas, as informações da versão sobre os objetos também retornarão.

GetIfNewer

Podem ser usadas para verificar se o objeto armazenado em cache foi alterado na fonte de dados. Para diminuir o tráfico de rede, o objeto armazenado em cache retornará somente se uma nova versão estiver disponível.

Add

Não há nenhuma sobrecarga relacionada à simultaneidade otimista. Adicionar tem êxito ou falha.

Put

Dá suporte à simultaneidade otimista, obtendo informações da versão como um parâmetro opcional; Colocar somente terá êxito se o objeto a ser substituído for da mesma versão.

Remove

Dá suporte à simultaneidade otimista, obtendo informações da versão como um parâmetro opcional; Remover somente terá êxito se o objeto a ser excluído for da mesma versão.

Modelo de simultaneidade pessimista

No modelo de simultaneidade pessimista, o cliente bloqueia explicitamente os objetos para que eles não realizem operações. As outras operações que solicitam bloqueios também serão rejeitadas (o sistema não bloqueia solicitações) até que os bloqueios sejam liberados. Quando os objetos estão bloqueados, uma alça de bloqueio retorna (como um parâmetro de saída). A alça de bloqueio é necessária para desbloquear o objeto. Caso o cliente falhe antes de liberar o objeto bloqueado, tempos limites são fornecidos para liberar os bloqueios. Os objetos bloqueados nunca expiram, mas eles poderão expirar imediatamente após o desbloqueio se ultrapassarem a data de vencimento.

Dica

As operações de extensão de transações não têm suporte. O aplicativo que utiliza cache é responsável por determinar a ordem dos bloqueios e detectar deadlocks, se houver.

Aviso

Os objetos bloqueados no cache ainda podem ser substituídos por qualquer cliente de cache com o método Colocar. Os aplicativos habilitados por cache são responsáveis pela utilização consistente de PutAndUnlock para itens que usam o modelo de simultaneidade pessimista.

A tabela a seguir mostra os métodos que podem ser usados para bloquear ou desbloquear um objeto.

Método Descrição

GetAndLock

Retorna e bloqueia o objeto armazenado em cache (se estiver presente). As outras chamadas do método GetAndLock no mesmo objeto falharão enquanto o bloqueio estiver válido. As chamadas regulares do método Obter não são bloqueadas e sempre acessam a versão mais recente do objeto armazenado em cache.

PutAndUnlock

Atualiza o objeto bloqueado e libera o bloqueio. A alça de bloqueio obtida do GetAndLock é um parâmetro necessário e precisa corresponder à alça de bloqueio do objeto bloqueado para ter êxito.

Unlock

Desbloqueia explicitamente um objeto armazenado em cache, fornecido para que o parâmetro da alça de bloqueio corresponda à do objeto bloqueado. Desbloquear também dá suporte à extensao da expiração do item atual para ajudar a evitar que ele expire assim que for desbloqueado (se o seu desbloqueio ultrapassar a data de vencimento).

Consulte também

Conceitos

Visão geral de classes
Métodos básicos de cache
Métodos baseados em marca
Métodos de configuração
Uso de métodos básicos de cache
Conceitos de cache do AppFabric (Cache do AppFabric 1.1)

  2012-03-05