Partilhar via


Bloqueios oportunistas

Um bloqueio oportunista (também chamado de oplock) é um bloqueio colocado por um cliente em um arquivo que reside em um servidor. Na maioria dos casos, um cliente solicita um bloqueio oportunista para que possa armazenar dados em cache localmente, reduzindo assim o tráfego de rede e melhorando o tempo de resposta aparente. Bloqueios oportunistas são usados por redirecionadores de rede em clientes com servidores remotos, bem como por aplicativos cliente em servidores locais.

Observação

Os artigos sobre bloqueios oportunistas encontrados nesta seção pertencem principalmente a aplicativos cliente, embora algumas informações sejam fornecidas para redirecionadores de rede. Você pode encontrar mais informações de oplock para redirecionadores de rede nos artigos Oplocks do WDK do Windows.

Visão geral

Bloqueios oportunistas coordenam o cache de dados e a coerência entre clientes e servidores e entre vários clientes. Dados coerentes são os dados que são os mesmos em toda a rede. Em outras palavras, se os dados forem coerentes, os dados no servidor e todos os clientes serão sincronizados.

Bloqueios oportunistas não são comandos do cliente para o servidor. São solicitações do cliente para o servidor. Do ponto de vista do cliente, eles são oportunistas. Em outras palavras, o servidor concede esses bloqueios sempre que outros fatores possibilitam os bloqueios.

Quando um aplicativo local solicita acesso a um arquivo remoto, a implementação de bloqueios oportunistas é transparente para o aplicativo. O redirecionador de rede e o servidor envolvidos abrem e fecham os bloqueios oportunistas automaticamente. No entanto, bloqueios oportunistas também podem ser usados quando um aplicativo local solicita acesso a um arquivo local e o acesso por outros aplicativos e processos deve ser delegado para evitar a corrupção do arquivo. Nesse caso, o aplicativo local solicita diretamente um bloqueio oportunista do sistema de arquivos local e armazena o arquivo em cache localmente. Quando usado dessa forma, o bloqueio oportunista é efetivamente um semáforo gerenciado pelo servidor local e é usado principalmente para fins de coerência de dados no arquivo e notificação de acesso ao arquivo.

Antes de usar bloqueios oportunistas em seu aplicativo, você deve estar familiarizado com os modos de acesso e compartilhamento de arquivos descritos em Como criar e abrir arquivos.

O número máximo de bloqueios oportunistas simultâneos que você pode criar é limitado apenas pela quantidade de memória disponível.

Os aplicativos locais não devem tentar solicitar bloqueios oportunistas de servidores remotos. Um erro será retornado por DeviceIoControl se uma tentativa for feita.

Bloqueios oportunistas são de uso muito limitado para aplicativos. O único uso prático é testar um redirecionador de rede ou um manipulador de bloqueio oportunista do servidor. Normalmente, os sistemas de arquivos implementam suporte para bloqueios oportunistas. Os aplicativos geralmente deixam o gerenciamento de bloqueio oportunista para os drivers do sistema de arquivos. Qualquer pessoa que implemente um sistema de arquivos deve usar o Kit IFS (Sistema de Arquivos Instalável). Qualquer pessoa que desenvolva um driver de dispositivo diferente de um sistema de arquivos instalável deve usar o WDK (Kit de Driver do Windows).

Bloqueios oportunistas e operações associadas são um superconjunto da parte de bloqueio oportunista do protocolo CIFS (Common Internet File System), um Rascunho da Internet. O protocolo CIFS é uma versão aprimorada do protocolo SMB. Para obter mais informações, consulte Protocolo SMB da Microsoft e Visão geral do protocolo CIFS. O Rascunho da Internet do CIFS identifica explicitamente que uma implementação de CIFS pode implementar bloqueios oportunistas recusando-se a concedê-los.

Os tópicos a seguir identificam bloqueios oportunistas.

Nesta seção

Tópico Descrição
Cache local O cache local de dados é uma técnica usada para acelerar o acesso da rede a arquivos de dados. Ele envolve armazenar dados em cache em clientes e não em servidores quando possível.
Coerência de dados Se os dados forem coerentes, os dados no servidor e todos os clientes serão sincronizados. Um tipo de sistema de software que fornece coerência de dados é um RCS (sistema de controle de revisão).
Como solicitar um bloqueio oportunista Bloqueios oportunistas são solicitados abrindo primeiro um arquivo com permissões e sinalizadores apropriados para o aplicativo abrir o arquivo. Todos os arquivos para os quais bloqueios oportunistas serão solicitados devem ser abertos para a operação sobreposta (assíncrona).
Resposta do servidor a solicitações abertas em arquivos bloqueados Você pode minimizar o impacto que seu aplicativo tem em outros clientes e o impacto que eles têm em seu aplicativo concedendo o máximo de compartilhamento possível, solicitando o nível mínimo de acesso necessário e usando o bloqueio oportunista menos intrusivo adequado para seu aplicativo.
Tipos de bloqueios oportunistas Descreve os bloqueios oportunistas de nível 1, nível 2, lote e filtro.
Quebrar bloqueios oportunistas Quebrar um bloqueio oportunista é o processo de degradação do bloqueio que um cliente tem em um arquivo para que outro cliente possa abrir o arquivo, com ou sem um bloqueio oportunista.
Exemplos de bloqueios oportunistas Diagramas de exibições de tráfego de rede para um bloqueio oportunista de nível 1, um bloqueio oportunista em lote e um bloqueio oportunista de filtro.
Operações de bloqueio oportunistas Se um aplicativo solicitar bloqueios oportunistas, todos os arquivos para os quais ele solicita bloqueios deverão ser abertos para entrada e saída sobrepostas (assíncronas) usando a função CreateFile com o sinalizador FILE\_FLAG\_OVERLAPPED.

Para obter informações adicionais sobre bloqueios oportunistas, consulte o documento Rascunho da Internet do CIFS. Quaisquer discrepâncias entre este tópico e o Rascunho de Internet do CIFS atual devem ser resolvidas em favor do Rascunho da Internet do CIFS.

Confira também

Guia de gerenciamento de protocolos e acesso a arquivos do NetApp

Oplocks (WDK)