Partilhar via


Identificadores de contexto

Às vezes, os aplicativos distribuídos exigem que o programa do servidor mantenha as informações de status entre as chamadas do cliente. Os programas de servidor que atendem mais de um cliente por vez devem manter as informações de estado de cada cliente. Como o cliente e o servidor usam espaços de endereço diferentes em computadores diferentes e não necessariamente confiam um no outro, as abordagens comuns de compartilhamento de dados geralmente não funcionam. Por exemplo, o cliente e o servidor não conseguem manter informações de status em sua sessão remota em variáveis globais porque não compartilham o mesmo espaço de endereçamento global. É difícil manter as informações em um arquivo compartilhado porque eles são executados em computadores diferentes. Uma abordagem simplista pode ser enviar todo o estado para o cliente e fazer com que o cliente o devolva na próxima chamada, mas essa abordagem tem falhas: o servidor não confia necessariamente no cliente para retornar o estado correto, e o estado pode estar implicitamente vinculado a algum outro estado no servidor, como identificadores de arquivo ou soquetes abertos.

O Microsoft RPC fornece um mecanismo poderoso e seguro chamado identificadores de contexto para manter o estado associado a um determinado cliente em um servidor. As informações de estado são chamadas de contexto do servidor. Os clientes podem obter um identificador de contexto para identificar o contexto do servidor para suas sessões RPC individuais.

Como exemplo, cada cliente em um aplicativo distribuído pode fazer com que o programa de servidor crie e atualize um arquivo de dados para sua sessão RPC. O servidor pode usar seu identificador de arquivo para o arquivo de dados de cada cliente como o identificador de contexto. Cada vez que um cliente solicita operações no arquivo de dados que o servidor cria para ele, o cliente passa o identificador de contexto para o servidor. Na verdade, o cliente não obtém o identificador de arquivo em si; ele obtém um token opaco que o tempo de execução RPC do servidor pode associar exclusivamente ao identificador de arquivo. Como o identificador de contexto é realmente um identificador de arquivo, o identificador de contexto só faz sentido no espaço de endereçamento do servidor. No entanto, o programa cliente pode usar o identificador de contexto para informar ao servidor em qual arquivo executar atualizações.

Outros dados também podem ser identificadores de contexto. Por exemplo, um cliente e um servidor podem usar um número de registro de um registro de banco de dados como um identificador de arquivo. Se o cliente precisasse executar várias atualizações em um registro específico, ele poderia obter o número do registro como um identificador de contexto. Ele passaria o número de registro para o servidor cada vez que invocasse um procedimento remoto para atualizar o registro do banco de dados.

Na maioria das vezes, um identificador de contexto aponta para um bloco de memória no servidor onde o servidor mantém várias informações de gerenciamento.

Esta seção apresenta informações sobre como definir e usar identificadores de contexto. A discussão é apresentada nos seguintes tópicos: