Condividi tramite


Linee guida per le applicazioni di servizio dei nomi

Quando si sviluppa l'applicazione distribuita, è necessario fornire agli utenti dell'applicazione un metodo per specificare il nome in cui possono registrare l'applicazione nel database del servizio dei nomi. Questo metodo può essere costituito da un file di dati, un input della riga di comando o una finestra di dialogo.

Sebbene l'architettura del servizio dei nomi RPC supporti vari metodi per organizzare le voci del server di un'applicazione, è ottimizzata per le ricerche. Di conseguenza, gli aggiornamenti frequenti possono ostacolare le prestazioni del servizio dei nomi e dell'applicazione. Per evitare di esportare informazioni inutilmente, scegliere una progettazione che consenta al server di determinare se le informazioni si trovano nel database del servizio dei nomi. Inoltre, ogni istanza del server deve essere esportata nel proprio nome di voce. In caso contrario, sarà difficile per un'istanza modificare le sequenze di protocolli o gli UUID dell'oggetto supportati senza disturbare le informazioni di un'altra istanza.

Il metodo seguente evita queste insidie e offre buone prestazioni, indipendentemente dal nome usato dalla rete.

Per iniziare, progettare l'applicazione in modo che la prima volta che viene avviata una determinata istanza del server, seleziona un nome di voce del server univoco e salva questo nome nel Registro di sistema insieme alle altre informazioni di configurazione dell'applicazione. Esportare quindi gli handle di associazione e gli UUID dell'oggetto, se presenti, nella voce del servizio dei nomi.

Le chiamate successive dell'istanza del server devono verificare che la voce del servizio dei nomi sia presente e contenga il set corretto di UUID oggetto e handle di associazione. Una voce mancante può indicare che un amministratore l'ha rimossa o che un'interruzione dell'alimentazione ha causato la perdita delle informazioni sul servizio dei nomi. È importante verificare che gli handle di associazione nella voce siano corretti; se un amministratore aggiunge il supporto TCP/IP a un computer, ad esempio, i server RPC saranno in ascolto su tale sequenza di protocollo quando chiamano RpcServerUseAllProtseqs. Tuttavia, se il server non aggiorna la voce del servizio dei nomi, i client non saranno informati che TCP è supportato.

Quando il client viene importato, deve specificare NULL come nome della voce. Se si specifica NULL, le funzioni della libreria RPC Microsoft cercano l'interfaccia in tutte le voci del servizio dei nomi nel dominio o nel gruppo di lavoro del computer client, individuando quindi le informazioni per ogni istanza.

Se si usano gli UUID oggetto per rappresentare oggetti noti, ad esempio stampanti, è possibile utilizzare una variante di questo metodo. Anziché esportare associazioni in una voce, progettare l'applicazione in modo che ogni istanza crei una voce per ogni oggetto supportato, ad esempio "/.:/printers/Laser1" e "/.:/printers/Laser2". Quindi, fare in modo che il server esportare i relativi handle di associazione in ogni voce del server, insieme all'UUID dell'oggetto pertinente a tale voce.

In questo caso, un client può cercare una risorsa in base al nome importando dalla voce del server pertinente; non richiede l'UUID dell'oggetto della risorsa. Se ha l'UUID della risorsa ma non il nome, può importare dalla voce null.