Instructions relatives à l’application de service name
Lorsque vous développez votre application distribuée, vous devez fournir aux utilisateurs de l’application une méthode pour spécifier le nom sous lequel ils peuvent inscrire l’application dans la base de données du service de noms. Cette méthode peut se composer d’un fichier de données, d’une entrée de ligne de commande ou d’une boîte de dialogue.
Bien que l’architecture du service de nom RPC prenne en charge différentes méthodes pour organiser les entrées de serveur d’une application, elle est optimisée pour les recherches. Par conséquent, les mises à jour fréquentes peuvent entraver les performances du service de nom et de l’application. Pour éviter d’exporter inutilement des informations, choisissez une conception qui permet au serveur de déterminer si ses informations se situent dans la base de données du service de noms. En outre, chaque instance de serveur doit exporter vers son propre nom d’entrée. Sinon, il sera difficile pour une instance de modifier ses UUIDs ou séquences de protocole prises en charge sans déranger les informations d’une autre instance.
La méthode suivante évite ces pièges et offre de bonnes performances, quel que soit le service de nom que votre réseau utilise.
Pour commencer, concevez votre application afin que la première fois qu’une instance de serveur donnée démarre, elle sélectionne un nom d’entrée de serveur unique et enregistre ce nom dans le Registre, ainsi que les autres informations de configuration de l’application. Ensuite, exportez ses handles de liaison et les UUID d’objet, le cas échéant, vers son entrée de service de nom.
Les appels suivants de l’instance de serveur doivent vérifier que l’entrée de service de nom est présente et contient le jeu correct de handles d’objet et de liaison. Une entrée manquante peut signifier qu’un administrateur l’a supprimé ou qu’une panne de courant a provoqué la perte des informations du service de nom. Il est important de vérifier que les handles de liaison dans l’entrée sont corrects ; si un administrateur ajoute la prise en charge TCP/IP à un ordinateur, par exemple, les serveurs RPC écoutent sur cette séquence de protocole lorsqu’ils appellent RpcServerUseAllProtseqs. Toutefois, si le serveur ne met pas à jour l’entrée de service de nom, les clients ne sont pas informés que TCP est pris en charge.
Lorsque le client importe, il doit spécifier NULL comme nom d’entrée. Si vous spécifiez NULL, les fonctions de bibliothèque RPC Microsoft recherchent l’interface dans toutes les entrées de service de nom dans le domaine ou le groupe de travail de l’ordinateur client, ce qui permet de trouver les informations pour chaque instance.
Si vous utilisez des UUID d’objet pour représenter des objets connus tels que des imprimantes, vous pouvez utiliser une variante de cette méthode. Au lieu d’exporter des liaisons vers une entrée, concevez votre application afin que chaque instance crée une entrée pour chaque objet pris en charge, par exemple « /. :/printers/Laser1 » et « /. :/printers/Laser2 ». Ensuite, le serveur exporte ses handles de liaison vers chaque entrée de serveur, ainsi que l’UUID d’objet correspondant à cette entrée.
Dans ce cas, un client peut rechercher une ressource par nom en important à partir de l’entrée de serveur appropriée ; elle ne nécessite pas l’UUID d’objet de la ressource. S’il a l’UUID de ressource, mais pas le nom, il peut importer à partir de l’entrée null.