Compartilhar via


Diretrizes de aplicativo de serviço de nome

Ao desenvolver seu aplicativo distribuído, você precisa fornecer aos usuários do aplicativo um método para especificar o nome no qual eles podem registrar o aplicativo no banco de dados do serviço de nome. Esse método pode consistir em um arquivo de dados, entrada de linha de comando ou caixa de diálogo.

Embora a arquitetura do serviço de nome RPC dê suporte a vários métodos para organizar entradas de servidor de um aplicativo, ela é otimizada para pesquisas. Como resultado, as atualizações frequentes podem dificultar o desempenho do serviço de nome e do aplicativo. Para evitar exportar informações desnecessariamente, escolha um design que permita ao servidor determinar se suas informações estão no banco de dados do serviço de nome. Além disso, cada instância de servidor deve exportar para seu próprio nome de entrada. Caso contrário, será difícil para uma instância alterar suas UUIDs de objeto com suporte ou sequências de protocolo sem perturbar as informações de outra instância.

O método a seguir evita essas armadilhas e fornece um bom desempenho, independentemente do serviço de nome que sua rede usa.

Para começar, projete seu aplicativo para que, na primeira vez em que uma determinada instância de servidor for iniciada, ele escolha um nome de entrada de servidor exclusivo e salve esse nome no registro junto com outras informações de configuração do aplicativo. Em seguida, exporte seus identificadores de associação e UUIDs de objeto, se houver, para sua entrada de serviço de nome.

As invocações subsequentes da instância do servidor devem verificar se a entrada do serviço de nome está presente e contém o conjunto correto de UUIDs de objeto e identificadores de associação. Uma entrada ausente pode significar que um administrador a removeu ou que uma interrupção de energia fez com que as informações do serviço de nome fossem perdidas. É importante verificar se os identificadores de associação na entrada estão corretos; se um administrador adicionar suporte de TCP/IP a um computador, por exemplo, os servidores RPC escutarão nessa sequência de protocolo quando chamarem RpcServerUseAllProtseqs. No entanto, se o servidor não atualizar a entrada do serviço de nome, os clientes não serão informados de que há suporte para TCP.

Quando o cliente importa, ele deve especificar NULL como o nome de entrada. Especificar NULL faz com que as funções da biblioteca do Microsoft RPC pesquisem a interface em todas as entradas de serviço de nome no domínio ou grupo de trabalho do computador cliente, encontrando assim as informações para cada instância.

Se você usar UUIDs de objeto para representar objetos conhecidos, como impressoras, poderá usar uma variação desse método. Em vez de exportar associações para uma entrada, projete seu aplicativo para que cada instância crie uma entrada para cada objeto com suporte, como "/.:/printers/Laser1" e "/.:/printers/Laser2". Em seguida, fazer com que o servidor exporte seus identificadores de associação para cada entrada de servidor, juntamente com o objeto UUID relevante para essa entrada.

Nesse caso, um cliente pode procurar um recurso pelo nome importando da entrada do servidor relevante; ele não requer a UUID do objeto do recurso. Se ele tiver a UUID do recurso, mas não o nome, ele poderá importar da entrada de nula.