Récupération de jeux de résultats volumineux
Lorsqu’il est possible que le jeu de résultats qui sera retourné contienne plus de 1 000 éléments, vous devez utiliser une recherche paginée. Les recherches d’Active Directory effectuées sans pagination sont limitées au retour d’un maximum des 1 000 premiers enregistrements. Avec une recherche paginée, le jeu de résultats est présenté sous forme de pages individuelles, chacune contenant un nombre prédéterminé d’entrées de résultats. Avec ce type de recherche, de nouvelles pages d’entrées de résultats sont retournées jusqu’à ce que la fin du jeu de résultats soit atteinte.
Par défaut, le serveur qui répond à une demande de requête calcule complètement un jeu de résultats avant de retourner des données. Dans un jeu de résultats volumineux, cela nécessite de la mémoire du serveur, car le jeu de résultats est acquis, et de la bande passante réseau lorsque le résultat volumineux est retourné. La définition d’une taille de page permet au serveur d’envoyer les données dans les pages au fur et à mesure que les pages sont générées. Le client met ensuite en cache ces données et fournit un curseur au code au niveau de l’application. La pagination est définie en définissant le nombre de lignes calculées par le serveur avant que les données ne soient retournées au client sur le réseau.
La recherche paginée offre des avantages au client et au serveur. Par exemple, le client peut être plus réactif lors de la présentation des résultats aux utilisateurs finaux. Cela est particulièrement pertinent pour les outils d’interface utilisateur graphique qui peuvent afficher des données alors qu’un autre thread reçoit simultanément davantage de données du serveur.
Lorsque vous configurez votre requête, si vous spécifiez un ordre de tri pour votre jeu de résultats, le serveur doit calculer complètement le jeu de résultats avant de retourner les données au client, ce qui a un impact sur le temps de réponse de la requête.
Côté serveur, la recherche paginée rend l’opération évolutive. Par exemple, si une centaine de clients émettent des demandes de recherche simultanément et que, en moyenne, chaque client est retourné deux cents objets, si la taille de page n’est pas spécifiée, le serveur doit avoir suffisamment de mémoire pour contenir le jeu de résultats complet de 20 000 entrées. Sinon, si chaque client a spécifié une taille de page de dix objets, les besoins en mémoire sur le serveur seraient réduits d’un facteur de 20.
Notes
Tous les services d’annuaire ne prennent pas en charge les recherches paginées. Active Directory implémente une architecture de taille de page.
De nombreux serveurs d’annuaires spécifient une limite administrative pour le nombre maximal d’objets qu’ils peuvent retourner si un client ne spécifie pas la taille de page. Lorsque la limite d’administration est atteinte, ADSI génère l’erreur win32 ERROR_DS_ADMIN_LIMIT_EXCEEDED .
Côté client, une recherche paginée permet à un client d’arrêter l’opération pendant qu’elle est toujours en cours. En revanche, dans une recherche non paginée, le client est bloqué jusqu’à ce que les données soient entièrement retournées ou qu’une erreur se produise. Cela peut avoir un impact sur les performances du réseau si le jeu de résultats s’avère plus volumineux et prend plus de temps que prévu.
Pour le compte du client, ADSI gère la taille de la page de manière transparente. Le client n’a pas besoin de compter le nombre d’objets en cours. ADSI encapsule l’interaction serveur pour le client. Du point de vue du client, la recherche renvoie un jeu de résultats complet.
Pour plus d’informations sur l’utilisation de l’option de délai d’attente de recherche avec une interface de recherche spécifique, consultez :
Une recherche paginée est transparente pour votre application, car ADSI continue automatiquement à récupérer des pages de résultats supplémentaires jusqu’à ce qu’elle atteigne la fin du jeu de résultats ou la fin de la limite de temps que vous avez définie. Lorsque vous utilisez une recherche paginée, la limite de taille ne remplace pas la taille de la page. La limite de taille ne peut être utilisée que lorsque vous récupérez un jeu de résultats contenant moins de 1 000 entrées.