Bonjour à tous,
Dans le cadre d'une application en VB.NET (je suppose que la question s'applique également pour une utilisation C#), je cherche à remplacer l'utilisation des objets du langage du package System.DirectoryServices. Tout fonctionne très bien, malheureusement les temps d'exécution est vraiment trop important. Par exemple, une exécution de cette ligne sur un DirectoryEntry prend environ 30 ms (UserName est le nom d'utilisateur dans AD) :
Un second appel qui prend également environ 30 ms :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Searcher.Filter = "(SAMAccountName=" & UserName & ")" Try Return Searcher.FindOne.GetDirectoryEntry Catch ex As Exception Return Nothing End Try
Une autre application de chez nous, écrite en Java, traite les comptes AD avec un temps d'exécution maximal cumulé pour l'appel et le traitement de maximum 20 ms. En comparaison, notre traitement avec ces objets en .NET est entre 200 et 300 ms à chaque appel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 entry_property = entry.Properties.Item("memberOf")
Ma question donc : est-il possible, et si oui comment, de récupérer les informations d'un compte AD autrement que par la librairie DirectoryService ? La recherche Google m'a pas été très utile, la totalité des liens que j'ai trouvé montrent des exemples très similaires à notre utilisation, 100% utilisant DirectoryServices.
J'ai l'impression que ces objets très complexes du langage procurent une simplicité de programmation au détriment de la performance. Nous avons déjà changés pour une bonne partie nos DataSets pour des Hashtables de Hashtables avec des gains de performance gigantesque (la syntaxe en était d'ailleurs pas beaucoup moins lisibles dans notre implémentation).
Merci d'avance si vous avez des conseils pour cette optimisation (remplacement de DirectoryServices par autre chose ou conseils d'optimisation de la librairie elle-même).
Salutations !
Partager